Annotation of 43BSDReno/usr.sbin/amd/doc/maps.tex, revision 1.1.1.1

1.1       root        1: % $Id: maps.tex,v 5.2 90/06/23 22:21:51 jsp Rel $
                      2: %
                      3: % Copyright (c) 1989 Jan-Simon Pendry
                      4: % Copyright (c) 1989 Imperial College of Science, Technology & Medicine
                      5: % Copyright (c) 1989 The Regents of the University of California.
                      6: % All rights reserved.
                      7: %
                      8: % This code is derived from software contributed to Berkeley by
                      9: % Jan-Simon Pendry at Imperial College, London.
                     10: %
                     11: % Redistribution and use in source and binary forms are permitted provided
                     12: % that: (1) source distributions retain this entire copyright notice and
                     13: % comment, and (2) distributions including binaries display the following
                     14: % acknowledgement:  ``This product includes software developed by the
                     15: % University of California, Berkeley and its contributors'' in the
                     16: % documentation or other materials provided with the distribution and in
                     17: % all advertising materials mentioning features or use of this software.
                     18: % Neither the name of the University nor the names of its contributors may
                     19: % be used to endorse or promote products derived from this software without
                     20: % specific prior written permission.
                     21: % THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
                     22: % WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
                     23: % MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
                     24: %
                     25: %      @(#)maps.tex    5.1 (Berkeley) 7/19/90
                     26: 
                     27: 
                     28: \Chapter{Mount-maps}
                     29: 
                     30: \Amd\ has no built-in knowledge of machines or filesystems.
                     31: External {\em mount-maps} are used to provide the required information.
                     32: Specifically, \amd\ needs to know when and under what conditions it should
                     33: mount filesystems.
                     34: 
                     35: The map entry corresponding to the requested name contains
                     36: a list of possible locations from which to resolve the request.
                     37: Each location specifies  filesystem type, information required by that
                     38: filesystem (for example the block special device in the case of \UFS), and
                     39: some information describing where to mount the filesystem (\see \Ref{mount location}).
                     40: A location may also contain {\em selectors} (\see \Ref{selectors}).
                     41: 
                     42: \Section{Map Types}
                     43: 
                     44: A mount-map can be implemented as a regular file, an ndbm database
                     45: a YP map \cite{sun:yp} or via
                     46: the {\em Hesiod} \cite{mit:hesiod} name
                     47: server.
                     48: In addition, the password ``file'' can be used as a source of
                     49: map information.
                     50: %\footnote{In future, gdbm databases will also be supported.}
                     51: A mount-map name is a sequence of characters.
                     52: When an automount point is created a handle on the mount-map
                     53: is obtained.  If the the map name begins with the sequence
                     54: ``{\tt hesiod.}''\ then the {\em Hesiod} name server will be used.
                     55: If the map name is the string ``{\tt /etc/passwd}'' then the password
                     56: ``file'' will be used.
                     57: Otherwise the map name is referenced as a file,
                     58: then as an ndbm database by that name and then as a YP map.
                     59: As soon as a valid reference is found the map type is noted
                     60: for future use but any resources held are released, for example
                     61: any open file descriptors are closed.
                     62: The available map types are a configurable component of \amd\ and
                     63: can be displayed by running the command {\tt amd~-v}.
                     64: 
                     65: By default, \amd\ does not cache any data retrieved from a mount map.
                     66: This is a policy decision based on the observation that most workstations
                     67: have more available CPU time than spare memory.
                     68: However, on a multi-user service or larger workstation the faster
                     69: response provided by a cache can be preferable.  The \opt{cache}
                     70: option can be specified on automount points to alter the
                     71: caching behaviour (\see \Ref{auto-fs}).
                     72: Specifying {\tt cache:=mapdefault} selects a suitable default
                     73: cache mode depending on the map type.  The individual defaults
                     74: are described below.
                     75: 
                     76: \Subsection{File maps}
                     77: When \amd\ searches a file for a map entry it does a simple scan of the file
                     78: and supports both comments and continuation lines.
                     79: 
                     80: Continuation lines are indicated by a backslash character (``{\verb+\+}'') as
                     81: the last character of a line in the file.  The backslash, newline character
                     82: {\em and any leading white space on the following line} are discarded.  A maximum
                     83: line length of 2047 characters is enforced after continuation lines are read
                     84: but before comments are stripped.  Each line must end with
                     85: a newline character; that is newlines are terminators, not separators.
                     86: The following examples illustrate this:
                     87: \begin{verbatim}
                     88: key     valA   valB;   \
                     89:           valC
                     90: \end{verbatim}
                     91: specifies {\em three} locations, and is identical to
                     92: \begin{verbatim}
                     93: key     valA   valB;   valC
                     94: \end{verbatim}
                     95: However,
                     96: \begin{verbatim}
                     97: key     valA   valB;\
                     98:           valC
                     99: \end{verbatim}
                    100: specifies only {\em two} locations, and is identical to
                    101: \begin{verbatim}
                    102: key     valA   valB;valC
                    103: \end{verbatim}
                    104: 
                    105: After a complete line has been read from the file, including continuations,
                    106: \amd\ determines whether there is a comment on the line.
                    107: A comment begins with a hash (``{\tt \#}'') character and continues to the
                    108: end of the line.
                    109: There is no way to escape or change the comment lead-in character.
                    110: 
                    111: Note that continuation lines and comment support {\em only} apply to
                    112: file maps and ndbm maps built with the {\tt mk-amd-map} program.
                    113: 
                    114: When caching is enabled, file maps have a default cache mode of {\tt all} (\see \Ref{afs:cache}).
                    115: 
                    116: \Subsection{ndbm maps}\label{ndbm-maps}
                    117: An ndbm map may be used as a fast access form of a file map.
                    118: A program, {\tt mk-amd-map}, converts a normal map file into
                    119: an ndbm database.  This program supports the same continuation and
                    120: comment conventions that are provided for file maps.
                    121: Note that ndbm format files {\em may not} be
                    122: sharable across machine architectures.
                    123: The notion of speed generally only applies to large maps;
                    124: a small map, less than a single disk block, is almost certainly
                    125: better implemented as a file map.
                    126: 
                    127: ndbm maps do not support cache mode {\tt all} and, when
                    128: caching is enabled, have a default cache mode of {\tt inc} (\see \Ref{afs:cache}).
                    129: 
                    130: \Subsection{NIS maps}
                    131: When using NIS (formerly YP), an \amd\ map is implemented directly by the
                    132: underlying NIS map.
                    133: Comments and continuation lines are {\em not} supported
                    134: in the automounter and must be stripped when constructing the NIS server's database.
                    135: 
                    136: NIS maps do not support cache mode {\tt all} and,
                    137: when caching is enabled,
                    138: have a default cache mode of {\tt inc} (\see \Ref{afs:cache}).
                    139: 
                    140: \Subsection{Hesiod}
                    141: When the map name begins with the string ``{\tt hesiod.}'' lookups
                    142: are made using the {\em Hesiod} name server.  The string following
                    143: the dot is used as a name qualifier and is prepended with
                    144: the key being located.  The entire string is then resolved in the
                    145: {\t automount} context.  For example, if the map name is {\tt hesiod.homes}
                    146: and the key is {\tt jsp} then {\em Hesiod} is asked to resolve
                    147: {\tt jsp.homes.automount}.
                    148: 
                    149: Hesiod maps do not support cache mode {\tt all} and, when
                    150: caching is enabled, have a default cache mode of {\tt inc} (\see \Ref{afs:cache}).
                    151: 
                    152: \Subsection{Password}\label{map:passwd}
                    153: The password map support is unlike the four previous map types.
                    154: When the map name is the string {\tt /etc/passwd} 
                    155: \amd\ can lookup a user name in the password file and re-arrange
                    156: the home directory field to produce a usable map entry.
                    157: 
                    158: \Amd\ assumes the home directory has the format
                    159: {\tt /}{\em anydir}{\tt /}{\em dom$_1$}{\tt /../}{\em dom$_n$}{\tt /}{\em login}.
                    160: It breaks this string into a map entry where
                    161: \Var{rfs} has the value ``{\tt /}{\em anydir}{\tt /}{\em dom$_n$}'',
                    162: \Var{rhost} has the value ``{\em dom$_n$}{\tt .}{\em ...}{\tt .}{\em dom$_1$}'',
                    163: and \Var{sublink} has the value ``{\em login}''.
                    164: 
                    165: Thus if the password file entry was
                    166: \begin{quote}
                    167: \tt /home/achilles/jsp
                    168: \end{quote}
                    169: the map
                    170: entry used by \amd\ would be
                    171: \begin{quote}
                    172: \tt rfs:=/home/achilles;rhost:=achilles;sublink:=jsp
                    173: \end{quote}
                    174: Similarly, if the password file entry was
                    175: \begin{quote}
                    176: \tt /home/cc/sugar/mjh
                    177: \end{quote}
                    178: the map entry used by \amd\ would be 
                    179: \begin{quote}
                    180: \tt rfs:=/home/sugar;rhost:=sugar.cc;sublink:=jsp
                    181: \end{quote}
                    182: 
                    183: %\Subsection{Gdbm}
                    184: 
                    185: \Section{Key Lookup}
                    186: 
                    187: The key is located in the map whose type was determined when the
                    188: automount point was first created.
                    189: In general the key is a pathname component.
                    190: In some circumstances this may be modified by variable expansion
                    191: (\see \Ref{var-expansion})
                    192: and prefixing.
                    193: If the automount point has a prefix, specified by the \opt{pref} option, then
                    194: that is prepended to the search key before the map is searched.
                    195: 
                    196: If the key cannot be found then a {\em wildcard} match is attempted.
                    197: Currently this simply attempts to locate a special key ``{\tt *}''.
                    198: If the wildcard is not found then an error code is propagated back to the
                    199: kernel, otherwise \amd\ proceeds as if an exact match had been found.
                    200: The value field is then used to resolve the mount request (\see \Ref{filesystems}).
                    201: 
                    202: 
                    203: \Section{Location Format}\label{opts:values}
                    204: 
                    205: The value field from the lookup provides the information required to mount a filesystem.
                    206: The information is parsed according to the syntax shown in figure \ref{figure:so-grammar}.
                    207: \begin{figure}[htb]
                    208: \begin{tabbing}
                    209: Indent \= Long Gram Rule \= \kill
                    210:        \> {\em location-list}:\\
                    211:        \>              \> {\em location-selection}\\
                    212:        \>              \> {\em location-list}\ \verb*+ +\ {\tt ||}\ \verb*+ +\ {\em location-selection}\\
                    213:        \> {\em location-selection}:\\
                    214:        \>              \> {\em location}\\
                    215:        \>              \> {\em location-selection}\ \verb*+ +\ {\em location}\\
                    216:        \> {\em location}:\\
                    217:        \>              \> {\em location-info}\\
                    218:        \>              \> {\tt -}{\em location-info}\\
                    219:        \>              \> {\tt -}\\
                    220:        \> {\em location-info}:\\
                    221:        \>              \> {\em sel-or-opt}\\
                    222:        \>              \> {\em location-info}{\tt ;}{\em sel-or-opt}\\
                    223:        \>              \> {\tt ;}\\
                    224:        \> {\em sel-or-opt}:\\
                    225:        \>              \> {\em selection}\\
                    226:        \>              \> {\em opt-ass}\\
                    227:        \> {\em selection}:\\
                    228:        \>              \> {\rm selector}{\tt ==}{\em value}\\
                    229:        \>              \> {\rm selector}{\tt !=}{\em value}\\
                    230:        \> {\em opt-ass}:\\
                    231:        \>              \> {\rm option}{\tt :=}{\em value}\\
                    232: \end{tabbing}
                    233: \caption{\label{figure:so-grammar}Location syntax}
                    234: \end{figure}
                    235: Note that unquoted whitespace is not allowed in a location description.
                    236: White space is only allowed, and is mandatory, where shown with the symbol \verb*+ +.
                    237: 
                    238: A {\em location-selection} is a list of possible volumes with which to
                    239: satisfy the request.  {\em location-selection}s are separated by the {\tt ||}
                    240: operator.  The effect of this operator is to prevent use of location-selections
                    241: to its right if any of the location-selections on its left were selected
                    242: (see \Ref{selectors}).
                    243: 
                    244: The location-selection, and singleton {\em location-list},
                    245: {\tt type:=ufs;dev:=/dev/xd1g} would inform \amd\ to mount a
                    246: \UFS\ filesystem from the block special device {\tt /dev/xd1g}.
                    247: 
                    248: The {\em sel-or-opt} component is either the name of an option required by a
                    249: specific filesystem, or it is the name of a built-in, predefined selector such
                    250: as the architecture type.
                    251: The value may be quoted with double quotes ``{\tt "}'',
                    252: for example {\tt type:="ufs";dev:="/dev/xd1g"}.  These quotes are
                    253: stripped when the value is parsed and there is no way to get a double quote
                    254: into a value field.  Double quotes are used to get white space into a value field,
                    255: which is needed for the program filesystem (\see \Ref{pfs}).
                    256: 
                    257: \label{defaults}A location beginning with a dash ``{\tt -}'' is used
                    258: to specify default values for subsequent locations.
                    259: Any previously specified defaults in the location-list are discarded.  The
                    260: default string can be empty in which case no defaults apply.
                    261: The location {\tt -fs:=/mnt;opts:=ro} would set the local mount point
                    262: to {\tt /mnt} and cause mounts to be read-only by default.
                    263: Defaults specified this way are appended to, and so
                    264: override, any global map defaults given
                    265: with {\tt /defaults}\label{/defaults}).
                    266: A {\tt /defaults} value {\em gdef} and a location list
                    267: \begin{quote}
                    268: ${\tt -}{\em def}_a\ $\verb*+ +$\ {\em loc}_{a_1}\ $\verb*+ +$\ {\em loc}_{a_2}\ $\verb*+ +$\ {\tt -}{\em def}_b\ $\verb*+ +$\ {\em loc}_{b_1}\ \ldots$
                    269: \end{quote}
                    270: is equivalent to
                    271: \begin{quote}
                    272: ${\tt -}{\em gdef}{\tt ;}{\em def}_a\ $\verb*+ +$\ {\em loc}_{a_1}\ $\verb*+ +$\ {\em loc}_{a_2}\ $\verb*+ +$\ {\tt -}{\em gdef}{\tt ;}{\em def}_b\ $\verb*+ +$\ {\em loc}_{b_1}\ \ldots$
                    273: \end{quote}
                    274: 
                    275: \Subsection{Variable expansion}\label{var-expansion}
                    276: 
                    277: To allow generic location specifications \amd\ does variable expansion
                    278: on each location and also on some of the option strings.
                    279: Any option or selector appearing in the form \Var{{\em var}}
                    280: is replaced by the current value of that option or selector.
                    281: For example, if the value of \Var{key} was {\tt bin}, \Var{autodir} was {\tt /a}
                    282: and \Var{fs} was \Var{autodir}{\tt /local/}\Var{key} then after
                    283: expansion \Var{fs} would have the value {\tt /a/local/bin}.
                    284: Any environment variable can be accessed in a similar way.
                    285: 
                    286: Two pathname operators are available when expanding a variable.
                    287: If the variable name begins with ``{\tt /}'' then only the
                    288: last component of then pathname is substituted.  For example,
                    289: if \Var{path} was {\tt /foo/bar} then \Var{/path} would be
                    290: expanded to {\tt bar}.
                    291: Similarly, if the variable name ends with ``{\tt /}'' then all but
                    292: the last component of the pathname is substituted.
                    293: In the previous example, \Var{path/} would be expanded to {\tt /foo}.
                    294: 
                    295: Variable expansion is a two phase process.  Before a location is parsed, all
                    296: references to selectors, \eg\ \Var{path}, are expanded.  The location is then
                    297: parsed, selections are evaluated and option assignments recorded.  If there
                    298: were no selections or they all succeeded the location is used and the values of
                    299: the following options are expanded in the order given:
                    300: \opt{sublink}, \opt{rfs}, \opt{fs}, \opt{opts}, \opt{mount} and \opt{unmount}.
                    301: Note that expansion of option values is done after {\em all} assignments have
                    302: been completed and not in a purely left to right order as is done by the shell.
                    303: This generally has the desired effect but care must be taken if one of the
                    304: options references another, in which case the ordering can become significant.
                    305: 
                    306: There are two special cases concerning variable expansion.  Firstly, before a map
                    307: is consulted, any selectors in the name received from the kernel are expanded.
                    308: For example, if the request from the kernel was for \Var{arch}{\tt .bin} and the
                    309: machine architecture was {\tt vax}, the value given to \Var{key} would be {\tt vax.bin}.
                    310: Secondly, the value of \Var{rhost} is expanded and normalized before the other options
                    311: are expanded.  The normalization process strips any local sub-domain components.
                    312: For example, if \Var{domain} was {\tt Berkeley.EDU} and \Var{rhost} was initially
                    313: {\tt snow.Berkeley.EDU}, after the normalization it would simply be {\tt snow}.
                    314: 
                    315: \Subsection{Selectors}\label{selectors}
                    316: 
                    317: Selectors are used to control the use of a location.
                    318: It is possible to share a mount map between many machines in
                    319: such a way that filesystem location, architecture and operating
                    320: system differences are hidden from the users.
                    321: A selector of the form {\tt arch==sun3;os==sos4} would only apply
                    322: on Sun-3s running SunOS 4.$x$.
                    323: 
                    324: Selectors are evaluated left to right.  If a selector fails then that
                    325: location is ignored.  Thus the selectors form a conjunction and the
                    326: locations form a disjunction.
                    327: If all the locations are ignored or otherwise fail then \amd\ uses
                    328: the {\em error} filesystem (\see \Ref{error-fs}).  This is equivalent
                    329: to having a location {\tt type:=error} at the end of each mount-map
                    330: entry.
                    331: 
                    332: The selectors currently implemented are:
                    333: 
                    334: \begin{list}{}%
                    335: {\settowidth{\labelwidth}{{\tt autodir}}\setlength{\leftmargin}{1.2\labelwidth}}
                    336: \item[\tt arch\hfill]
                    337: the machine architecture which was automatically determined at compile time.
                    338: The architecture type can be displayed by running the command {\tt amd~-v}.
                    339: The currently supported architectures are listed in table \ref{table:arch}.
                    340: \begin{table}[htb]
                    341: \centering
                    342: \begin{tabular}{ll}
                    343: Name           & Architecture \\ \hline
                    344: \tt alliant    & Alliant FX/4 \\
                    345: \tt arm                & Acorn ARM \\
                    346: \tt encore      & Encore (reserved) \\
                    347: \tt fps500     & FPS Model 500 \\
                    348: \tt hp9000     & HP 9000/300 family \\
                    349: \tt hp9k8       & HP 9000/800 family (reserved) \\
                    350: \tt ibm032     & IBM RT \\
                    351: \tt ibm6000    & IBM RISC System/6000 \\
                    352: \tt macII      & Apple Mac II \\
                    353: \tt mips       & MIPS R2000 \\
                    354: \tt multimax   & Encore Multimax \\
                    355: \tt orion105   & HLH Orion 1/05 \\
                    356: \tt powernode  & Gould Powernode family \\
                    357: \tt sun3       & Sun-3 family \\
                    358: \tt sun4       & Sun-4 family \\
                    359: \tt tahoe      & Tahoe family \\
                    360: \tt vax                & DEC \sc Vax \\
                    361: \end{tabular}
                    362: \caption{\label{table:arch}Architectures supported by \amd}
                    363: \end{table}
                    364: 
                    365: \item[\tt autodir\hfill]
                    366: the default directory under which to mount filesystems.
                    367: This may be changed by the ``-a'' command line option.
                    368: See the \opt{fs} option.
                    369: 
                    370: \item[\tt byte\hfill]\label{byte-selector}
                    371: the machine's byte ordering.  This is either {\tt little}, indicating
                    372: little-endian, or {\tt big}, indicating big-endian.
                    373: One possible use is to share {\tt rwho} databases (see \Ref{example:rwho}).
                    374: Another is to share ndbm databases,
                    375: however this use can be considered a courageous juggling act.
                    376: 
                    377: \item[\tt cluster\hfill]
                    378: is provided as a hook for the name of the local cluster.  This can
                    379: be used to decide which servers to use for copies of replicated filesystems.
                    380: \Var{cluster} defaults to the value of \Var{domain} unless a different
                    381: value is set with the ``-C'' command line option.
                    382: 
                    383: \item[\tt domain\hfill]
                    384: the local domain name as specified by the ``-d'' command line option.
                    385: See {\tt host}.
                    386: 
                    387: \item[\tt host\hfill]
                    388: the local hostname as determined by {\bf gethostname}(2).
                    389: If no domain name was specified on the command line
                    390: and the hostname contains a period ``{\tt .}'' then the string
                    391: before the period is used as the host name, and the string
                    392: after the period is assigned to \Var{domain}.
                    393: For example, if the hostname is {\tt styx.doc.ic.ac.uk} the {\tt host}
                    394: would be {\tt styx} and {\tt domain} would be {\tt doc.ic.ac.uk}.
                    395: {\tt hostd} would be {\tt styx.doc.ic.ac.uk}.
                    396: 
                    397: \item[\tt hostd\hfill]
                    398: is \Var{host} and \Var{domain} concatenated with a ``{\tt .}'' inserted between them
                    399: if required.
                    400: If \Var{domain} is an empty string then \Var{host} and \Var{hostd} will
                    401: be identical.
                    402: 
                    403: \item[\tt karch\hfill]
                    404: is provided as a hook for the kernel architecture.  This is used
                    405: on SunOS 4, for example, to distinguish between different {\tt /usr/kvm} volumes.
                    406: \Var{karch} defaults to the value of \Var{arch} unless a different
                    407: value is set with the ``-k'' command line option.
                    408: 
                    409: \item[\tt os\hfill]
                    410: the operating system.
                    411: Like the machine architecture, this is automatically determined at compile time.
                    412: The operating system name can be displayed by running the command {\tt amd~-v}.
                    413: The currently supported operating systems are listed in table \ref{table:os}.
                    414: \begin{table}[htb]
                    415: \centering
                    416: \begin{tabular}{ll}
                    417: Name           & System \\ \hline
                    418: \tt acis43     & 4.3 BSD for IBM RT \\
                    419: \tt aix3       & AIX 3.1 \\
                    420: \tt aux                & System V for Mac-II \\
                    421: \tt bsd44      & 4.4 BSD \\
                    422: \tt concentrix & Concentrix 5.0 \\
                    423: \tt fpx4       & Celerity FPX 4.1/2 \\
                    424: \tt hlh42      & HLH OTS 1.$x$ (4.2 BSD) \\
                    425: \tt hpux       & HP-UX 6.$x$ \\
                    426: \tt riscix     & Acorn RISC iX \\
                    427: \tt sos3       & SunOS 3.4 \& 3.5 \\
                    428: \tt sos4       & SunOS 4.$x$ \\
                    429: \tt umax43     & Umax 4.3 BSD \\
                    430: \tt u2\_2      & Ultrix 2.2 \\
                    431: \tt u3\_0      & Ultrix 3.0 \\
                    432: \tt utx32      & Gould UTX/32 Rel 2.$x$ \\
                    433: \tt xinu43     & mt Xinu MORE/bsd \\
                    434: \end{tabular}
                    435: \caption{\label{table:os}Operating systems supported by \amd}
                    436: \end{table}
                    437: \end{list}
                    438: 
                    439: The following selectors are also provided.  Unlike the other selectors,
                    440: they vary for each lookup.
                    441: Note that when the name from the kernel is expanded prior to a map
                    442: lookup, these selectors are all defined as empty strings.
                    443: \begin{list}{}%
                    444: {\settowidth{\labelwidth}{{\tt autodir}}\setlength{\leftmargin}{1.2\labelwidth}}
                    445: \item[\tt key\hfill]
                    446: the name being resolved.
                    447: For example, if {\tt /home} is an automount point, then accessing
                    448: {\tt /home/foo}\label{foo-path} would set \Var{key} to the string {\tt foo}.
                    449: The key is prefixed by the \opt{pref} option set in the parent mount point.
                    450: The default prefix is an empty string.  If the prefix was {\tt blah/} then
                    451: \Var{key} would be set to {\tt blah/foo}.
                    452: 
                    453: \item[\tt map\hfill]
                    454: the name of the mount map being used.
                    455: 
                    456: \item[\tt path\hfill]
                    457: the full pathname of the name being resolved.  For example {\tt /home/foo}
                    458: in the example above.
                    459: 
                    460: \end{list}
                    461: 
                    462: Selectors can be negated by using {\tt !=} instead of {\tt ==}.
                    463: For example to select a location
                    464: on all non-{\sc Vax} machines the selector {\tt arch!=vax} would be used. 
                    465: 
                    466: \Subsection{Options}\label{options}
                    467: 
                    468: Options are parsed concurrently with selectors.  The difference is that
                    469: when an option is seen the string following the ``{\tt :=}'' is recorded for
                    470: later use.  As a minimum the \opt{type} option must be specified.
                    471: Each filesystem type has other options which must also be specified.
                    472: The filesystem specific options are detailed in \Ref{filesystems}.
                    473: 
                    474: The following options apply to more than one filesystem type:
                    475: \begin{list}{}
                    476: {\settowidth{\labelwidth}{{\tt sublink}}\setlength{\leftmargin}{1.2\labelwidth}}
                    477: \item[\tt delay\hfill]
                    478: the delay, in seconds, before an attempt will be made to mount from the current location.
                    479: Auxilliary data, such as network address, file handles and so on are computed
                    480: regardless of this value.
                    481: A delay can be used to implement the notion of primary and secondary file servers.
                    482: The secondary servers would have a delay of a few seconds,
                    483: thus giving the primary servers a chance to respond first.
                    484: 
                    485: \item[\tt fs\hfill]\label{mount location}
                    486: the local mount point.
                    487: The semantics of this option vary between filesystems.
                    488: 
                    489: For \NFS\ and \UFS\ filesystems the value of \Var{fs} is used as the local
                    490: mount point.  It is important that this string uniquely identifies the
                    491: filesystem being mounted.  To satisfy this requirement, it should contain the
                    492: name of the host on which the filesystem is resident and the pathname
                    493: of the filesystem on the local or remote host.
                    494: 
                    495: The reason for
                    496: requiring the hostname is clear if replicated filesystems are considered.
                    497: If a fileserver goes down and a replacement filesystem is mounted then the {\em local}
                    498: mount point {\em must} be different from that of the filesystem which
                    499: is hung.
                    500: Some encoding of the filesystem name is required if more than one filesystem
                    501: is to be mounted from any given host.
                    502: 
                    503: If the hostname is first in the path then all mounts from a particular
                    504: host will be gathered below a single directory.  If that server goes
                    505: down then the hung mount points are less likely to be accidentally referenced,
                    506: for example when {\bf getwd}(3) traverses the namespace to find the pathname
                    507: of the current directory.
                    508: 
                    509: The {\tt fs} defaults to \Var{autodir}/\Var{rhost}\Var{rfs}.
                    510: In addition, {\tt rhost} defaults to the local host name (\Var{host}) and
                    511: {\tt rfs} defaults to the value of \Var{path}, which
                    512: is the full path of the requested file; {\tt /home/foo}
                    513: in the example above (\see \Ref{foo-path}).
                    514: \Var{autodir} defaults to {\tt /a} but may be changed with the ``-a''
                    515: command line option\footnote{Sun's automounter defaults to {\tt /tmp\_mnt}}.
                    516: Note that there is no ``{\tt /}'' between the \Var{rhost} and \Var{rfs} since
                    517: \Var{rfs} begins with a ``{\tt /}''.
                    518: 
                    519: \item[\tt opts\hfill]
                    520: the options to pass to the mount system call.
                    521: A leading ``{\tt -}'' is silently ignored.
                    522: The mount options supported generally correspond to
                    523: those used by {\bf mount}(8) and are listed in table \ref{table:mount opts}.
                    524: Some additional pseudo-options are interpreted by \amd\ and
                    525: are listed in table \ref{table:pseudo-mount opts}.
                    526: Unless specifically overridden, each of the system default mount
                    527: options applies.
                    528: Any options not recognised are ignored.
                    529: If no options list is supplied the string {\tt rw,defaults} is used
                    530: and all the system default mount options apply.
                    531: \begin{table}[htb]
                    532: \centering
                    533: \begin{tabular}{lp{4in}}
                    534: Option         & Semantics \\\hline
                    535: \tt grpid      & Use BSD directory group-id semantics. \\
                    536: \tt intr       & Allow keyboard interrupts on hard mounts. \\
                    537: \tt nodevs     & Don't allow local special devices on this filesystem. \\
                    538: \tt nosuid     & Don't allow set-uid or set-gid executables on this filesystem. \\
                    539: \tt quota      & Enable quota checking on this mount. \\
                    540: \tt retrans=$n$        & The number of \NFS\ retransmits made before a user error is generated
                    541:                  by a {\tt soft} mounted filesystem, and before a
                    542:                  {\tt hard} mounted filesystem reports {\tt NFS server {\em yoyo}
                    543:                  not responding still trying}. \\
                    544: \tt ro         & Mount this filesystem readonly. \\
                    545: \tt soft       & Give up after {\em retrans} retransmissions. \\
                    546: \tt tcp                & Use TCP/IP instead of UDP/IP \\
                    547: \tt timeo=$n$  & The \NFS\ timeout, in tenth-seconds, before a request is retransmitted. \\
                    548: \end{tabular}
                    549: \caption{Mount options passed to the mount system call\label{table:mount opts}}
                    550: \end{table}
                    551: 
                    552: \begin{table}[htb]
                    553: \centering
                    554: \begin{tabular}{lp{4in}}
                    555: Option         & Semantics \\\hline
                    556: \tt notimeout  & Configures the mount so that its time-to-live will
                    557:                  never expire.  This is also the default for some
                    558:                  filesystem types. \\
                    559: %
                    560: % Implementation broken:
                    561: \tt ping=$n$   & The interval, in seconds, between keep-alive pings.  When four
                    562:                  consecutive pings have failed the mount point is
                    563:                  marked as hung.  This interval defaults to 30 seconds.
                    564:                  If the ping interval is negative, no pings are sent and
                    565:                  the host is assumed to be always up.  Pings are never sent
                    566:                  for a TCP mount.  \\
                    567: 
                    568: \tt retry=$n$  & The number of times to retry the mount system call. \\
                    569: \tt utimeout=$n$& The interval, in seconds, by which the mount's
                    570:                  time-to-live\label{opt:utimeout}
                    571:                  is extended after an unmount attempt has failed.
                    572:                  In fact the interval is extended before the unmount
                    573:                  is attempted to avoid thrashing.  The default value
                    574:                   is 120 seconds (two minutes) or as set by the ``-w''
                    575:                   command line option. \\
                    576: \end{tabular}
                    577: \caption{Mount options interpreted by \amd\label{table:pseudo-mount opts}}
                    578: \end{table}
                    579: 
                    580: \item[\tt sublink\hfill]
                    581: the subdirectory within the mounted filesystem to which the reference
                    582: should point.
                    583: This can be used to prevent duplicate mounts in cases where multiple
                    584: directories in the same mounted filesystem are used.
                    585: 
                    586: \item[\tt type\hfill]
                    587: the filesystem type to be used.  A full description of each
                    588: type is given in \Ref{filesystems}.
                    589: 
                    590: \end{list}
                    591: 
                    592: Superfluous option specifications are ignored and are not reported
                    593: as errors.

unix.superglobalmegacorp.com

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