diff options
author | Ralf Baechle <ralf@linux-mips.org> | 1999-10-09 00:00:47 +0000 |
---|---|---|
committer | Ralf Baechle <ralf@linux-mips.org> | 1999-10-09 00:00:47 +0000 |
commit | d6434e1042f3b0a6dfe1b1f615af369486f9b1fa (patch) | |
tree | e2be02f33984c48ec019c654051d27964e42c441 /Documentation/filesystems | |
parent | 609d1e803baf519487233b765eb487f9ec227a18 (diff) |
Merge with 2.3.19.
Diffstat (limited to 'Documentation/filesystems')
-rw-r--r-- | Documentation/filesystems/00-INDEX | 2 | ||||
-rw-r--r-- | Documentation/filesystems/proc.txt | 1379 | ||||
-rw-r--r-- | Documentation/filesystems/udf.txt | 57 |
3 files changed, 1438 insertions, 0 deletions
diff --git a/Documentation/filesystems/00-INDEX b/Documentation/filesystems/00-INDEX index 4e3617e5a..b481c8a67 100644 --- a/Documentation/filesystems/00-INDEX +++ b/Documentation/filesystems/00-INDEX @@ -22,6 +22,8 @@ smbfs.txt - info on using filesystems with the SMB protocol (Windows 3.11 and NT) sysv-fs.txt - info on the SystemV/Coherent filesystem. +udf.txt + - info and mount options for the UDF filesystem. ufs.txt - info on the ufs filesystem. umsdos.txt diff --git a/Documentation/filesystems/proc.txt b/Documentation/filesystems/proc.txt new file mode 100644 index 000000000..d842f7ed6 --- /dev/null +++ b/Documentation/filesystems/proc.txt @@ -0,0 +1,1379 @@ + +----------------------------------------------------------------------- + + T H E /proc F I L E S Y S T E M + +----------------------------------------------------------------------- +/proc/sys Terrehon Bowden <terrehon@wpi.com> January 27 1999 + Bodo Bauer <bb@ricochet.net> +----------------------------------------------------------------------- +Version 1.1 Kernel version 2.2 +----------------------------------------------------------------------- +Contents + +1 Introduction/Credits + +1.1 Legal Issues + +2 The /proc file system + +2.1 Process specific subdirectories +2.2 Kernel data +2.3 IDE devices in /proc/ide +2.4 Networking info in /proc/net +2.5 SCSI info +2.6 Parallel port info in /proc/parport +2.7 TTY info in /proc/tty + +3 Reading and modifying kernel parameters + +3.1 /proc/sys/debug and /proc/sys/proc +3.2 /proc/fs - File system data +3.3 /proc/fs/binfmt_misc - Miscellaneous binary formats +3.4 /proc/sys/kernel - General kernel parameters +3.5 /proc/sys/vm - The virtual memory subsystem +3.6 /proc/sys/dev - Device specific parameters +3.7 /proc/sys/sunrpc - Remote procedure calls +3.8 /proc/sys/net - Networking stuff +3.9 /proc/sys/net/ipv4 - IPV4 settings=20 +3.10 Appletalk +3.11 IPX + +----------------------------------------------------------------------- + +1 Introduction/Credits + +This documentation is part of a soon to be released book published by +IDG Books on the SuSE Linux distribution. As there is no complete +documentation for the /proc file system and we've used many freely +available sources to write this chapter, it seems only fair to give +the work back to the Linux community. This work is based on the +2.1.132 and 2.2.0-pre-kernel versions. I'm afraid it's still far from +complete, but we hope it will be useful. As far as we know, it is the +first 'all-in-one' document about the /proc file system. It is +focused on the Intel x86 hardware, so if you are looking for PPC, ARM, +SPARC, APX, etc., features, you probably won't find what you are +looking for. It also only covers IPv4 networking, not IPv6 nor other +protocols - sorry. + +We'd like to thank Alan Cox, Rik van Riel, and Alexey Kuznetsov. We'd +also like to extend a special thank you to Andi Kleen for +documentation, which we relied on heavily to create this document, as +well as the additional information he provided. Thanks to everybody +else who contributed source or docs to the Linux kernel and helped +create a great piece of software... :) + +If you have any comments, corrections or additions, please don't +hesitate to contact Bodo Bauer at bb@ricochet.net. We'll be happy to +add them to this document. + +The latest version of this document is available online at +http://www.suse.com/~bb/Docs/proc.html in HTML, ASCII, and as +Postscript file. + +1.1 Legal Stuff + +We don't guarantee the correctness of this document, and if you come +to us complaining about how you screwed up your system because of +incorrect documentation, we won't feel responsible... + +----------------------------------------------------------------------- + +2 The /proc file system + +The proc file system acts as an interface to internal data structures +in the kernel. It can be used to obtain information about the system +and to change certain kernel parameters at runtime. It contains +(among other things) one subdirectory for each process running on the +system which is named after the process id (PID) of the process. The +link self points to the process reading the file system. + +2.1 Process specific subdirectories + +Each process subdirectory has the in table 1.1 listed entries. + + _________________________________________________ + cmdline Command line arguments + environ Values of environment variables + fd Directory, which contains all file descriptors + mem Memory held by this process + stat Process status + status Process status in human readable form + cwd Link to the current working directory + exe Link to the executable of this process + maps Memory maps + root Link to the root directory of this process + statm Process memory status information + _________________________________________________ + Table 1.1: Process specific entries in /proc + +For example, to get the status information of a process, all you have +to do is read the file /proc/PID/status: + +> cat /proc/self/status +Name: cat +State: R (running) +Pid: 5633 +PPid: 5609 +Uid: 501 501 501 501 +Gid: 100 100 100 100 +Groups: 100 16 +VmSize: 804 kB +VmLck: 0 kB +VmRSS: 344 kB +VmData: 68 kB +VmStk: 20 kB +VmExe: 12 kB +VmLib: 660 kB +SigPnd: 0000000000000000 +SigBlk: 0000000000000000 +SigIgn: 0000000000000000 +SigCgt: 0000000000000000 +CapInh: 00000000fffffeff +CapPrm: 0000000000000000 +CapEff: 0000000000000000 + +This shows you almost the same information as you would get if you +viewed it with the ps command. In fact, ps uses the proc file system +to obtain its information. + +The statm file contains more detailed information about the process +memory usage. It contains seven values with the following meanings: + +size total program size +resident size of in memory portions +shared number of the pages that are shared +trs number of pages that are 'code' +drs number of pages of data/stack +lrs number of pages of library +dt number of dirty pages + +The ratio text/data/library is approximate only by heuristics. + +2.2 Kernel data + +Similar to the process entries, these are files which give information +about the running kernel. The files used to obtain this information +are contained in /proc and are listed in table 1.2. Not all of these +will be present in your system. It depends on the kernel configuration +and the loaded modules, which files are there, and which are missing. + + ________________________________________________ + apm Advanced power management info + cmdline Kernel command line + cpuinfo Info about the CPU + devices Available devices (block and character) + dma Used DMS channels + filesystems Supported filesystems + interrupts Interrupt usage + ioports I/O port usage + kcore Kernel core image + kmsg Kernel messages + ksyms Kernel symbol table + loadavg Load average + locks Kernel locks + meminfo Memory info + misc Miscellaneous + modules List of loaded modules + mounts Mounted filesystems + partitions Table of partitions known to the system + rtc Real time clock + slabinfo Slab pool info + stat Overall statistics + swaps Swap space utilization + uptime System uptime + version Kernel version + ________________________________________________ + Table 1.2: Kernel info in /proc + +You can, for example, check which interrupts are currently in use and +what they are used for by looking in the file /proc/interrupts: + +> cat /proc/interrupts + CPU0 + 0: 8728810 XT-PIC timer + 1: 895 XT-PIC keyboard + 2: 0 XT-PIC cascade + 3: 531695 XT-PIC aha152x + 4: 2014133 XT-PIC serial + 5: 44401 XT-PIC pcnet_cs + 8: 2 XT-PIC rtc + 11: 8 XT-PIC i82365 + 12: 182918 XT-PIC PS/2 Mouse + 13: 1 XT-PIC fpu + 14: 1232265 XT-PIC ide0 + 15: 7 XT-PIC ide1 +NMI: 0 + +There three more important subdirectories in /proc: net, scsi and +sys. The general rule is that the contents, or even the existence of +these directories, depends on your kernel configuration. If SCSI is +not enabled, the directory scsi may not exist. The same is true with +the net, which is only there when networking support is present in the +running kernel. + +The slabinfo file gives information about memory usage on the slab +level. Linux uses slab pools for memory management above page level +in version 2.2. Commonly used objects have their own slab pool (like +network buffers, directory cache, etc.). + +2.3 IDE devices in /proc/ide + +This subdirectory contains information about all IDE devices that the +kernel is aware of. There is one subdirectory for each device +(i.e. hard disk) containing the following files: + + cache The cache + capacity Capacity of the medium + driver Driver and version + geometry Physical and logical geometry + identify Device identify block + media Media type + model Device identifier + settings Device setup + smart_thresholds IDE disk management thresholds + smart_values IDE disk management values + +2.4 Networking info in /proc/net + +This directory follows the usual pattern. Table 1.3 lists the files +and their meaning. + + ____________________________________________________ + arp Kernel ARP table + dev network devices with statistics + dev_mcast Lists the Layer2 multicast groups a + device is listening to (interface index, + label, number of references, number of + bound addresses). + dev_stat network device status + ip_fwchains Firewall chain linkage + ip_fwnames Firewall chains + ip_masq Directory containing the masquerading + tables. + ip_masquerade Major masquerading table + netstat Network statistics + raw Raw device statistics + route Kernel routing table + rpc Directory containing rpc info + rt_cache Routing cache + snmp SNMP data + sockstat Socket statistics + tcp TCP sockets + tr_rif Token ring RIF routing table + udp UDP sockets + unix UNIX domain sockets + wireless Wireless interface data (Wavelan etc) + igmp IP multicast addresses, which this host joined + psched Global packet scheduler parameters. + netlink List of PF_NETLINK sockets. + ip_mr_vifs List of multicast virtual interfaces. + ip_mr_cache List of multicast routing cache. + udp6 UDP sockets (IPv6) + tcp6 TCP sockets (IPv6) + raw6 Raw device statistics (IPv6) + igmp6 IP multicast addresses, which this host joineed (IPv6) + if_inet6 List of IPv6 interface addresses. + ipv6_route Kernel routing table for IPv6 + rt6_stats global IPv6 routing tables statistics. + sockstat6 Socket statistics (IPv6) + snmp6 Snmp data (IPv6) + ____________________________________________________ + Table 1.3: Network info in /proc/net + +You can use this information to see which network devices are +available in your system and how much traffic was routed over those +devices: + +> cat /proc/net/dev +Inter-|Receive |[... + face |bytes packets errs drop fifo frame compressed multicast|[... + lo: 908188 5596 0 0 0 0 0 0 [... + ppp0:15475140 20721 410 0 0 410 0 0 [... + eth0: 614530 7085 0 0 0 0 0 1 [... + +...] Transmit +...] bytes packets errs drop fifo colls carrier compressed +...] 908188 5596 0 0 0 0 0 0 +...] 1375103 17405 0 0 0 0 0 0 +...] 1703981 5535 0 0 0 3 0 0 + +2.5 SCSI info + +If you have a SCSI host adapter in your system, you'll find a +subdirectory named after the driver for this adapter in /proc/scsi. +You'll also see a list of all recognized SCSI devices in /proc/scsi: + +>cat /proc/scsi/scsi +Attached devices: +Host: scsi0 Channel: 00 Id: 00 Lun: 00 + Vendor: QUANTUM Model: XP34550W Rev: LXY4 + Type: Direct-Access ANSI SCSI revision: 02 +Host: scsi0 Channel: 00 Id: 01 Lun: 00 + Vendor: SEAGATE Model: ST34501W Rev: 0018 + Type: Direct-Access ANSI SCSI revision: 02 +Host: scsi0 Channel: 00 Id: 02 Lun: 00 + Vendor: SEAGATE Model: ST34501W Rev: 0017 + Type: Direct-Access ANSI SCSI revision: 02 +Host: scsi0 Channel: 00 Id: 04 Lun: 00 + Vendor: ARCHIVE Model: Python 04106-XXX Rev: 703b + Type: Sequential-Access ANSI SCSI revision: 02 + +The directory named after the driver has one file for each adapter +found in the system. These files contain information about +the controller, including the used IRQ and the IO address range: + +>cat /proc/scsi/ncr53c8xx/0 +General information: + Chip NCR53C875, device id 0xf, revision id 0x4 + IO port address 0xec00, IRQ number 11 + Synchronous period factor 12, max commands per lun 4 + +2.6 Parallel port info in /proc/parport + +The directory /proc/parport contains information about the parallel +ports of your system. It has one subdirectory for each port, named +after the port number (0,1,2,...). + +This directory contains four files: + + autoprobe Autoprobe results of this port + devices Connected device modules + hardware Hardware info (port type, io-port, DMA, IRQ, etc.) + irq Used interrupt, if any + +2.7 TTY info in /proc/tty + +Information about the available and the actually used tty's can be +found in /proc/tty. You'll find entries for drivers and line +disciplines in this directory, as shown in the table below: + + drivers List of drivers and their usage + ldiscs Registered line disciplines + driver/serial Usage statistic and status of single tty lines + +To see which tty's are currently in use, you can simply look into the +file /proc/tty/drivers: + +>cat /proc/tty/drivers +pty_slave /dev/pts 136 0-255 pty:slave +pty_master /dev/ptm 128 0-255 pty:master +pty_slave /dev/ttyp 3 0-255 pty:slave +pty_master /dev/pty 2 0-255 pty:master +serial /dev/cua 5 64-67 serial:callout +serial /dev/ttyS 4 64-67 serial +/dev/tty0 /dev/tty0 4 0 system:vtmaster +/dev/ptmx /dev/ptmx 5 2 system +/dev/console /dev/console 5 1 system:console +/dev/tty /dev/tty 5 0 system:/dev/tty +unknown /dev/tty 4 1-63 console + +----------------------------------------------------------------------- + +3 Reading and modifying kernel parameters + +A very interesting part of /proc is the directory /proc/sys. This not +only provides information, it also allows you to change parameters +within the kernel. Be very careful when trying this. You can optimize +your system, but you also can crash it. Never play around with kernel +parameters on a production system. Set up a development machine and +test to make sure that everything works the way you want it to. You +may have no alternative but to reboot the machine once an error has +been made. + +To change a value, simply echo the new value into the file. An example +is given below in the section on the file system data. You need to be +root to do this. You can create your own boot script to get this done +every time your system boots. + +The files in /proc/sys can be used to tune and monitor miscellaneous +and general things in the operation of the Linux kernel. Since some +of the files can inadvertently disrupt your system, it is advisable to +read both documentation and source before actually making +adjustments. In any case, be very careful when writing to any of these +files. The entries in /proc may change slightly between the 2.1.* and +the 2.2 kernel, so review the kernel documentation if there is any +doubt. You'll find the documentation in the directory +/usr/src/linux/Documentation/sys. This chapter is heavily based on the +documentation included in the pre 2.2 kernels. Thanks to Rick van Riel +for providing this information. + +3.1 /proc/sys/debug and /proc/sys/proc + +These two subdirectories are empty. + +3.2 /proc/fs - File system data + +This subdirectory contains specific file system, file handle, inode, +dentry and quota information. + +Currently, these files are in /proc/sys/fs: + +dentry-state + Status of the directory cache. Since directory entries are + dynamically allocated and deallocated, this file gives information + about the current status. It holds six values, in which the last + two are not used and are always zero. The other four mean: + + nr_dentry Seems to be zero all the time + nr_unused Number of unused cache entries + age_limit Age in seconds after the entry may be + reclaimed, when memory is short + want_pages internal + +dquot-nr and dquot-max + The file dquot-max shows the maximum number of cached disk quota + entries. + + The file dquot-nr shows the number of allocated disk quota + entries and the number of free disk quota entries. + + If the number of free cached disk quotas is very low and you have + a large number of simultaneous system users, you might want + to raise the limit. + +file-nr and file-max + The kernel allocates file handles dynamically, but as yet + doesn't free them again. + + The value in file-max denotes the maximum number of file handles + that the Linux kernel will allocate. When you get a lot of error + messages about running out of file handles, you might want to raise + this limit. The default value is 4096. To change it, just write the + new number into the file: + + # cat /proc/sys/fs/file-max + 4096 + # echo 8192 > /proc/sys/fs/file-max + # cat /proc/sys/fs/file-max + 8192 + + This method of revision is useful for all customizable parameters + of the kernel - simply echo the new value to the corresponding + file. + + The three values in file-nr denote the number of allocated file + handles, the number of used file handles, and the maximum number of + file handles. When the allocated file handles come close to the + maximum, but the number of actually used ones is far behind, you've + encountered a peak in your usage of file handles and you don't need + to increase the maximum. + + However, there is still a per process limit of open files, which + unfortunatly can't be changed that easily. It is set to 1024 by + default. To change this you have to edit the files limits.h and + fs.h in the directory /usr/src/linux/include/linux. Change the + definition of NR_OPEN and recompile the kernel. + +inode-state, inode-nr and inode-max + As with file handles, the kernel allocates the inode structures + dynamically, but can't free them yet. + + The value in inode-max denotes the maximum number of inode + handlers. This value should be 3 to 4 times larger than the value + in file-max, since stdin, stdout, and network sockets also need an + inode struct to handle them. If you regularly run out of inodes, + you should increase this value. + + The file inode-nr contains the first two items from inode-state, so + we'll skip to that file... + + inode-state contains three actual numbers and four dummy values. The + actual numbers are (in order of appearance) nr_inodes, nr_free_inodes, + and preshrink. + + nr_inodes + Denotes the number of inodes the system has allocated. This can + be slightly more than inode-max because Linux allocates them one + pageful at a time. + + nr_free_inodes + Represents the number of free inodes and pre shrink is nonzero + when the nr_inodes > inode-max and the system needs to prune the + inode list instead of allocating more. + +super-nr and super-max + Again, super block structures are allocated by the kernel, + but not freed. The file super-max contains the maximum number of + super block handlers, where super-nr shows the number of + currently allocated ones. + + Every mounted file system needs a super block, so if you plan to + mount lots of file systems, you may want to increase these + numbers. + +3.3 /proc/fs/binfmt_misc - Miscellaneous binary formats + +Besides these files, there is the subdirectory +/proc/sys/fs/binfmt_misc. This handles the kernel support for +miscellaneous binary formats. + +Binfmt_misc provides the ability to register additional binary formats +to the Kernel without compiling an additional module/kernel. Therefore +binfmt_misc needs to know magic numbers at the beginning or the +filename extension of the binary. + +It works by maintaining a linked list of structs, that contain a +description of a binary format, including a magic with size (or the +filename extension), offset and mask, and the interpreter name. On +request it invokes the given interpreter with the original program as +argument, as binfmt_java and binfmt_em86 and binfmt_mz do. +Since binfmt_misc does not define any default binary-formats, you have to +register an additional binary-format. + +There are two general files in binfmt_misc and one file per registered +format. The two general files are register and status. + +Registering a new binary format + +echo :name:type:offset:magic:mask:interpreter: > /proc/sys/fs/binfmt_misc/register + +with appropriate name (the name for the /proc-dir entry), offset +(defaults to 0, if omitted), magic and mask (which can be omitted, +defaults to all 0xff) and last but not least, the interpreter that is +to be invoked (for example and testing '/bin/echo'). Type can be M for +usual magic matching or E for filename extension matching (give +extension in place of magic). + +To check or reset the status of the binary format handler: + +If you do a cat on the file /proc/sys/fs/binfmt_misc/status, you will +get the current status (enabled/disabled) of binfmt_misc. Change the +status by echoing 0 (disables) or 1 (enables) or -1 (caution: this +clears all previously registered binary formats) to status. For +example echo 0 > status to disable binfmt_misc (temporarily). + +Status of a single handler + +Each registered handler has an entry in /proc/sys/fs/binfmt_misc. +These files perform the same function as status, but their scope is +limited to the actual binary format. By cating this file, you also +receive all related information about the interpreter/magic of the +binfmt. + +Example usage of binfmt_misc (emulate binfmt_java) + +cd /proc/sys/fs/binfmt_misc +echo ':Java:M::\xca\xfe\xba\xbe::/usr/local/java/bin/javawrapper:' > register +echo ':HTML:E::html::/usr/local/java/bin/appletviewer:' > register +echo ':Applet:M::<!--applet::/usr/local/java/bin/appletviewer:' > register +echo ':DEXE:M::\x0eDEX::/usr/bin/dosexec:' > register + +These three lines add support for Java executables and Java applets +(like binfmt_java, additionally recognizing the .html extension with +no need to put <!--applet> to every applet file). You have to install +the JDK and the shell-script /usr/local/java/bin/javawrapper too. It +works around the brokenness of the Java filename handling. To add a +Java binary, just create a link to the class-file somewhere in the +path. + +3.4 /proc/sys/kernel - general kernel parameters + +This directory reflects general kernel behaviors. As I've said before, +the contents are depend on your configuration. I'll list the most +important files, along with descriptions of what they mean and how to +use them. + +acct + The file contains three values; highwater, lowwater, and + frequency. + + It exists only when BSD-style process accounting is enabled. These + values control its behavior. If the free space on the file system + where the log lives goes below lowwater%, accounting suspends. If + it goes above highwater%, accounting resumes. Frequency determines + how often you check the amount of free space (value is in + seconds). Default settings are: 4, 2, and 30. That is, suspend + accounting if there left <= 2% free; resume it if we have a value + >=3%; consider information about the amount of free space valid + for 30 seconds + +ctrl-alt-del + When the value in this file is 0, ctrl-alt-del is trapped and sent + to the init(1) program to handle a graceful restart. However, when + the value is > 0, Linux's reaction to this key combination will be + an immediate reboot, without syncing its dirty buffers. + + Note: when a program (like dosemu) has the keyboard in raw mode, + the ctrl-alt-del is intercepted by the program before it ever + reaches the kernel tty layer, and it is up to the program to decide + what to do with it. + +domainname and hostname + These files can be controlled to set the NIS domainname and + hostname of your box. For the classic darkstar.frop.org a simple: + + # echo "darkstar" > /proc/sys/kernel/hostname + # echo "frop.org" > /proc/sys/kernel/domainname + + would suffice to set your hostname and NIS domainname. + +osrelease, ostype and version + + The names make it pretty obvious what these fields contain: + + >cat /proc/sys/kernel/osrelease + 2.1.131 + >cat /proc/sys/kernel/ostype + Linux + >cat /proc/sys/kernel/version + #8 Mon Jan 25 19:45:02 PST 1999 + + The files osrelease and ostype should be clear enough. Version + needs a little more clarification however. The #8 means that this + is the 8th kernel built from this source base and the date behind + it indicates the time the kernel was built. The only way to tune + these values is to rebuild the kernel. + +panic + The value in this file represents the number of seconds the kernel + waits before rebooting on a panic. When you use the software + watchdog, the recommended setting is 60. If set to 0, the auto + reboot after a kernel panic is disabled, this is the default + setting. + +printk + The four values in printk denote console_loglevel, + default_message_loglevel, minimum_console_level, and + default_console_loglevel respectively. + + These values influence printk() behavior when printing or logging + error messages, which come from inside the kernel. See syslog(2) + for more information on the different log levels. + + console_loglevel + Messages with a higher priority than this will be printed to + the console. + + default_message_level + Messages without an explicit priority will be printed with + this priority. + + minimum_console_loglevel + Minimum (highest) value to which the console_loglevel can be set. + + default_console_loglevel + Default value for console_loglevel. + +sg-big-buff + This file shows the size of the generic SCSI (sg) buffer. At this + point, you can't tune it yet, but you can change it at compile time + by editing include/scsi/sg.h and changing the value of + SG_BIG_BUFF. + + If you use a scanner with SANE (Scanner Access now easy) you + might want to set this to a higher value. Look into the SANE + documentation on this issue. + +modprobe + The location where the modprobe binary is located. The kernel + uses this program to load modules on demand. + +3.5 /proc/sys/vm - The virtual memory subsystem + +The files in this directory can be used to tune the operation of the +virtual memory (VM) subsystem of the Linux kernel. In addition, one of +the files (bdflush) has a little influence on disk usage. + +bdflush + This file controls the operation of the bdflush kernel daemon. It + currently contains 9 integer values, 6 of which are actually used + by the kernel: + + nfract Percentage of buffer cache dirty to + activate bdflush + ndirty Maximum number of dirty blocks to + write out per-wake-cycle + nrefill Number of clean buffers to try to obtain + each time we call refill + nref_dirt Dirty buffer threshold for activating bdflush + when trying to refill buffers. + dummy unused + age_buffer Time for normal buffer to age before you flush it + age_super Time for superblock to age before you flush it + dummy unused + dummy unused + + nfract + This parameter governs the maximum number of dirty buffers + in the buffer cache. Dirty means that the contents of the + buffer still have to be written to disk (as opposed to a + clean buffer, which can just be forgotten about). Setting + this to a high value means that Linux can delay disk writes + for a long time, but it also means that it will have to do a + lot of I/O at once when memory becomes short. A low value + will spread out disk I/O more evenly. + + ndirty + Ndirty gives the maximum number of dirty buffers that + bdflush can write to the disk at one time. A high value will + mean delayed, bursty I/O, while a small value can lead to + memory shortage when bdflush isn't woken up often enough. + + nrefill + This the number of buffers that bdflush will add to the list + of free buffers when refill_freelist() is called. It is + necessary to allocate free buffers beforehand, since the + buffers are often different sizes than the memory pages + and some bookkeeping needs to be done beforehand. The + higher the number, the more memory will be wasted and the + less often refill_freelist() will need to run. + + nref_dirt + When refill_freelist() comes across more than nref_dirt + dirty buffers, it will wake up bdflush. + + age_buffer and age_super + Finally, the age_buffer and age_super parameters govern the + maximum time Linux waits before writing out a dirty buffer + to disk. The value is expressed in jiffies (clockticks), the + number of jiffies per second is 100. Age_buffer is the + maximum age for data blocks, while age_super is for + filesystems meta data. + +buffermem + The three values in this file control how much memory should be + used for buffer memory. The percentage is calculated as a + percentage of total system memory. + + The values are: + + min_percent + This is the minimum percentage of memory that should be + spent on buffer memory. + + borrow_percent + When Linux is short on memory, and the buffer cache uses more + than it has been allotted, the memory mangement (MM) subsystem + will prune the buffer cache more heavily than other memory to + compensate. + + max_percent + This is the maximum amount of memory that can be used for + buffer memory. + +freepages + This file contains three values: min, low and high: + + min + When the number of free pages in the system reaches this number, + only the kernel can allocate more memory. + + low + If the number of free pages gets below this point, the kernel + starts swapping aggressively. + + high + The kernel tries to keep up to this amount of memory free; if + memory comes below this point, the kernel gently starts swapping + in the hopes that it never has to do really aggressive swapping. + +kswapd + Kswapd is the kernel swap out daemon. That is, kswapd is that piece + of the kernel that frees memory when it gets fragmented or + full. Since every system is different, you'll probably want some + control over this piece of the system. + + The file contains three numbers: + + tries_base + The maximum number of pages kswapd tries to free in one round is + calculated from this number. Usually this number will be divided + by 4 or 8 (see mm/vmscan.c), so it isn't as big as it looks. + + When you need to increase the bandwidth to/from swap, you'll want + to increase this number. + + tries_min + This is the minimum number of times kswapd tries to free a page + each time it is called. Basically it's just there to make sure + that kswapd frees some pages even when it's being called with + minimum priority. + + + swap_cluster + This is probably the greatest influence on system + performance. swap_cluster is the number of pages kswapd writes in + one turn. You'll want this value to be large so that kswapd does + its I/O in large chunks and the disk doesn't have to seek as + often., but you don't want it to be too large since that would + flood the request queue. + +overcommit_memory + This file contains one value. The following algorithm is used to + decide if there's enough memory: if the value of overcommit_memory + is positive, then there's always enough memory. This is a useful + feature, since programs often malloc() huge amounts of memory 'just + in case', while they only use a small part of it. Leaving this + value at 0 will lead to the failure of such a huge malloc(), when + in fact the system has enough memory for the program to run. + + On the other hand, enabling this feature can cause you to run out + of memory and thrash the system to death, so large and/or important + servers will want to set this value to 0. + +pagecache + This file does exactly the same as buffermem, only this file + controls the amount of memory allowed for memory mapping and + generic caching of files. + + You don't want the minimum level to be too low, otherwise your + system might thrash when memory is tight or fragmentation is + high. + +pagetable_cache + The kernel keeps a number of page tables in a per-processor cache + (this helps a lot on SMP systems). The cache size for each + processor will be between the low and the high value. + + On a low-memory, single CPU system, you can safely set these values + to 0 so you don't waste memory. It is used on SMP systems so that + the system can perform fast pagetable allocations without having to + aquire the kernel memory lock. + + For large systems, the settings are probably fine. For normal + systems they won't hurt a bit. For small systems (<16MB ram) it + might be advantageous to set both values to 0. + +swapctl + This file contains no less than 8 variables. All of these values + are used by kswapd. + + The first four variables sc_max_page_age, sc_page_advance, + sc_page_decline and sc_page_initial_age are used to keep track of + Linux's page aging. Page aging is a bookkeeping method to track + which pages of memory are often used, and which pages can be + swapped out without consequences. + + When a page is swapped in, it starts at sc_page_initial_age + (default 3) and when the page is scanned by kswapd, its age is + adjusted according to the following scheme: + + o If the page was used since the last time we scanned, its age + is increased by sc_page_advance (default 3) up to a + maximum of sc_max_page_age (default 20). + + o Else (meaning it wasn't used) its age is decreased by + sc_page_decline (default 1). + + When a page reaches age 0, it's ready to be swapped out. + + The next four variables sc_age_cluster_fract, sc_age_cluster_min, + sc_pageout_weight and sc_bufferout_weight, can be used to control + kswapd's aggressiveness in swapping out pages. + + Sc_age_cluster_fract is used to calculate how many pages from a + process are to be scanned by kswapd. The formula used is + + sc_age_cluster_fract + -------------------- * resident set size + 1024 =20 + + So if you want kswapd to scan the whole process, + sc_age_cluster_fract needs to have a value of 1024. The minimum + number of pages kswapd will scan is represented by + sc_age_cluster_min, this is done so kswapd will also scan small + processes. + + The values of sc_pageout_weight and sc_bufferout_weight are used + to control how many tries kswapd will make in order to swap out + one page/buffer. These values can be used to fine-tune the ratio + between user pages and buffer/cache memory. When you find that + your Linux system is swapping out too many process pages in order + to satisfy buffer memory demands, you might want to either + increase sc_bufferout_weight, or decrease the value of + sc_pageout_weight. + +3.6 /proc/sys/dev - Device specific parameters + +Currently there is only support for CDROM drives, but other drivers may +wish to register themselves in here in the future. The cdrom/ directory +contains several files that either control or supply information about +the CDROM subsystem. + +>cat /proc/sys/dev/cdrom/info +CD-ROM information, Id: cdrom.c 3.04 1999/09/12 + +drive name: hdd hdc hdb hda +drive speed: 32 24 10 0 +drive # of slots: 1 1 1 1 +Can close tray: 1 1 1 1 +Can open tray: 1 1 1 1 +Can lock tray: 1 1 1 1 +Can change speed: 1 1 1 1 +Can select disk: 0 0 0 0 +Can read multisession: 1 1 1 1 +Can read MCN: 1 1 1 1 +Reports media changed: 1 1 1 1 +Can play audio: 1 1 1 1 +Can write CD-R: 0 1 0 0 +Can write CD-RW: 0 1 0 0 +Can read DVD: 0 0 0 1 +Can write DVD-R: 0 0 0 0 +Can write DVD-RAM: 0 0 0 0 + +You see four drives and their lists of features. These are all ATAPI +drives - SCSI drives will be numbered sr0, sr1, and so forth. + +The remaining files all set options in the driver. + +autoclose + Close the drive tray when the drive is accessed. + +autoeject + Eject the tray when the drive is umounted. + +check_media + Verify the media type when opening the device. This is generally + meant for audio CD's. + +debug + Print debugging messages. + +lock + Lock the tray when the drive is in use. + + +3.7 /proc/sys/sunrpc - Remote procedure calls + +This directory contains four files, which enable or disable debugging +for the RPC functions NFS, NFS-daemon, RPC and NLM. The default values +are 0. They can be set to one, to turn debugging on. (The default +value is 0 for each) + +3.8 /proc/sys/net - Networking stuff + +The interface to the networking parts of the kernel is located in +/proc/sys/net. The table below shows all possible subdirectories. You +may see only some of them, depending on the configuration of your +kernel: + ++-------------------------------------------------------------+ +| core General parameter |appletalk Appletalk protocol | +| unix Unix domain sockets |netrom NET/ROM | +| 802 E802 protocol |ax25 AX25 | +| ethernet Ethernet protocol |rose X.25 PLP layer | +| ipv4 IP version 4 |x25 X.25 protocol | +| ipx IPX |token-ring IBM token ring | +| bridge Bridging |decnet DEC net | +| ipv6 IP version 6 | | ++-------------------------------------------------------------+ + +We will concentrate on IP networking here. As AX15, X.25, and DEC Net +are only minor players in the Linux world, we'll skip them in this +chapter. You'll find some short info to Appletalk and IPX further down +in section 3.10 and 3.11. Please look in the online documentation and +the kernel source to get a detailed view of the parameters for those +protocols. In this section we'll discuss the subdirectories printed in +bold letters in the table above. As default values are suitable for +most needs, there is no need to change these values. + +/proc/sys/net/core - Network core options + +rmem_default + The default setting of the socket receive buffer in bytes. + +rmem_max + The maximum receive socket buffer size in bytes. + +wmem_default + The default setting (in bytes) of the socket send buffer. + +wmem_max + The maximum send socket buffer size in bytes. + +message_burst and message_cost + These parameters are used to limit the warning messages written to + the kernel log from the networking code. They enforce a rate limit + to make a denial-of-service attack impossible. The higher the + message_cost factor is, the less messages will be + written. Message_burst controls when messages will be dropped. The + default settings limit warning messages to one every five seconds. + +netdev_max_backlog + Maximal number of packets, queued on INPUT side, when the interface + receives packets faster than kernel can process them. + +optmem_max + Maximum ancillary buffer size allowed per socket. Ancillary data is + a sequence of struct cmsghdr structures with appended data. + +/proc/sys/net/unix - Parameters for UNIX domain sockets + +There are only two files in this subdirectory. They control the delays +for deleting and destroying socket descriptors. + +3.9 /proc/sys/net/ipv4 - IPV4 settings + +IP version 4 is still the most used protocol in Unix networking. It +will be replaced by IP version 6 in the next couple of years, but for +the moment it's the de facto standard for the internet and is used in +most networking environments around the world. Because of the +importance of this protocol, we'll have a deeper look into the subtree +controlling the behavior of the IPv4 subsystem of the Linux kernel. + +Let's start with the entries in /proc/sys/net/ipv4 itself. + +ICMP settings + +icmp_echo_ignore_all and icmp_echo_ignore_broadcasts + Turn on (1) or off (0), if the kernel should ignore all ICMP ECHO + requests, or just those to broadcast and multicast addresses. + + Please note that if you accept ICMP echo requests with a + broadcast/multicast destination address your network may be used + as an exploder for denial of service packet flooding attacks to + other hosts. + +icmp_destunreach_rate, icmp_echoreply_rate, +icmp_paramprob_rate and icmp_timeexeed_rate + Sets limits for sending ICMP packets to specific targets. A value of + zero disables all limiting. Any positive value sets the maximum + package rate in hundredths of a second (on Intel systems). + +IP settings + +ip_autoconfig + This file contains one, if the host got its IP configuration by + RARP, BOOTP, DHCP or a similar mechanism. Otherwise it is zero. + +ip_default_ttl + TTL (Time To Live) for IPv4 interfaces. This is simply the + maximum number of hops a packet may travel. + +ip_dynaddr + Enable dynamic socket address rewriting on interface address change. This + is useful for dialup interface with changing IP addresses. + +ip_forward + Enable or disable forwarding of IP packages between interfaces. A + change of this value resets all other parameters to their default + values. They differ if the kernel is configured as host or router. + +ip_local_port_range + Range of ports used by TCP and UDP to choose the local + port. Contains two numbers, the first number is the lowest port, + the second number the highest local port. Default is 1024-4999. + Should be changed to 32768-61000 for high-usage systems. + +ip_no_pmtu_disc + Global switch to turn path MTU discovery off. It can also be set + on a per socket basis by the applications or on a per route + basis. + +ip_masq_debug + Enable/disable debugging of IP masquerading. + + +IP fragmentation settings + +ipfrag_high_trash and ipfrag_low_trash + Maximum memory used to reassemble IP fragments. When + ipfrag_high_thresh bytes of memory is allocated for this purpose, + the fragment handler will toss packets until ipfrag_low_thresh is + reached. + + +ipfrag_time + Time in seconds to keep an IP fragment in memory. + +TCP settings + +tcp_retrans_collapse + Bug-to-bug compatibility with some broken printers. On retransmit + try to send bigger packets to work around bugs in certain TCP + stacks. Can be turned off by setting it to zero. + +tcp_keepalive_probes + Number of keep alive probes TCP sends out, until it decides that the + connection is broken. + +tcp_keepalive_time + How often TCP sends out keep alive messages, when keep alive is + enabled. The default is 2 hours. + +tcp_syn_retries + Number of times initial SYNs for a TCP connection attempt will be + retransmitted. Should not be higher than 255. This is only the + timeout for outgoing connections, for incoming connections the + number of retransmits is defined by tcp_retries1. + +tcp_sack + Enable select acknowledgments after RFC2018. + +tcp_timestamps + Enable timestamps as defined in RFC1323. + +tcp_stdurg + Enable the strict RFC793 interpretation of the TCP urgent pointer + field. The default is to use the BSD compatible interpretation + of the urgent pointer pointing to the first byte after the urgent + data. The RFC793 interpretation is to have it point to the last + byte of urgent data. Enabling this option may lead to + interoperatibility problems. Disabled by default. + +tcp_syncookies + Only valid when the kernel was compiled with + CONFIG_SYNCOOKIES. Send out syncookies when the syn backlog queue + of a socket overflows. This is to prevent against the common 'syn + flood attack'. Disabled by default. + + Note that the concept of a socket backlog is abandoned, this + means the peer may not receive reliable error messages from an + over loaded server with syncookies enabled. + +tcp_window_scaling + Enable window scaling as defined in RFC1323. + +tcp_fin_timeout + How many seconds to wait for a final FIN before the socket is + always closed. This is strictly a violation of the TCP + specification, but required to prevent denial-of-service attacks. + +tcp_max_ka_probes + How many keepalive probes are sent per slow timer run. Shouldn't be + set too high to prevent bursts. + +tcp_max_syn_backlog + Length of the per socket backlog queue. Since Linux 2.2 the backlog + specified in listen(2) only specifies the length of the backlog + queue of already established sockets. When more connection requests + arrive Linux starts to drop packets. When syncookies are enabled + the packets are still answered and the maximum queue is effectively + ignored. + +tcp_retries1 + Defines how often an answer to a TCP connection request is + retransmitted before giving up. + +tcp_retries2 + Defines how often a TCP packet is retransmitted before giving up. + +Interface specific settings + +In the directory /proc/sys/net/ipv4/conf you'll find one subdirectory +for each interface the system knows about and one directory calls +all. Changes in the all subdirectory affect all interfaces, where +changes in the other subdirectories affect only one interface. + +All directories have the same entries: + +accept_redirects + This switch decides if the kernel accepts ICMP redirect messages + or not. The default is 'yes', if the kernel is configured for a + regular host; and 'no' for a router configuration. + +accept_source_route + Should source routed packages be accepted or declined. The + default is dependent on the kernel configuration. It's 'yes' for + routers and 'no' for hosts. + +bootp_relay + Accept packets with source address 0.b.c.d destined not to this + host as local ones. It is supposed that BOOTP relay daemon will + catch and forward such packets. + + The default is 'no', as this feature is not implemented yet + (kernel version 2.2.0-pre?). + +forwarding + Enable or disable IP forwarding on this interface. + +log_martians + Log packets with source addresses with no known route to kernel log. + +mc_forwarding + Do multicast routing. The kernel needs to be compiled with + CONFIG_MROUTE and a multicast routing daemon is required. + +proxy_arp + Do (1) or don't (0) do proxy ARP. + +rp_filter + Integer value deciding if source validation should be made. + 1 means yes, 0 means no. Disabled by default, but + local/broadcast address spoofing is always on. + + If you set this to 1 on a router that is the only connection + for a network to the net , it evidently prevents spoofing attacks + against your internal networks (external addresses can still be + spoofed), without the need for additional firewall rules. + +secure_redirects + Accept ICMP redirect messages only for gateways, listed in + default gateway list. Enabled by default. + +shared_media + If it is not set the kernel does not assume that different subnets + on this device can communicate directly. Default setting is 'yes'. + +send_redirects + Determines if or if not to send ICMP redirects to other hosts. + + +Routing settings + +The directory /proc/sys/net/ipv4/route contains several file to +control routing issues. + +error_burst and error_cost + These parameters are used to limit the warning messages written to + the kernel log from the routing code. The higher the error_cost + factor is, the fewer messages will be written. Error_burst controls + when messages will be dropped. The default settings limit warning + messages to one every five seconds. + +flush + Writing to this file results in a flush of the routing cache. + +gc_elastic, gc_interval, gc_min_interval, gc_tresh, gc_timeout + Values to control the frequency and behavior of the garbage + collection algorithm for the routing cache. + +max_size + Maximum size of the routing cache. Old entries will be purged + once the cache has this size. + +max_delay, min_delay + Delays for flushing the routing cache. + +redirect_load, redirect_number + Factors which determine if more ICPM redirects should be sent to + a specific host. No redirects will be sent once the load limit or + the maximum number of redirects has been reached. + +redirect_silence + + Timeout for redirects. After this period redirects will be sent + again, even if this has been stopped, because the load or number + limit has been reached. + +Network Neighbor handling + +Settings about how to handle connections with direct neighbors (nodes +attached to the same link) can be found in the directory +/proc/sys/net/ipv4/neigh. + +As we saw it in the conf directory, there is a default subdirectory +which holds the default values, and one directory for each +interface. The contents of the directories are identical, with the +single exception that the default settings contain additional options +to set garbage collection parameters. + +In the interface directories you'll find the following entries: + +base_reachable_time + A base value used for computing the random reachable time value + as specified in RFC2461. + +retrans_time + The time, expressed in jiffies (1/100 sec), between retransmitted + Neighbor Solicitation messages. Used for address resolution and to + determine if a neighbor is unreachable. + +unres_qlen + Maximum queue length for a pending arp request - how many packets + are accepted from other layers while the arp address is still + resolved. + +anycast_delay + Maximum for random delay of answers to neighbor solicitation + messages in jiffies (1/100 sec). Not yet implemented (Linux does + not have anycast support yet). + +ucast_solicit + Maximum number of retries for unicast solicitation. + +mcast_solicit + Maximum number of retries for multicast solicitation. + +delay_first_probe_time + Delay for the first time probe if the neighbor is reachable. (see + gc_stale_time). + +locktime + An ARP/neighbor entry is only replaced with a new one if the old + is at least locktime old. This prevents ARP cache thrashing. + +proxy_delay + Maximum time (real time is random [0..proxytime]) before + answering to an arp request for which we have an proxy arp entry. + In some cases, this is used to prevent network flooding. + +proxy_qlen + Maximum queue length of the delayed proxy arp timer (see + proxy_delay). + +app_solcit + Determines the number of requests to send to the user level arp + daemon. 0 to turn off. + +gc_stale_time + Determines how often to check for stale ARP entries. After an ARP + entry is stale it will be resolved again (useful when an IP address + migrates to another machine). When ucast_solicit is > 0 it first + tries to send an ARP packet directly to the known host, when that + fails and mcast_solicit is > 0, an ARP request is broadcasted. + +3.10 Appletalk + +The /proc/sys/net/appletalk directory holds the Appletalk +configuration data when Appletalk is loaded. The configurable +parameters are: + +aarp-expiry-time + The amount of time we keep an AARP entry before expiring + it. Used to age out old hosts. + +aarp-resolve-time + The amount of time we will spend trying to resolve an Appletalk + address. + +aarp-retransmit-limit + The number of times we will retransmit a query before giving up. + +aarp-tick-time + Controls the rate at which expiries are checked. + + +The directory /proc/net/appletalk holds the list of active appletalk +sockets on a machine. + +The fields indicate the DDP type, the local address (in network:node +format) the remote address, the size of the transmit pending queue, +the size of the received queue (bytes waiting for applications to +read) the state and the uid owning the socket. + +/proc/net/atalk_iface lists all the interfaces configured for +appletalk.It shows the name of the interface, its appletalk address, +the network range on that ad- dress (or network number for phase 1 +networks), and the status of the interface. + +/proc/net/atalk_route lists each known network route. It lists the +target (network) that the route leads to, the router (may be directly +connected), the route flags, and the device the route is via. + +3.11 IPX + +The IPX protocol has no tunable values in /proc/sys/net. + +The IPX protocol does, however, provide /proc/net/ipx. This lists each +IPX socket giving the local and remote addresses in Novell format +(that is network:node:port). In accordance with the strange Novell +tradition, everything but the port is in hex. Not_Connected is +displayed for sockets that are not tied to a specific remote +address. The Tx and Rx queue sizes indicate the number of bytes +pending for transmit and receive. The state indicates the state the +socket is in and the uid is the owning uid of the socket. + +The /proc/net/ipx_interface file lists all IPX interfaces. For each +interface it gives the network number, the node number, and indicates +if the network is the primary network. It also indicates which device it is bound to (or +Internal for internal networks) and the Frame Type if +appropriate. Linux supports 802.3, 802.2, 802.2 SNAP and DIX (Blue +Book) ethernet framing for IPX. + +The /proc/net/ipx_route table holds a list of IPX routes. For each +route it gives the destination network, the router node (or Directly) +and the network address of the router (or Connected) for internal +networks. diff --git a/Documentation/filesystems/udf.txt b/Documentation/filesystems/udf.txt new file mode 100644 index 000000000..5db0ed332 --- /dev/null +++ b/Documentation/filesystems/udf.txt @@ -0,0 +1,57 @@ +* +* ./Documentation/filesystems/udf.txt +* +UDF Filesystem version 0.8.9 + +If you encounter problems with reading UDF discs using this driver, +please report them to linux_udf@hootie.lvld.hp.com, which is the +developer's list. + +Write support requires a block driver which supports writing. The current +scsi and ide cdrom drivers do not support writing. + +------------------------------------------------------------------------------- +The following mount options are supported: + + gid= Set the default group. + umask= Set the default umask. + uid= Set the default user. + unhide Show otherwise hidden files. + undelete Show deleted files in lists. + strict Set strict conformance (unused) + utf8 (unused) + iocharset (unused) + +The remaining are for debugging and disaster recovery: + + bs= Set the block size. (may not work unless 2048) + novrs Skip volume sequence recognition + +The following expect a offset from 0. + + session= Set the CDROM session (default= last session) + anchor= Override standard anchor location. (default= 256) + volume= Override the VolumeDesc location. (unused) + partition= Override the PartitionDesc location. (unused) + lastblock= Set the last block of the filesystem/ + +The following expect a offset from the partition root. + + fileset= Override the fileset block location. (unused) + rootdir= Override the root directory location. (unused) + WARNING: overriding the rootdir to a non-directory may + yield highly unpredictable results. +------------------------------------------------------------------------------- + + +For more information see: + http://www.trylinux.com/projects/udf/index.html + +For the latest version and toolset see: + http://www.csc.calpoly.edu/~bfennema/udf.html + +Documentation on UDF and ECMA 167 is available FREE from: + http://www.osta.org/ + http://www.ecma.ch/ + +Ben Fennema <bfennema@falcon.csc.calpoly.edu> |