Annotation of 43BSDReno/share/doc/smm/14.fastfs/5.t, revision 1.1.1.1

1.1       root        1: .\" Copyright (c) 1986 The Regents of the University of California.
                      2: .\" All rights reserved.
                      3: .\"
                      4: .\" Redistribution and use in source and binary forms are permitted
                      5: .\" provided that the above copyright notice and this paragraph are
                      6: .\" duplicated in all such forms and that any documentation,
                      7: .\" advertising materials, and other materials related to such
                      8: .\" distribution and use acknowledge that the software was developed
                      9: .\" by the University of California, Berkeley.  The name of the
                     10: .\" University may not be used to endorse or promote products derived
                     11: .\" from this software without specific prior written permission.
                     12: .\" THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
                     13: .\" IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
                     14: .\" WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
                     15: .\"
                     16: .\"    @(#)5.t 6.2 (Berkeley) 3/7/89
                     17: .\"
                     18: .ds RH Functional enhancements
                     19: .NH 
                     20: File system functional enhancements
                     21: .PP
                     22: The performance enhancements to the
                     23: UNIX file system did not require
                     24: any changes to the semantics or
                     25: data structures visible to application programs.
                     26: However, several changes had been generally desired for some 
                     27: time but had not been introduced because they would require users to 
                     28: dump and restore all their file systems.
                     29: Since the new file system already
                     30: required all existing file systems to
                     31: be dumped and restored, 
                     32: these functional enhancements were introduced at this time.
                     33: .NH 2
                     34: Long file names
                     35: .PP
                     36: File names can now be of nearly arbitrary length.
                     37: Only programs that read directories are affected by this change.
                     38: To promote portability to UNIX systems that
                     39: are not running the new file system, a set of directory
                     40: access routines have been introduced to provide a consistent
                     41: interface to directories on both old and new systems.
                     42: .PP
                     43: Directories are allocated in 512 byte units called chunks.
                     44: This size is chosen so that each allocation can be transferred
                     45: to disk in a single operation.
                     46: Chunks are broken up into variable length records termed
                     47: directory entries.  A directory entry
                     48: contains the information necessary to map the name of a
                     49: file to its associated inode.
                     50: No directory entry is allowed to span multiple chunks.
                     51: The first three fields of a directory entry are fixed length
                     52: and contain: an inode number, the size of the entry, and the length
                     53: of the file name contained in the entry.
                     54: The remainder of an entry is variable length and contains
                     55: a null terminated file name, padded to a 4 byte boundary.
                     56: The maximum length of a file name in a directory is
                     57: currently 255 characters.
                     58: .PP
                     59: Available space in a directory is recorded by having
                     60: one or more entries accumulate the free space in their
                     61: entry size fields.  This results in directory entries
                     62: that are larger than required to hold the
                     63: entry name plus fixed length fields.  Space allocated
                     64: to a directory should always be completely accounted for
                     65: by totaling up the sizes of its entries.
                     66: When an entry is deleted from a directory,
                     67: its space is returned to a previous entry
                     68: in the same directory chunk by increasing the size of the
                     69: previous entry by the size of the deleted entry.
                     70: If the first entry of a directory chunk is free, then 
                     71: the entry's inode number is set to zero to indicate
                     72: that it is unallocated.
                     73: .NH 2
                     74: File locking
                     75: .PP
                     76: The old file system had no provision for locking files.
                     77: Processes that needed to synchronize the updates of a
                     78: file had to use a separate ``lock'' file.
                     79: A process would try to create a ``lock'' file. 
                     80: If the creation succeeded, then the process
                     81: could proceed with its update;
                     82: if the creation failed, then the process would wait and try again.
                     83: This mechanism had three drawbacks.
                     84: Processes consumed CPU time by looping over attempts to create locks.
                     85: Locks left lying around because of system crashes had
                     86: to be manually removed (normally in a system startup command script).
                     87: Finally, processes running as system administrator
                     88: are always permitted to create files,
                     89: so were forced to use a different mechanism.
                     90: While it is possible to get around all these problems,
                     91: the solutions are not straight forward,
                     92: so a mechanism for locking files has been added.
                     93: .PP
                     94: The most general schemes allow multiple processes
                     95: to concurrently update a file.
                     96: Several of these techniques are discussed in [Peterson83].
                     97: A simpler technique is to serialize access to a file with locks.
                     98: To attain reasonable efficiency,
                     99: certain applications require the ability to lock pieces of a file.
                    100: Locking down to the byte level has been implemented in the
                    101: Onyx file system by [Bass81].
                    102: However, for the standard system applications,
                    103: a mechanism that locks at the granularity of a file is sufficient.
                    104: .PP
                    105: Locking schemes fall into two classes,
                    106: those using hard locks and those using advisory locks.
                    107: The primary difference between advisory locks and hard locks is the
                    108: extent of enforcement.
                    109: A hard lock is always enforced when a program tries to
                    110: access a file;
                    111: an advisory lock is only applied when it is requested by a program.
                    112: Thus advisory locks are only effective when all programs accessing
                    113: a file use the locking scheme.
                    114: With hard locks there must be some override
                    115: policy implemented in the kernel.
                    116: With advisory locks the policy is left to the user programs.
                    117: In the UNIX system, programs with system administrator
                    118: privilege are allowed override any protection scheme.
                    119: Because many of the programs that need to use locks must
                    120: also run as the system administrator,
                    121: we chose to implement advisory locks rather than 
                    122: create an additional protection scheme that was inconsistent
                    123: with the UNIX philosophy or could
                    124: not be used by system administration programs.
                    125: .PP
                    126: The file locking facilities allow cooperating programs to apply
                    127: advisory
                    128: .I shared
                    129: or
                    130: .I exclusive
                    131: locks on files.
                    132: Only one process may have an exclusive
                    133: lock on a file while multiple shared locks may be present.
                    134: Both shared and exclusive locks cannot be present on
                    135: a file at the same time.
                    136: If any lock is requested when
                    137: another process holds an exclusive lock,
                    138: or an exclusive lock is requested when another process holds any lock,
                    139: the lock request will block until the lock can be obtained.
                    140: Because shared and exclusive locks are advisory only,
                    141: even if a process has obtained a lock on a file,
                    142: another process may access the file.
                    143: .PP
                    144: Locks are applied or removed only on open files.
                    145: This means that locks can be manipulated without
                    146: needing to close and reopen a file.
                    147: This is useful, for example, when a process wishes
                    148: to apply a shared lock, read some information
                    149: and determine whether an update is required, then
                    150: apply an exclusive lock and update the file.
                    151: .PP
                    152: A request for a lock will cause a process to block if the lock
                    153: can not be immediately obtained.
                    154: In certain instances this is unsatisfactory.
                    155: For example, a process that
                    156: wants only to check if a lock is present would require a separate
                    157: mechanism to find out this information.
                    158: Consequently, a process may specify that its locking
                    159: request should return with an error if a lock can not be immediately
                    160: obtained.
                    161: Being able to conditionally request a lock
                    162: is useful to ``daemon'' processes
                    163: that wish to service a spooling area.
                    164: If the first instance of the
                    165: daemon locks the directory where spooling takes place,
                    166: later daemon processes can
                    167: easily check to see if an active daemon exists.
                    168: Since locks exist only while the locking processes exist,
                    169: lock files can never be left active after
                    170: the processes exit or if the system crashes.
                    171: .PP
                    172: Almost no deadlock detection is attempted.
                    173: The only deadlock detection done by the system is that the file
                    174: to which a lock is applied must not already have a
                    175: lock of the same type (i.e. the second of two successive calls
                    176: to apply a lock of the same type will fail).
                    177: .NH 2
                    178: Symbolic links
                    179: .PP
                    180: The traditional UNIX file system allows multiple
                    181: directory entries in the same file system
                    182: to reference a single file.  Each directory entry
                    183: ``links'' a file's name to an inode and its contents.
                    184: The link concept is fundamental;
                    185: inodes do not reside in directories, but exist separately and
                    186: are referenced by links.
                    187: When all the links to an inode are removed,
                    188: the inode is deallocated.
                    189: This style of referencing an inode does
                    190: not allow references across physical file
                    191: systems, nor does it support inter-machine linkage. 
                    192: To avoid these limitations
                    193: .I "symbolic links"
                    194: similar to the scheme used by Multics [Feiertag71] have been added.
                    195: .PP
                    196: A symbolic link is implemented as a file that contains a pathname.
                    197: When the system encounters a symbolic link while
                    198: interpreting a component of a pathname,
                    199: the contents of the symbolic link is prepended to the rest
                    200: of the pathname, and this name is interpreted to yield the
                    201: resulting pathname.
                    202: In UNIX, pathnames are specified relative to the root
                    203: of the file system hierarchy, or relative to a process's
                    204: current working directory.  Pathnames specified relative
                    205: to the root are called absolute pathnames.  Pathnames
                    206: specified relative to the current working directory are
                    207: termed relative pathnames.
                    208: If a symbolic link contains an absolute pathname,
                    209: the absolute pathname is used,
                    210: otherwise the contents of the symbolic link is evaluated
                    211: relative to the location of the link in the file hierarchy.
                    212: .PP
                    213: Normally programs do not want to be aware that there is a
                    214: symbolic link in a pathname that they are using.
                    215: However certain system utilities
                    216: must be able to detect and manipulate symbolic links.
                    217: Three new system calls provide the ability to detect, read, and write
                    218: symbolic links; seven system utilities required changes
                    219: to use these calls.
                    220: .PP
                    221: In future Berkeley software distributions
                    222: it may be possible to reference file systems located on
                    223: remote machines using pathnames.  When this occurs,
                    224: it will be possible to create symbolic links that span machines.
                    225: .NH 2
                    226: Rename
                    227: .PP
                    228: Programs that create a new version of an existing
                    229: file typically create the
                    230: new version as a temporary file and then rename the temporary file
                    231: with the name of the target file.
                    232: In the old UNIX file system renaming required three calls to the system.
                    233: If a program were interrupted or the system crashed between these calls,
                    234: the target file could be left with only its temporary name.
                    235: To eliminate this possibility the \fIrename\fP system call
                    236: has been added.  The rename call does the rename operation
                    237: in a fashion that guarantees the existence of the target name.
                    238: .PP
                    239: Rename works both on data files and directories.
                    240: When renaming directories,
                    241: the system must do special validation checks to insure
                    242: that the directory tree structure is not corrupted by the creation
                    243: of loops or inaccessible directories.
                    244: Such corruption would occur if a parent directory were moved
                    245: into one of its descendants.
                    246: The validation check requires tracing the descendents of the target
                    247: directory to insure that it does not include the directory being moved.
                    248: .NH 2
                    249: Quotas
                    250: .PP
                    251: The UNIX system has traditionally attempted to share all available
                    252: resources to the greatest extent possible.
                    253: Thus any single user can allocate all the available space
                    254: in the file system.
                    255: In certain environments this is unacceptable.
                    256: Consequently, a quota mechanism has been added for restricting the
                    257: amount of file system resources that a user can obtain.
                    258: The quota mechanism sets limits on both the number of inodes
                    259: and the number of disk blocks that a user may allocate.
                    260: A separate quota can be set for each user on each file system.
                    261: Resources are given both a hard and a soft limit.
                    262: When a program exceeds a soft limit,
                    263: a warning is printed on the users terminal;
                    264: the offending program is not terminated
                    265: unless it exceeds its hard limit.
                    266: The idea is that users should stay below their soft limit between
                    267: login sessions,
                    268: but they may use more resources while they are actively working.
                    269: To encourage this behavior,
                    270: users are warned when logging in if they are over
                    271: any of their soft limits.
                    272: If users fails to correct the problem for too many login sessions,
                    273: they are eventually reprimanded by having their soft limit
                    274: enforced as their hard limit.
                    275: .ds RH Acknowledgements
                    276: .sp 2
                    277: .ne 1i

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.