Annotation of 43BSDReno/share/doc/smm/14.fastfs/5.t, revision 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.