summaryrefslogtreecommitdiffstats
path: root/usr.sbin/amd/doc/amdref.texinfo
diff options
context:
space:
mode:
Diffstat (limited to 'usr.sbin/amd/doc/amdref.texinfo')
-rw-r--r--usr.sbin/amd/doc/amdref.texinfo4557
1 files changed, 0 insertions, 4557 deletions
diff --git a/usr.sbin/amd/doc/amdref.texinfo b/usr.sbin/amd/doc/amdref.texinfo
deleted file mode 100644
index c305e14..0000000
--- a/usr.sbin/amd/doc/amdref.texinfo
+++ /dev/null
@@ -1,4557 +0,0 @@
-\input texinfo @c -*-texinfo-*-
-@c
-@c Copyright (c) 1989 Jan-Simon Pendry
-@c Copyright (c) 1989 Imperial College of Science, Technology & Medicine
-@c Copyright (c) 1989 The Regents of the University of California.
-@c All rights reserved.
-@c
-@c This code is derived from software contributed to Berkeley by
-@c Jan-Simon Pendry at Imperial College, London.
-@c
-@c Redistribution and use in source and binary forms, with or without
-@c modification, are permitted provided that the following conditions
-@c are met:
-@c 1. Redistributions of source code must retain the above copyright
-@c notice, this list of conditions and the following disclaimer.
-@c 2. Redistributions in binary form must reproduce the above copyright
-@c notice, this list of conditions and the following disclaimer in the
-@c documentation and/or other materials provided with the distribution.
-@c 3. All advertising materials mentioning features or use of this software
-@c must display the following acknowledgement:
-@c This product includes software developed by the University of
-@c California, Berkeley and its contributors.
-@c 4. Neither the name of the University nor the names of its contributors
-@c may be used to endorse or promote products derived from this software
-@c without specific prior written permission.
-@c
-@c THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-@c ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-@c IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-@c ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-@c FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-@c DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-@c OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-@c HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-@c LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-@c OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-@c
-@c @(#)amdref.texinfo 8.1 (Berkeley) 6/6/93
-@c
-@c $Id: amdref.texinfo,v 1.4 1997/02/22 16:03:12 peter Exp $
-@c
-@setfilename amdref.info
-@c @setfilename /usr/local/emacs/info/amd
-@tex
-\overfullrule=0pt
-@end tex
-
-@settitle 4.4 BSD Automounter Reference Manual
-@titlepage
-@sp 6
-@center @titlefont{Amd}
-@sp 2
-@center @titlefont{The 4.4 BSD Automounter}
-@sp 2
-@center @titlefont{Reference Manual}
-@sp 2
-@center @authorfont{Jan-Simon Pendry}
-@sp
-@center @i{and}
-@sp
-@center @authorfont{Nick Williams}
-@sp 4
-@center Last updated March 1991
-@center Documentation for software revision 5.3 Alpha
-@page
-Copyright @copyright{} 1989 Jan-Simon Pendry
-@sp -1
-Copyright @copyright{} 1989 Imperial College of Science, Technology & Medicine
-@sp -1
-Copyright @copyright{} 1989 The Regents of the University of California.
-@sp 0
-All Rights Reserved.
-@vskip 1ex
-Permission to copy this document, or any portion of it, as
-necessary for use of this software is granted provided this
-copyright notice and statement of permission are included.
-@end titlepage
-@page
-@ifinfo
-@node Top, License, , (DIR)
-
-Amd - The 4.4 BSD Automounter
-*****************************
-
-Amd is the 4.4 BSD Automounter. This Info file describes how
-to use and understand Amd.
-@end ifinfo
-
-@menu
-* License:: Explains the terms and conditions for using
- and distributing Amd.
-* Distrib:: How to get the latest Amd distribution.
-* Intro:: An introduction to Automounting concepts.
-* Overview:: An overview of Amd.
-* Supported Platforms:: Machines and Systems supported by Amd.
-* Mount Maps:: Details of mount maps
-* Amd Command Line Options:: All the Amd command line options explained.
-* Filesystem Types:: The different mount types supported by Amd.
-* Run-time Administration:: How to start, stop and control Amd.
-* FSinfo:: The FSinfo filesystem management tool.
-* Internals:: Internals.
-* Acknowledgements & Trademarks:: Legal notes.
-* Examples:: Some examples showing how Amd might be used.
-* Internals:: Implementation details.
-* Acknowledgements & Trademarks::
-
-Indexes
-* Index:: An item for each concept.
-@end menu
-
-@iftex
-@unnumbered Preface
-
-This manual documents the use of the 4.4 BSD automounter---@i{Amd}.
-This is primarily a reference manual. Unfortunately, no tutorial
-exists.
-
-This manual comes in two forms: the published form and the Info form.
-The Info form is for on-line perusal with the INFO program which is
-distributed along with GNU Emacs. Both forms contain substantially the
-same text and are generated from a common source file, which is
-distributed with the @i{Amd} source.
-@end iftex
-
-@node License, Distrib, Top, Top
-@unnumbered License
-@cindex License Information
-
-@i{Amd} is not in the public domain; it is copyrighted and there are
-restrictions on its distribution.
-
-Redistribution and use in source and binary forms are permitted provided
-that: (1) source distributions retain this entire copyright notice and
-comment, and (2) distributions including binaries display the following
-acknowledgement: ``This product includes software developed by The
-University of California, Berkeley and its Contributors'' in the
-documentation or other materials provided with the distribution and in
-all advertising materials mentioning features or use of this software.
-neither the name of the University nor the names of its Contributors may
-be used to endorse or promote products derived from this software
-without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
-WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
-
-@node Distrib, Intro, License, Top
-@unnumbered Source Distribution
-@cindex Source code distribution
-@cindex Obtaining the source code
-
-If you have access to the Internet, you can get the latest distribution
-version of @i{Amd} from host @file{usc.edu} using anonymous FTP. Move to
-the directory @file{/pub/amd} on that host and fetch the file @file{amd.tar.Z}.
-
-If you are in the UK, you can get the latest distribution version of
-@i{Amd} from the UKnet info-server. Start by sending email to
-@file{info-server@@doc.ic.ac.uk}.
-
-Sites on the UK JANET network can get the latest distribution by using
-anonymous NIFTP to fetch the file @samp{<AMD>amd.tar.Z} from host
-@samp{uk.ac.imperial.doc.src}.
-
-Revision 5.2 was part of the 4.3 BSD Reno distribution.
-
-Revision 5.3bsdnet, a late alpha version of 5.3, was part
-of the BSD network version 2 distribution
-
-@unnumberedsec Bug Reports
-@cindex Bug reports
-
-Send all bug reports to @file{jsp@@doc.ic.ac.uk} quoting the details of
-the release and your configuration. These can be obtained by running
-the command @samp{amd -v}.
-
-@unnumberedsec Mailing List
-@cindex Mailing list
-
-There is a mailing list for people interested in keeping uptodate with
-developments. To subscribe, send a note to @file{amd-workers-request@@acl.lanl.gov}.
-
-@node Intro, Overview, Distrib, Top
-@unnumbered Introduction
-@cindex Introduction
-
-An @dfn{automounter} maintains a cache of mounted filesystems.
-Filesystems are mounted on demand when they are first referenced,
-and unmounted after a period of inactivity.
-
-@i{Amd} may be used as a replacement for Sun's automounter. The choice
-of which filesystem to mount can be controlled dynamically with
-@dfn{selectors}. Selectors allow decisions of the form ``hostname is
-@var{this},'' or ``architecture is not @var{that}.'' Selectors may be
-combined arbitrarily. @i{Amd} also supports a variety of filesystem
-types, including NFS, UFS and the novel @dfn{program} filesystem. The
-combination of selectors and multiple filesystem types allows identical
-configuration files to be used on all machines so reducing the
-administrative overhead.
-
-@i{Amd} ensures that it will not hang if a remote server goes down.
-Moreover, @i{Amd} can determine when a remote server has become
-inaccessible and then mount replacement filesystems as and when they
-become available.
-
-@i{Amd} contains no proprietary source code and has been ported to
-numerous flavours of Unix.
-
-@node Overview, Supported Platforms, Intro, Top
-@chapter Overview
-
-@i{Amd} maintains a cache of mounted filesystems. Filesystems are
-@dfn{demand-mounted} when they are first referenced, and unmounted after
-a period of inactivity. @i{Amd} may be used as a replacement for Sun's
-@b{automount}(8) program. It contains no proprietary source code and
-has been ported to numerous flavours of Unix. @xref{Supported Operating
-Systems}.@refill
-
-@i{Amd} was designed as the basis for experimenting with filesystem
-layout and management. Although @i{Amd} has many direct applications it
-is loaded with additional features which have little practical use. At
-some point the infrequently used components may be removed to streamline
-the production system.
-
-@c @i{Amd} supports the notion of @dfn{replicated} filesystems by evaluating
-@c each member of a list of possible filesystem locations in parallel.
-@c @i{Amd} checks that each cached mapping remains valid. Should a mapping be
-@c lost -- such as happens when a fileserver goes down -- @i{Amd} automatically
-@c selects a replacement should one be available.
-@c
-@menu
-* Fundamentals::
-* Filesystems and Volumes::
-* Volume Naming::
-* Volume Binding::
-* Operational Principles::
-* Mounting a Volume::
-* Automatic Unmounting::
-* Keep-alives::
-* Non-blocking Operation::
-@end menu
-
-@node Fundamentals, Filesystems and Volumes, Overview, Overview
-@comment node-name, next, previous, up
-@section Fundamentals
-@cindex Automounter fundamentals
-
-The fundamental concept behind @i{Amd} is the ability to separate the
-name used to refer to a file from the name used to refer to its physical
-storage location. This allows the same files to be accessed with the
-same name regardless of where in the network the name is used. This is
-very different from placing @file{/n/hostname} in front of the pathname
-since that includes location dependent information which may change if
-files are moved to another machine.
-
-By placing the required mappings in a centrally administered database,
-filesystems can be re-organised without requiring changes to
-configuration files, shell scripts and so on.
-
-@node Filesystems and Volumes, Volume Naming, Fundamentals, Overview
-@comment node-name, next, previous, up
-@section Filesystems and Volumes
-@cindex Filesystem
-@cindex Volume
-@cindex Fileserver
-@cindex sublink
-
-@i{Amd} views the world as a set of fileservers, each containg one or
-more filesystems where each filesystem contains one or more
-@dfn{volumes}. Here the term @dfn{volume} is used to refer to a
-coherent set of files such as a user's home directory or a @TeX{}
-distribution.@refill
-
-In order to access the contents of a volume, @i{Amd} must be told in
-which filesystem the volume resides and which host owns the filesystem.
-By default the host is assumed to be local and the volume is assumed to
-be the entire filesystem. If a filesystem contains more than one
-volume, then a @dfn{sublink} is used to refer to the sub-directory
-within the filesystem where the volume can be found.
-
-@node Volume Naming, Volume Binding, Filesystems and Volumes, Overview
-@comment node-name, next, previous, up
-@section Volume Naming
-@cindex Volume names
-@cindex Network-wide naming
-@cindex Replicated volumes
-@cindex Duplicated volumes
-@cindex Replacement volumes
-
-Volume names are defined to be unique across the entire network. A
-volume name is the pathname to the volume's root as known by the users
-of that volume. Since this name uniquely identifies the volume
-contents, all volumes can be named and accessed from each host, subject
-to administrative controls.
-
-Volumes may be replicated or duplicated. Replicated volumes contain
-identical copies of the same data and reside at two or more locations in
-the network. Each of the replicated volumes can be used
-interchangeably. Duplicated volumes each have the same name but contain
-different, though functionally identical, data. For example,
-@samp{/vol/tex} might be the name of a @TeX{} distribution which varied
-for each machine architecture.@refill
-
-@i{Amd} provides facilities to take advantage of both replicated and
-duplicated volumes. Configuration options allow a single set of
-configuration data to be shared across an entire network by taking
-advantage of replicated and duplicated volumes.
-
-@i{Amd} can take advantage of replacement volumes by mounting them as
-required should an active fileserver become unavailable.
-
-@node Volume Binding, Operational Principles, Volume Naming, Overview
-@comment node-name, next, previous, up
-@section Volume Binding
-@cindex Volume binding
-@cindex Unix namespace
-@cindex Namespace
-@cindex Binding names to filesystems
-
-Unix implements a namespace of hierarchically mounted filesystems. Two
-forms of binding between names and files are provided. A @dfn{hard
-link} completes the binding when the name is added to the filesystem. A
-@dfn{soft link} delays the binding until the name is accessed. An
-@dfn{automounter} adds a further form in which the binding of name to
-filesystem is delayed until the name is accessed.@refill
-
-The target volume, in its general form, is a tuple (host, filesystem,
-sublink) which can be used to name the physical location of any volume
-in the network.
-
-When a target is referenced, @i{Amd} ignores the sublink element and
-determines whether the required filesystem is already mounted. This is
-done by computing the local mount point for the filesystem and checking
-for an existing filesystem mounted at the same place. If such a
-filesystem already exists then it is assumed to be functionally
-identical to the target filesystem. By default there is a one-to-one
-mapping between the pair (host, filesystem) and the local mount point so
-this assumption is valid.
-
-@node Operational Principles, Mounting a Volume, Volume Binding, Overview
-@comment node-name, next, previous, up
-@section Operational Principles
-@cindex Operational principles
-
-@i{Amd} operates by introducing new mount points into the namespace.
-These are called @dfn{automount} points. The kernel sees these
-automount points as NFS filesystems being served by @i{Amd}. Having
-attached itself to the namespace, @i{Amd} is now able to control the
-view the rest of the system has of those mount points. RPC calls are
-received from the kernel one at a time.
-
-When a @dfn{lookup} call is received @i{Amd} checks whether the name is
-already known. If it is not, the required volume is mounted. A
-symbolic link pointing to the volume root is then returned. Once the
-symbolic link is returned, the kernel will send all other requests
-direct to the mounted filesystem.
-
-If a volume is not yet mounted, @i{Amd} consults a configuration
-@dfn{mount-map} corresponding to the automount point. @i{Amd} then
-makes a runtime decision on what and where to mount a filesystem based
-on the information obtained from the map.
-
-@i{Amd} does not implement all the NFS requests; only those relevant
-to name binding such as @dfn{lookup}, @dfn{readlink} and @dfn{readdir}.
-Some other calls are also implemented but most simply return an error
-code; for example @dfn{mkdir} always returns ``read-only filesystem''.
-
-@node Mounting a Volume, Automatic Unmounting, Operational Principles, Overview
-@comment node-name, next, previous, up
-@section Mounting a Volume
-@cindex Mounting a volume
-@cindex Location lists
-@cindex Alternate locations
-@cindex Mount retries
-@cindex Background mounts
-
-Each automount point has a corresponding mount map. The mount map
-contains a list of key--value pairs. The key is the name of the volume
-to be mounted. The value is a list of locations describing where the
-filesystem is stored in the network. In the source for the map the
-value would look like
-
-@display
-location1 location2 @dots{} locationN
-@end display
-
-@i{Amd} examines each location in turn. Each location may contain
-@dfn{selectors} which control whether @i{Amd} can use that location.
-For example, the location may be restricted to use by certain hosts.
-Those locations which cannot be used are ignored.
-
-@i{Amd} attempts to mount the filesystem described by each remaining
-location until a mount succeeds or @i{Amd} can no longer proceed. The
-latter can occur in three ways:
-
-@itemize @bullet
-@item
-If none of the locations could be used, or if all of the locations
-caused an error, then the last error is returned.
-
-@item
-If a location could be used but was being mounted in the background then
-@i{Amd} marks that mount as being ``in progress'' and continues with
-the next request; no reply is sent to the kernel.
-
-@item
-Lastly, one or more of the mounts may have been @dfn{deferred}. A mount
-is deferred if extra information is required before the mount can
-proceed. When the information becomes available the mount will take
-place, but in the mean time no reply is sent to the kernel. If the
-mount is deferred, @i{Amd} continues to try any remaining locations.
-@end itemize
-
-Once a volume has been mounted, @i{Amd} establishes a @dfn{volume
-mapping} which is used to satisfy subsequent requests.@refill
-
-@node Automatic Unmounting, Keep-alives, Mounting a Volume, Overview
-@comment node-name, next, previous, up
-@section Automatic Unmounting
-
-To avoid an ever increasing number of filesystem mounts, @i{Amd} removes
-volume mappings which have not been used recently. A time-to-live
-interval is associated with each mapping and when that expires the
-mapping is removed. When the last reference to a filesystem is removed,
-that filesystem is unmounted. If the unmount fails, for example the
-filesystem is still busy, the mapping is re-instated and its
-time-to-live interval is extended. The global default for this grace
-period is controlled by the ``-w'' command-line option (@pxref{-w
-Option, -w}). It is also possible to set this value on a per-mount
-basis (@pxref{opts Option, opts, opts}).@refill
-
-Filesystems can be forcefully timed out using the @i{Amq} command.
-@xref{Run-time Administration}.
-
-@node Keep-alives, Non-blocking Operation, Automatic Unmounting, Overview
-@comment node-name, next, previous, up
-@section Keep-alives
-@cindex Keep-alives
-@cindex Server crashes
-@cindex NFS ping
-
-Use of some filesystem types requires the presence of a server on
-another machine. If a machine crashes then it is of no concern to
-processes on that machine that the filesystem is unavailable. However,
-to processes on a remote host using that machine as a fileserver this
-event is important. This situation is most widely recognised when an
-NFS server crashes and the behaviour observed on client machines is that
-more and more processes hang. In order to provide the possibility of
-recovery, @i{Amd} implements a @dfn{keep-alive} interval timer for some
-filesystem types. Currently only NFS makes use of this service.
-
-The basis of the NFS keep-alive implementation is the observation that
-most sites maintain replicated copies of common system data such as
-manual pages, most or all programs, system source code and so on. If
-one of those servers goes down it would be reasonable to mount one of
-the others as a replacement.
-
-The first part of the process is to keep track of which fileservers are
-up and which are down. @i{Amd} does this by sending RPC requests to the
-servers' NFS @code{NullProc} and checking whether a reply is returned.
-While the server state is uncertain the requests are re-transmitted at
-three second intervals and if no reply is received after four attempts
-the server is marked down. If a reply is received the fileserver is
-marked up and stays in that state for 30 seconds at which time another
-NFS ping is sent.
-
-Once a fileserver is marked down, requests continue to be sent every 30
-seconds in order to determine when the fileserver comes back up. During
-this time any reference through @i{Amd} to the filesystems on that
-server fail with the error ``Operation would block''. If a replacement
-volume is available then it will be mounted, otherwise the error is
-returned to the user.
-
-@c @i{Amd} keeps track of which servers are up and which are down.
-@c It does this by sending RPC requests to the servers' NFS {\sc NullProc} and
-@c checking whether a reply is returned. If no replies are received after a
-@c short period, @i{Amd} marks the fileserver @dfn{down}.
-@c RPC requests continue to be sent so that it will notice when a fileserver
-@c comes back up.
-@c ICMP echo packets \cite{rfc:icmp} are not used because it is the availability
-@c of the NFS service that is important, not the existence of a base kernel.
-@c Whenever a reference to a fileserver which is down is made via @i{Amd}, an alternate
-@c filesystem is mounted if one is available.
-@c
-Although this action does not protect user files, which are unique on
-the network, or processes which do not access files via @i{Amd} or
-already have open files on the hung filesystem, it can prevent most new
-processes from hanging.
-
-By default, fileserver state is not maintained for NFS/TCP mounts. The
-remote fileserver is always assumed to be up.
-@c
-@c With a suitable combination of filesystem management and mount-maps,
-@c machines can be protected against most server downtime. This can be
-@c enhanced by allocating boot-servers dynamically which allows a diskless
-@c workstation to be quickly restarted if necessary. Once the root filesystem
-@c is mounted, @i{Amd} can be started and allowed to mount the remainder of
-@c the filesystem from whichever fileservers are available.
-
-@node Non-blocking Operation, , Keep-alives, Overview
-@comment node-name, next, previous, up
-@section Non-blocking Operation
-@cindex Non-blocking operation
-@cindex Multiple-threaded server
-@cindex RPC retries
-
-Since there is only one instance of @i{Amd} for each automount point,
-and usually only one instance on each machine, it is important that it
-is always available to service kernel calls. @i{Amd} goes to great
-lengths to ensure that it does not block in a system call. As a last
-resort @i{Amd} will fork before it attempts a system call that may block
-indefinitely, such as mounting an NFS filesystem. Other tasks such as
-obtaining filehandle information for an NFS filesystem, are done using a
-purpose built non-blocking RPC library which is integrated with
-@i{Amd}'s task scheduler. This library is also used to implement NFS
-keep-alives (@pxref{Keep-alives}).
-
-Whenever a mount is deferred or backgrounded, @i{Amd} must wait for it
-to complete before replying to the kernel. However, this would cause
-@i{Amd} to block waiting for a reply to be constructed. Rather than do
-this, @i{Amd} simply @dfn{drops} the call under the assumption that the
-kernel RPC mechanism will automatically retry the request.
-
-@node Supported Platforms, Mount Maps, Overview, Top
-@comment node-name, next, previous, up
-@chapter Supported Platforms
-
-@i{Amd} has been ported to a wide variety of machines and operating systems.
-The table below lists those platforms supported by the current release.
-
-@menu
-* Supported Operating Systems::
-* Supported Machine Architectures::
-@end menu
-
-@node Supported Operating Systems, Supported Machine Architectures, Supported Platforms, Supported Platforms
-@comment node-name, next, previous, up
-@section Supported Operating Systems
-@cindex Operating system names
-@cindex Operating systems supported by Amd
-@cindex Supported operating systems
-
-The following operating systems are currently supported by @i{Amd}.
-@i{Amd}'s conventional name for each system is given.
-
-@table @code
-@item acis43
-4.3 BSD for IBM RT. Contributed by Jan-Simon Pendry @t{<jsp@@doc.ic.ac.uk>}
-@item aix3
-AIX 3.1. Contributed by Jan-Simon Pendry @t{<jsp@@doc.ic.ac.uk>}
-@item aux
-System V for Mac-II. Contributed by Julian Onions @t{<jpo@@cs.nott.ac.uk>}
-@item bsd44
-4.4 BSD. Contributed by Jan-Simon Pendry @t{<jsp@@doc.ic.ac.uk>}
-@item concentrix
-Concentrix 5.0. Contributed by Sjoerd Mullender @t{<sjoerd@@cwi.nl>}
-@item convex
-Convex OS 7.1. Contributed by Eitan Mizrotsky @t{<eitan@@shumuji.ac.il>}
-@item dgux
-Data General DG/UX. Contributed by Mark Davies @t{<mark@@comp.vuw.ac.nz>}
-@item fpx4
-Celerity FPX 4.1/2. Contributed by Stephen Pope @t{<scp@@grizzly.acl.lanl.gov>}
-@item hcx
-Harris HCX/UX. Contributed by Chris Metcalf @t{<metcalf@@masala.lcs.mit.edu>}
-@item hlh42
-HLH OTS 1.@i{x} (4.2 BSD). Contributed by Jan-Simon Pendry @t{<jsp@@doc.ic.ac.uk>}
-@item hpux
-HP-UX 6.@i{x} or 7.0. Contributed by Jan-Simon Pendry @t{<jsp@@doc.ic.ac.uk>}
-@item irix
-SGI Irix. Contributed by Scott R. Presnell @t{<srp@@cgl.ucsf.edu>}
-@item next
-Mach for NeXT. Contributed by Bill Trost @t{<trost%reed@@cse.ogi.edu>}
-@item pyrOSx
-Pyramid OSx. Contributed by Stefan Petri @t{<petri@@tubsibr.UUCP>}
-@item riscix
-Acorn RISC iX. Contributed by Piete Brooks @t{<pb@@cam.cl.ac.uk>}
-@item sos3
-SunOS 3.4 & 3.5. Contributed by Jan-Simon Pendry @t{<jsp@@doc.ic.ac.uk>}
-@item sos4
-SunOS 4.@i{x}. Contributed by Jan-Simon Pendry @t{<jsp@@doc.ic.ac.uk>}
-@item u2_2
-Ultrix 2.2. Contributed by Piete Brooks @t{<pb@@cam.cl.ac.uk>}
-@item u3_0
-Ultrix 3. Contributed by Piete Brooks @t{<pb@@cam.cl.ac.uk>}
-@item u4_0
-Ultrix 4.0. Contributed by Chris Lindblad @t{<cjl@@ai.mit.edu>}
-@item umax43
-Umax 4.3 BSD. Contributed by Sjoerd Mullender @t{<sjoerd@@cwi.nl>}
-@item utek
-Utek 4.0. Contributed by Bill Trost @t{<trost%reed@@cse.ogi.edu>}
-@item xinu43
-mt Xinu MORE/bsd. Contributed by Jan-Simon Pendry @t{<jsp@@doc.ic.ac.uk>}
-@end table
-
-@node Supported Machine Architectures, , Supported Operating Systems, Supported Platforms
-@comment node-name, next, previous, up
-@section Supported Machine Architectures
-@cindex Supported machine architectures
-@cindex Machine architecture names
-@cindex Machine architectures supported by Amd
-
-@table @code
-@item alliant
-Alliant FX/4
-@item arm
-Acorn ARM
-@item aviion
-Data General AViiON
-@item encore
-Encore
-@item fps500
-FPS Model 500
-@item hp9000
-HP 9000/300 family
-@item hp9k8
-HP 9000/800 family
-@item ibm032
-IBM RT
-@item ibm6000
-IBM RISC System/6000
-@item iris4d
-SGI Iris 4D
-@item macII
-Apple Mac II
-@item mips
-MIPS RISC
-@item multimax
-Encore Multimax
-@item orion105
-HLH Orion 1/05
-@item sun3
-Sun-3 family
-@item sun4
-Sun-4 family
-@item tahoe
-Tahoe family
-@item vax
-DEC Vax
-@end table
-
-@node Mount Maps, Amd Command Line Options, Supported Platforms, Top
-@comment node-name, next, previous, up
-@chapter Mount Maps
-@cindex Mount maps
-@cindex Automounter configuration maps
-@cindex Mount information
-
-@i{Amd} has no built-in knowledge of machines or filesystems.
-External @dfn{mount-maps} are used to provide the required information.
-Specifically, @i{Amd} needs to know when and under what conditions it
-should mount filesystems.
-
-The map entry corresponding to the requested name contains a list of
-possible locations from which to resolve the request. Each location
-specifies filesystem type, information required by that filesystem (for
-example the block special device in the case of UFS), and some
-information describing where to mount the filesystem (@pxref{fs Option}). A
-location may also contain @dfn{selectors} (@pxref{Selectors}).@refill
-
-@menu
-* Map Types::
-* Key Lookup::
-* Location Format::
-@end menu
-
-@node Map Types, Key Lookup, Mount Maps, Mount Maps
-@comment node-name, next, previous, up
-@section Map Types
-@cindex Mount map types
-@cindex Map types
-@cindex Configuration map types
-@cindex Types of mount map
-@cindex Types of configuration map
-@cindex Determining the map type
-
-A mount-map provides the run-time configuration information to @i{Amd}.
-Maps can be implemented in many ways. Some of the forms supported by
-@i{Amd} are regular files, ndbm databases, NIS maps the @dfn{Hesiod}
-name server and even the password file.
-
-A mount-map @dfn{name} is a sequence of characters. When an automount
-point is created a handle on the mount-map is obtained. For each map
-type configured @i{Amd} attempts to reference the a map of the
-appropriate type. If a map is found, @i{Amd} notes the type for future
-use and deletes the reference, for example closing any open file
-descriptors. The available maps are configure when @i{Amd} is built and
-can be displayed by running the command @samp{amd -v}.
-
-By default, @i{Amd} caches data in a mode dependent on the type of map.
-This is the same as specifying @samp{cache:=mapdefault} and selects a
-suitable default cache mode depending on the map type. The individual
-defaults are described below. The @var{cache} option can be specified
-on automount points to alter the caching behaviour (@pxref{Automount
-Filesystem}).@refill
-
-The following map types have been implemented, though some are not
-available on all machines. Run the command @samp{amd -v} to obtain a
-list of map types configured on your machine.
-
-@menu
-* File maps::
-* ndbm maps::
-* NIS maps::
-* Hesiod maps::
-* Password maps::
-* Union maps::
-@end menu
-
-@node File maps, ndbm maps, Map Types, Map Types
-@comment node-name, next, previous, up
-@subsection File maps
-@cindex File maps
-@cindex Flat file maps
-@cindex File map syntactic conventions
-
-When @i{Amd} searches a file for a map entry it does a simple scan of
-the file and supports both comments and continuation lines.
-
-Continuation lines are indicated by a backslash character (@samp{\}) as
-the last character of a line in the file. The backslash, newline character
-@emph{and any leading white space on the following line} are discarded. A maximum
-line length of 2047 characters is enforced after continuation lines are read
-but before comments are stripped. Each line must end with
-a newline character; that is newlines are terminators, not separators.
-The following examples illustrate this:
-
-@example
-key valA valB; \
- valC
-@end example
-
-specifies @emph{three} locations, and is identical to
-
-@example
-key valA valB; valC
-@end example
-
-However,
-
-@example
-key valA valB;\
- valC
-@end example
-
-specifies only @emph{two} locations, and is identical to
-
-@example
-key valA valB;valC
-@end example
-
-After a complete line has been read from the file, including
-continuations, @i{Amd} determines whether there is a comment on the
-line. A comment begins with a hash (``@samp{#}'') character and
-continues to the end of the line. There is no way to escape or change
-the comment lead-in character.
-
-Note that continuation lines and comment support @dfn{only} apply to
-file maps, or ndbm maps built with the @code{mk-amd-map} program.
-
-When caching is enabled, file maps have a default cache mode of
-@code{all} (@pxref{Automount Filesystem}).
-
-@node ndbm maps, NIS maps, File maps, Map Types
-@comment node-name, next, previous, up
-@subsection ndbm maps
-@cindex ndbm maps
-
-An ndbm map may be used as a fast access form of a file map. The program,
-@code{mk-amd-map}, converts a normal map file into an ndbm database.
-This program supports the same continuation and comment conventions that
-are provided for file maps. Note that ndbm format files may @emph{not}
-be sharable across machine architectures. The notion of speed generally
-only applies to large maps; a small map, less than a single disk block,
-is almost certainly better implemented as a file map.
-
-ndbm maps do not support cache mode @samp{all} and, when caching is
-enabled, have a default cache mode of @samp{inc} (@pxref{Automount Filesystem}).
-
-@node NIS maps, Hesiod maps, ndbm maps, Map Types
-@comment node-name, next, previous, up
-@subsection NIS maps
-@cindex NIS (YP) maps
-
-When using NIS (formerly YP), an @i{Amd} map is implemented directly
-by the underlying NIS map. Comments and continuation lines are
-@emph{not} supported in the automounter and must be stripped when
-constructing the NIS server's database.
-
-NIS maps do not support cache mode @code{all} and, when caching is
-enabled, have a default cache mode of @code{inc} (@pxref{Automount Filesystem}).
-
-The following rule illustrates what could be added to your NIS @file{Makefile},
-in this case causing the @file{amd.home} map to be rebuilt:
-@example
-$(YPTSDIR)/amd.home.time: $(ETCDIR)/amd.home
- -@@sed -e "s/#.*$$//" -e "/^$$/d" $(ETCDIR)/amd.home | \
- awk '@{ \
- for (i = 1; i <= NF; i++) \
- if (i == NF) @{ \
- if (substr($$i, length($$i), 1) == "\\") \
- printf("%s", substr($$i, 1, length($$i) - 1)); \
- else \
- printf("%s\n", $$i); \
- @} \
- else \
- printf("%s ", $$i); \
- @}' | \
- $(MAKEDBM) - $(YPDBDIR)/amd.home; \
- touch $(YPTSDIR)/amd.home.time; \
- echo "updated amd.home"; \
- if [ ! $(NOPUSH) ]; then \
- $(YPPUSH) amd.home; \
- echo "pushed amd.home"; \
- else \
- : ; \
- fi
-@end example
-
-Here @code{$(YPTSDIR)} contains the time stamp files, and @code{$(YPDBDIR)} contains
-the dbm format NIS files.
-
-@node Hesiod maps, Password maps, NIS maps, Map Types
-@comment node-name, next, previous, up
-@subsection Hesiod maps
-@cindex Hesiod maps
-
-When the map name begins with the string @samp{hesiod.} lookups are made
-using the @dfn{Hesiod} name server. The string following the dot is
-used as a name qualifier and is prepended with the key being located.
-The entire string is then resolved in the @code{automount} context. For
-example, if the the key is @samp{jsp} and map name is
-@samp{hesiod.homes} then @dfn{Hesiod} is asked to resolve
-@samp{jsp.homes.automount}.
-
-Hesiod maps do not support cache mode @samp{all} and, when caching is
-enabled, have a default cache mode of @samp{inc} (@pxref{Automount Filesystem}).
-
-The following is an example of a @dfn{Hesiod} map entry:
-
-@example
-jsp.homes.automount HS TXT "rfs:=/home/charm;rhost:=charm;sublink:=jsp"
-njw.homes.automount HS TXT "rfs:=/home/dylan/dk2;rhost:=dylan;sublink:=njw"
-@end example
-
-@node Password maps, Union maps, Hesiod maps, Map Types
-@comment node-name, next, previous, up
-@subsection Password maps
-@cindex Password file maps
-@cindex /etc/passwd maps
-@cindex User maps, automatic generation
-@cindex Automatic generation of user maps
-@cindex Using the password file as a map
-
-The password map support is unlike the four previous map types. When
-the map name is the string @file{/etc/passwd} @i{Amd} can lookup a user
-name in the password file and re-arrange the home directory field to
-produce a usable map entry.
-
-@i{Amd} assumes the home directory has the format
-`@t{/}@i{anydir}@t{/}@i{dom1}@t{/../}@i{domN}@t{/}@i{login}'.
-@c @footnote{This interpretation is not necessarily exactly what you want.}
-It breaks this string into a map entry where @code{$@{rfs@}} has the
-value `@t{/}@i{anydir}@t{/}@i{domN}', @code{$@{rhost@}} has the value
-`@i{domN}@t{.}@i{...}@t{.}@i{dom1}', and @code{$@{sublink@}} has the
-value @samp{login}.@refill
-
-Thus if the password file entry was
-
-@example
-/home/achilles/jsp
-@end example
-
-the map entry used by @i{Amd} would be
-
-@example
-rfs:=/home/achilles;rhost:=achilles;sublink:=jsp
-@end example
-
-Similarly, if the password file entry was
-
-@example
-/home/cc/sugar/mjh
-@end example
-
-the map entry used by @i{Amd} would be
-
-@example
-rfs:=/home/sugar;rhost:=sugar.cc;sublink:=jsp
-@end example
-
-@node Union maps, , Password maps, Map Types
-@comment node-name, next, previous, up
-@subsection Union maps
-@cindex Union file maps
-
-The union map support is provided specifically for use with the union
-filesystem, @pxref{Union Filesystem}.
-
-It is identified by the string @samp{union:} which is followed by a
-colon separated list of directories. The directories are read in order,
-and the names of all entries are recorded in the map cache. Later
-directories take precedence over earlier ones. The union filesystem
-type then uses the map cache to determine the union of the names in all
-the directories.
-
-@c subsection Gdbm
-
-@node Key Lookup, Location Format, Map Types, Mount Maps
-@comment node-name, next, previous, up
-@section How keys are looked up
-@cindex Key lookup
-@cindex Map lookup
-@cindex Looking up keys
-@cindex How keys are looked up
-@cindex Wildcards in maps
-
-The key is located in the map whose type was determined when the
-automount point was first created. In general the key is a pathname
-component. In some circumstances this may be modified by variable
-expansion (@pxref{Variable Expansion}) and prefixing. If the automount
-point has a prefix, specified by the @var{pref} option, then that is
-prepended to the search key before the map is searched.
-
-If the map cache is a @samp{regexp} cache then the key is treated as an
-egrep-style regular expression, otherwise a normal string comparison is
-made.
-
-If the key cannot be found then a @dfn{wildcard} match is attempted.
-@i{Amd} repeatedly strips the basename from the key, appends @samp{/*} and
-attempts a lookup. Finally, @i{Amd} attempts to locate the special key @samp{*}.
-
-@group
-For example, the following sequence would be checked if @file{home/dylan/dk2} was
-being located:
-
-@example
- home/dylan/dk2
- home/dylan/*
- home/*
- *
-@end example
-@end group
-
-At any point when a wildcard is found, @i{Amd} proceeds as if an exact
-match had been found and the value field is then used to resolve the
-mount request, otherwise an error code is propagated back to the kernel.
-(@pxref{Filesystem Types}).@refill
-
-@node Location Format, , Key Lookup, Mount Maps
-@comment node-name, next, previous, up
-@section Location Format
-@cindex Location format
-@cindex Map entry format
-@cindex How locations are parsed
-
-The value field from the lookup provides the information required to
-mount a filesystem. The information is parsed according to the syntax
-shown below.
-
-@display
-@i{location-list}:
- @i{location-selection}
- @i{location-list} @i{white-space} @t{||} @i{white-space} @i{location-selection}
-@i{location-selection}:
- @i{location}
- @i{location-selection} @i{white-space} @i{location}
-@i{location}:
- @i{location-info}
- @t{-}@i{location-info}
- @t{-}
-@i{location-info}:
- @i{sel-or-opt}
- @i{location-info}@t{;}@i{sel-or-opt}
- @t{;}
-@i{sel-or-opt}:
- @i{selection}
- @i{opt-ass}
-@i{selection}:
- selector@t{==}@i{value}
- selector@t{!=}@i{value}
-@i{opt-ass}:
- option@t{:=}@i{value}
-@i{white-space}:
- space
- tab
-@end display
-
-Note that unquoted whitespace is not allowed in a location description.
-White space is only allowed, and is mandatory, where shown with non-terminal
-@samp{white-space}.
-
-A @dfn{location-selection} is a list of possible volumes with which to
-satisfy the request. @dfn{location-selection}s are separated by the
-@samp{||} operator. The effect of this operator is to prevent use of
-location-selections to its right if any of the location-selections on
-its left were selected whether or not any of them were successfully
-mounted (@pxref{Selectors}).@refill
-
-The location-selection, and singleton @dfn{location-list},
-@samp{type:=ufs;dev:=/dev/xd1g} would inform @i{Amd} to mount a UFS
-filesystem from the block special device @file{/dev/xd1g}.
-
-The @dfn{sel-or-opt} component is either the name of an option required
-by a specific filesystem, or it is the name of a built-in, predefined
-selector such as the architecture type. The value may be quoted with
-double quotes @samp{"}, for example
-@samp{type:="ufs";dev:="/dev/xd1g"}. These quotes are stripped when the
-value is parsed and there is no way to get a double quote into a value
-field. Double quotes are used to get white space into a value field,
-which is needed for the program filesystem (@pxref{Program Filesystem}).@refill
-
-@menu
-* Map Defaults::
-* Variable Expansion::
-* Selectors::
-* Map Options::
-@end menu
-
-@node Map Defaults, Variable Expansion, Location Format, Location Format
-@comment node-name, next, previous, up
-@subsection Map Defaults
-@cindex Map defaults
-@cindex How to set default map parameters
-@cindex Setting default map parameters
-
-A location beginning with a dash @samp{-} is used to specify default
-values for subsequent locations. Any previously specified defaults in
-the location-list are discarded. The default string can be empty in
-which case no defaults apply.
-
-The location @samp{-fs:=/mnt;opts:=ro} would set the local mount point
-to @file{/mnt} and cause mounts to be read-only by default. Defaults
-specified this way are appended to, and so override, any global map
-defaults given with @samp{/defaults}).
-@c
-@c A @samp{/defaults} value @dfn{gdef} and a location list
-@c \begin{quote}
-@c $@samp{-}@dfn{def}_a $\verb*+ +$ @dfn{loc}_{a_1} $\verb*+ +$ @dfn{loc}_{a_2} $\verb*+ +$ @samp{-}@dfn{def}_b $\verb*+ +$ @dfn{loc}_{b_1} \ldots$
-@c \end{quote}
-@c is equivalent to
-@c \begin{quote}
-@c $@samp{-}@dfn{gdef}@samp{;}@dfn{def}_a $\verb*+ +$ @dfn{loc}_{a_1} $\verb*+ +$ @dfn{loc}_{a_2} $\verb*+ +$ @samp{-}@dfn{gdef}@samp{;}@dfn{def}_b $\verb*+ +$ @dfn{loc}_{b_1} \ldots$
-@c \end{quote}
-@c which is equivalent to
-@c \begin{quote}
-@c $@dfn{gdef}@samp{;}@dfn{def}_a@samp{;}@dfn{loc}_{a_1} $\verb*+ +$@dfn{gdef}@samp{;}@dfn{def}_a@samp{;}@dfn{loc}_{a_2} $\verb*+ +$@dfn{gdef}@samp{;}@dfn{def}_b@samp{;}@dfn{loc}_{b_1} \ldots$
-@c \end{quote}
-
-@node Variable Expansion, Selectors, Map Defaults, Location Format
-@comment node-name, next, previous, up
-@subsection Variable Expansion
-@cindex Variable expansion
-@cindex How variables are expanded
-@cindex Pathname operators
-@cindex Domain stripping
-@cindex Domainname operators
-@cindex Stripping the local domain name
-@cindex Environment variables
-@cindex How to access environment variables in maps
-
-To allow generic location specifications @i{Amd} does variable expansion
-on each location and also on some of the option strings. Any option or
-selector appearing in the form @code{$@dfn{var}} is replaced by the
-current value of that option or selector. For example, if the value of
-@code{$@{key@}} was @samp{bin}, @code{$@{autodir@}} was @samp{/a} and
-@code{$@{fs@}} was `@t{$@{autodir@}}@t{/local/}@t{$@{key@}}' then
-after expansion @code{$@{fs@}} would have the value @samp{/a/local/bin}.
-Any environment variable can be accessed in a similar way.@refill
-
-Two pathname operators are available when expanding a variable. If the
-variable name begins with @samp{/} then only the last component of
-then pathname is substituted. For example, if @code{$@{path@}} was
-@samp{/foo/bar} then @code{$@{/path@}} would be expanded to @samp{bar}.
-Similarly, if the variable name ends with @samp{/} then all but the
-last component of the pathname is substituted. In the previous example,
-@code{$@{path/@}} would be expanded to @samp{/foo}.@refill
-
-Two domain name operators are also provided. If the variable name
-begins with @samp{.} then only the domain part of the name is
-substituted. For example, if @code{$@{rhost@}} was
-@samp{swan.doc.ic.ac.uk} then @code{$@{.rhost@}} would be expanded to
-@samp{doc.ic.ac.uk}. Similarly, if the variable name ends with @samp{.}
-then only the host component is substituted. In the previous example,
-@code{$@{rhost.@}} would be expanded to @samp{swan}.@refill
-
-Variable expansion is a two phase process. Before a location is parsed,
-all references to selectors, @i{eg} @code{$@{path@}}, are expanded. The
-location is then parsed, selections are evaluated and option assignments
-recorded. If there were no selections or they all succeeded the
-location is used and the values of the following options are expanded in
-the order given: @var{sublink}, @var{rfs}, @var{fs}, @var{opts},
-@var{remopts}, @var{mount} and @var{unmount}.
-
-Note that expansion of option values is done after @dfn{all} assignments
-have been completed and not in a purely left to right order as is done
-by the shell. This generally has the desired effect but care must be
-taken if one of the options references another, in which case the
-ordering can become significant.
-
-There are two special cases concerning variable expansion:
-
-@enumerate
-@item
-before a map is consulted, any selectors in the name received
-from the kernel are expanded. For example, if the request from the
-kernel was for `@t{$@{arch@}}@t{.bin}' and the machine architecture
-was @samp{vax}, the value given to @code{$@{key@}} would be
-@samp{vax.bin}.@refill
-
-@item
-the value of @code{$@{rhost@}} is expanded and normalized before the
-other options are expanded. The normalization process strips any local
-sub-domain components. For example, if @code{$@{domain@}} was
-@samp{Berkeley.EDU} and @code{$@{rhost@}} was initially
-@samp{snow.Berkeley.EDU}, after the normalization it would simply be
-@samp{snow}. Hostname normalization is currently done in a
-@emph{case-dependent} manner.@refill
-@end enumerate
-
-@node Selectors, Map Options, Variable Expansion, Location Format
-@comment node-name, next, previous, up
-@subsection Selectors
-@cindex Selectors
-
-Selectors are used to control the use of a location. It is possible to
-share a mount map between many machines in such a way that filesystem
-location, architecture and operating system differences are hidden from
-the users. A selector of the form @samp{arch==sun3;os==sos4} would only
-apply on Sun-3s running SunOS 4.x.
-
-Selectors are evaluated left to right. If a selector fails then that
-location is ignored. Thus the selectors form a conjunction and the
-locations form a disjunction. If all the locations are ignored or
-otherwise fail then @i{Amd} uses the @dfn{error} filesystem
-(@pxref{Error Filesystem}). This is equivalent to having a location
-@samp{type:=error} at the end of each mount-map entry.@refill
-
-The selectors currently implemented are:
-
-@table @samp
-@cindex arch, mount selector
-@cindex Mount selector; arch
-@cindex Selector; arch
-@item arch
-the machine architecture which was automatically determined at compile
-time. The architecture type can be displayed by running the command
-@samp{amd -v}. @xref{Supported Machine Architectures}.@refill
-
-@item autodir
-@cindex autodir, mount selector
-@cindex Mount selector; autodir
-@cindex Selector; autodir
-the default directory under which to mount filesystems. This may be
-changed by the ``-a'' command line option. See the @var{fs} option.
-
-@item byte
-@cindex byte, mount selector
-@cindex Mount selector; byte
-@cindex Selector; byte
-the machine's byte ordering. This is either @samp{little}, indicating
-little-endian, or @samp{big}, indicating big-endian. One possible use
-is to share @samp{rwho} databases (@pxref{rwho servers}). Another is to
-share ndbm databases, however this use can be considered a courageous
-juggling act.
-
-@item cluster
-@cindex cluster, mount selector
-@cindex Mount selector; cluster
-@cindex Selector; cluster
-is provided as a hook for the name of the local cluster. This can be
-used to decide which servers to use for copies of replicated
-filesystems. @code{$@{cluster@}} defaults to the value of
-@code{$@{domain@}} unless a different value is set with the ``-C''
-command line option.
-
-@item domain
-@cindex domain, mount selector
-@cindex Mount selector; domain
-@cindex Selector; domain
-the local domain name as specified by the ``-d'' command line option.
-See @samp{host}.
-
-@item host
-@cindex host, mount selector
-@cindex Mount selector; host
-@cindex Selector; host
-the local hostname as determined by @b{gethostname}(2). If no domain
-name was specified on the command line and the hostname contains a
-period @samp{.} then the string before the period is used as the
-host name, and the string after the period is assigned to
-@code{$@{domain@}}. For example, if the hostname is
-@samp{styx.doc.ic.ac.uk} then @code{host} would be @samp{styx} and
-@code{domain} would be @samp{doc.ic.ac.uk}. @code{hostd} would be
-@samp{styx.doc.ic.ac.uk}.@refill
-
-@item hostd
-@cindex hostd, mount selector
-@cindex Mount selector; hostd
-@cindex Selector; hostd
-is @code{$@{host@}} and @code{$@{domain@}} concatenated with a
-@samp{.} inserted between them if required. If @code{$@{domain@}}
-is an empty string then @code{$@{host@}} and @code{$@{hostd@}} will be
-identical.
-
-@item karch
-@cindex karch, mount selector
-@cindex Mount selector; karch
-@cindex Selector; karch
-is provided as a hook for the kernel architecture. This is used on
-SunOS 4, for example, to distinguish between different @samp{/usr/kvm}
-volumes. @code{$@{karch@}} defaults to the value of @code{$@{arch@}}
-unless a different value is set with the ``-k'' command line option.
-
-@item os
-@cindex os, mount selector
-@cindex Mount selector; os
-@cindex Selector; os
-the operating system. Like the machine architecture, this is
-automatically determined at compile time. The operating system name can
-be displayed by running the command @samp{amd -v}. @xref{Supported
-Operating Systems}.@refill
-
-@end table
-
-The following selectors are also provided. Unlike the other selectors,
-they vary for each lookup. Note that when the name from the kernel is
-expanded prior to a map lookup, these selectors are all defined as empty
-strings.
-
-@table @samp
-@item key
-@cindex key, mount selector
-@cindex Mount selector; key
-@cindex Selector; key
-the name being resolved. For example, if @file{/home} is an automount
-point, then accessing @file{/home/foo} would set @code{$@{key@}} to the
-string @samp{foo}. The key is prefixed by the @var{pref} option set in
-the parent mount point. The default prefix is an empty string. If the
-prefix was @file{blah/} then @code{$@{key@}} would be set to
-@file{blah/foo}.@refill
-
-@item map
-@cindex map, mount selector
-@cindex Mount selector; map
-@cindex Selector; map
-the name of the mount map being used.
-
-@item path
-@cindex path, mount selector
-@cindex Mount selector; path
-@cindex Selector; path
-the full pathname of the name being resolved. For example
-@file{/home/foo} in the example above.
-
-@item wire
-@cindex wire, mount selector
-@cindex Mount selector; wire
-@cindex Selector; wire
-the name of the network to which the primary network interface is
-attached. If a symbolic name cannot be found in the networks or hosts
-database then dotted IP address format is used. This value is also
-output by the ``-v'' option.
-
-@end table
-
-Selectors can be negated by using @samp{!=} instead of @samp{==}. For
-example to select a location on all non-Vax machines the selector
-@samp{arch!=vax} would be used.
-
-@node Map Options, , Selectors, Location Format
-@comment node-name, next, previous, up
-@subsection Map Options
-@cindex Map options
-@cindex Setting map options
-
-Options are parsed concurrently with selectors. The difference is that
-when an option is seen the string following the @samp{:=} is
-recorded for later use. As a minimum the @var{type} option must be
-specified. Each filesystem type has other options which must also be
-specified. @xref{Filesystem Types}, for details on the filesystem
-specific options.@refill
-
-Superfluous option specifications are ignored and are not reported
-as errors.
-
-The following options apply to more than one filesystem type.
-
-@menu
-* delay Option::
-* fs Option::
-* opts Option::
-* remopts Option::
-* sublink Option::
-* type Option::
-@end menu
-
-@node delay Option, fs Option, Map Options, Map Options
-@comment node-name, next, previous, up
-@subsubsection delay Option
-@cindex Setting a delay on a mount location
-@cindex Delaying mounts from specific locations
-@cindex Primary server
-@cindex Secondary server
-@cindex delay, mount option
-@cindex Mount option; delay
-
-The delay, in seconds, before an attempt will be made to mount from the current location.
-Auxilliary data, such as network address, file handles and so on are computed
-regardless of this value.
-
-A delay can be used to implement the notion of primary and secondary file servers.
-The secondary servers would have a delay of a few seconds,
-thus giving the primary servers a chance to respond first.
-
-@node fs Option, opts Option, delay Option, Map Options
-@comment node-name, next, previous, up
-@subsubsection fs Option
-@cindex Setting the local mount point
-@cindex Overriding the default mount point
-@cindex fs, mount option
-@cindex Mount option; fs
-
-The local mount point. The semantics of this option vary between
-filesystems.
-
-For NFS and UFS filesystems the value of @code{$@{fs@}} is used as the
-local mount point. For other filesystem types it has other meanings
-which are described in the section describing the respective filesystem
-type. It is important that this string uniquely identifies the
-filesystem being mounted. To satisfy this requirement, it should
-contain the name of the host on which the filesystem is resident and the
-pathname of the filesystem on the local or remote host.
-
-The reason for requiring the hostname is clear if replicated filesystems
-are considered. If a fileserver goes down and a replacement filesystem
-is mounted then the @dfn{local} mount point @dfn{must} be different from
-that of the filesystem which is hung. Some encoding of the filesystem
-name is required if more than one filesystem is to be mounted from any
-given host.
-
-If the hostname is first in the path then all mounts from a particular
-host will be gathered below a single directory. If that server goes
-down then the hung mount points are less likely to be accidentally
-referenced, for example when @b{getwd}(3) traverses the namespace to
-find the pathname of the current directory.
-
-The @samp{fs} option defaults to
-@code{$@{autodir@}/$@{rhost@}$@{rfs@}}. In addition,
-@samp{rhost} defaults to the local host name (@code{$@{host@}}) and
-@samp{rfs} defaults to the value of @code{$@{path@}}, which is the full
-path of the requested file; @samp{/home/foo} in the example above
-(@pxref{Selectors}). @code{$@{autodir@}} defaults to @samp{/a} but may
-be changed with the ``-a'' command line option. Sun's automounter
-defaults to @samp{/tmp_mnt}. Note that there is no @samp{/} between
-the @code{$@{rhost@}} and @code{$@{rfs@}} since @code{$@{rfs@}} begins
-with a @samp{/}.@refill
-
-@node opts Option, remopts Option, fs Option, Map Options
-@comment node-name, next, previous, up
-@subsubsection opts Option
-@cindex Setting system mount options
-@cindex Passing parameters to the mount system call
-@cindex mount system call
-@cindex mount system call flags
-@cindex The mount system call
-@cindex opts, mount option
-@cindex Mount option; opts
-
-The options to pass to the mount system call. A leading @samp{-} is
-silently ignored. The mount options supported generally correspond to
-those used by @b{mount}(8) and are listed below. Some additional
-pseudo-options are interpreted by @i{Amd} and are also listed.
-
-Unless specifically overridden, each of the system default mount options
-applies. Any options not recognised are ignored. If no options list is
-supplied the string @samp{rw,defaults} is used and all the system
-default mount options apply. Options which are not applicable for a
-particular operating system are silently ignored. For example, only 4.4
-BSD is known to implement the @code{compress} and @code{spongy} options.
-
-@table @code
-@item compress
-Use NFS compression protocol.
-@item grpid
-Use BSD directory group-id semantics.
-@item intr
-Allow keyboard interrupts on hard mounts.
-@item nfsv2
-Use the version 2 NFS protocol in preference to version 3.
-@item noconn
-Don't make a connection on datagram transports.
-@item nocto
-No close-to-open consistency.
-@item nodevs
-Don't allow local special devices on this filesystem.
-@item nosuid
-Don't allow set-uid or set-gid executables on this filesystem.
-@item quota
-Enable quota checking on this mount.
-@item retrans=@i{n}
-The number of NFS retransmits made before a user error is generated by a
-@samp{soft} mounted filesystem, and before a @samp{hard} mounted
-filesystem reports @samp{NFS server @dfn{yoyo} not responding still
-trying}.
-@item ro
-Mount this filesystem readonly.
-@item rsize=@var{n}
-The NFS read packet size. You may need to set this if you are using
-NFS/UDP through a gateway.
-@item soft
-Give up after @dfn{retrans} retransmissions.
-@item spongy
-Like @samp{soft} for status requests, and @samp{hard} for data transfers.
-@item tcp
-Use TCP/IP instead of UDP/IP, ignored if the NFS implementation does not
-support TCP/IP mounts.
-@item timeo=@var{n}
-The NFS timeout, in tenth-seconds, before a request is retransmitted.
-@item wsize=@var{n}
-The NFS write packet size. You may need to set this if you are using
-NFS/UDP through a gateway.
-@end table
-
-The following options are implemented by @i{Amd}, rather than being
-passed to the kernel.
-
-@table @code
-@item nounmount
-Configures the mount so that its time-to-live will
-never expire. This is also the default for some filesystem types.
-@c
-@c Implementation broken:
-@item ping=@var{n}
-The interval, in seconds, between keep-alive pings. When four
-consecutive pings have failed the mount point is marked as hung. This
-interval defaults to 30 seconds. If the ping interval is less than zero,
-no pings are sent and the host is assumed to be always
-up. By default, pings are not sent for an NFS/TCP mount.
-@item retry=@var{n}
-The number of times to retry the mount system call.
-@item utimeout=@var{n}
-The interval, in seconds, by which the mount's
-time-to-live is extended after an unmount attempt
-has failed. In fact the interval is extended before the unmount is
-attempted to avoid thrashing. The default value is 120 seconds (two
-minutes) or as set by the ``-w'' command line option.
-@end table
-
-@node remopts Option, sublink Option, opts Option, Map Options
-@comment node-name, next, previous, up
-@subsubsection remopts Option
-@cindex Setting system mount options for non-local networks
-@cindex remopts, mount option
-@cindex Mount option; remopts
-
-This option has the same use as @code{$@{opts@}} but applies only when
-the remote host is on a non-local network. For example, when using NFS
-across a gateway it is often necessary to use smaller values for the
-data read and write sizes. This can simply be done by specifying the
-small values in @var{remopts}. When a non-local host is accessed, the
-smaller sizes will automatically be used.
-
-@i{Amd} determines whether a host is local by examining the network
-interface configuration at startup. Any interface changes made after
-@i{Amd} has been started will not be noticed. The likely effect will
-be that a host may incorrectly be declared non-local.
-
-Unless otherwise set, the value of @code{$@{rem@}} is the same as the
-value of @code{$@{opts@}}.
-
-@node sublink Option, type Option, remopts Option, Map Options
-@comment node-name, next, previous, up
-@subsubsection sublink Option
-@cindex Setting the sublink option
-@cindex sublink, mount option
-@cindex Mount option; sublink
-
-The subdirectory within the mounted filesystem to which the reference
-should point. This can be used to prevent duplicate mounts in cases
-where multiple directories in the same mounted filesystem are used.
-
-@node type Option, , sublink Option, Map Options
-@comment node-name, next, previous, up
-@subsubsection type Option
-@cindex Setting the filesystem type option
-@cindex type, mount option
-@cindex Mount option; type
-
-The filesystem type to be used. @xref{Filesystem Types}, for a full
-description of each type.@refill
-
-@node Amd Command Line Options, Filesystem Types, Mount Maps, Top
-@comment node-name, next, previous, up
-@chapter @i{Amd} Command Line Options
-@cindex Command line options, Amd
-@cindex Amd command line options
-@cindex Overriding defaults on the command line
-
-Many of @i{Amd}'s parameters can be set from the command line. The
-command line is also used to specify automount points and maps.
-
-The general format of a command line is
-
-@example
-amd [@i{options}] @{ @i{directory} @i{map-name} [-@i{map-options}] @} ...
-@end example
-
-For each directory and map-name given, @i{Amd} establishes an
-automount point. The @dfn{map-options} may be any sequence of options
-or selectors---@pxref{Location Format}. The @dfn{map-options}
-apply only to @i{Amd}'s mount point.
-
-@samp{type:=toplvl;cache:=mapdefault;fs:=$@{map@}} is the default value for the
-map options. Default options for a map are read from a special entry in
-the map whose key is the string @samp{/defaults}. When default options
-are given they are prepended to any options specified in the mount-map
-locations as explained in. @xref{Map Defaults}, for more details.
-
-The @dfn{options} are any combination of those listed below.
-
-Once the command line has been parsed, the automount points are mounted.
-The mount points are created if they do not already exist, in which case they
-will be removed when @i{Amd} exits.
-Finally, @i{Amd} disassociates itself from its controlling terminal and
-forks into the background.
-
-Note: Even if @i{Amd} has been built with @samp{-DDEBUG} it will still
-background itself and disassociate itself from the controlling terminal.
-To use a debugger it is necessary to specify @samp{-D nodaemon} on the
-command line.
-
-@menu
-* -a Option:: Automount directory.
-* -c Option:: Cache timeout interval.
-* -d Option:: Domain name.
-* -k Option:: Kernel architecture.
-* -l Option:: Log file.
-* -n Option:: Hostname normalisation.
-* -p Option:: Output process id.
-* -r Option:: Restart existing mounts.
-* -t Option:: Kernel RPC timeout.
-* -v Option:: Version information.
-* -w Option:: Wait interval after failed unmount.
-* -x Option:: Log options.
-* -y Option:: NIS domain.
-* -C-Option:: Cluster name.
-* -D-Option:: Debug flags.
-@end menu
-
-@node -a Option, -c Option, Amd Command Line Options, Amd Command Line Options
-@comment node-name, next, previous, up
-@section @code{-a} @var{directory}
-@cindex Automount directory
-@cindex Setting the default mount directory
-
-Specifies the default mount directory. This option changes the variable
-@code{$@{autodir@}} which otherwise defaults to @file{/a}. For example,
-some sites prefer @file{/amd}.
-
-@example
-amd -a /amd ...
-@end example
-
-@node -c Option, -d Option, -a Option, Amd Command Line Options
-@comment node-name, next, previous, up
-@section @code{-c} @var{cache-interval}
-@cindex Cache interval
-@cindex Interval before a filesystem times out
-@cindex Setting the interval before a filesystem times out
-@cindex Changing the interval before a filesystem times out
-
-Selects the period, in seconds, for which a name is cached by @i{Amd}.
-If no reference is made to the volume in this period, @i{Amd} discards
-the volume name to filesystem mapping.
-
-Once the last reference to a filesystem has been removed, @i{Amd}
-attempts to unmount the filesystem. If the unmount fails the interval
-is extended by a further period as specified by the @samp{-w} command
-line option or by the @samp{utimeout} mount option.
-
-The default @dfn{cache-interval} is 300 seconds (five minutes).
-
-@node -d Option, -k Option, -c Option, Amd Command Line Options
-@comment node-name, next, previous, up
-@section @code{-d} @var{domain}
-@cindex Domain name
-@cindex Setting the local domain name
-@cindex Overriding the local domain name
-
-Specifies the host's domain. This sets the internal variable
-@code{$@{domain@}} and affects the @code{$@{hostd@}} variable.
-
-If this option is not specified and the hostname already contains the
-local domain then that is used, otherwise the default value of
-@code{$@{domain@}} is @samp{unknown.domain}.
-
-For example, if the local domain was @samp{doc.ic.ac.uk}, @i{Amd} could
-be started as follows:
-
-@example
-amd -d doc.ic.ac.uk ...
-@end example
-
-@node -k Option, -l Option, -d Option, Amd Command Line Options
-@comment node-name, next, previous, up
-@section @code{-k} @var{kernel-architecture}
-@cindex Setting the Kernel architecture
-
-Specifies the kernel architecture of the system. This is usually the
-output of @samp{arch -k} and its only effect is to set the variable
-@code{$@{karch@}}. If this option is not given, @code{$@{karch@}} has
-the same value as @code{$@{arch@}}.
-
-This would be used as follows:
-
-@example
-amd -k `arch -k` ...
-@end example
-
-@node -l Option, -n Option, -k Option, Amd Command Line Options
-@comment node-name, next, previous, up
-@section @code{-l} @var{log-option}
-@cindex Log filename
-@cindex Setting the log file
-@cindex Using syslog to log errors
-@cindex syslog
-
-Selects the form of logging to be made. Two special @dfn{log-options}
-are recognised.
-
-@enumerate
-@item
-If @dfn{log-option} is the string @samp{syslog}, @i{Amd} will use the
-@b{syslog}(3) mechanism.@refill
-
-@item
-If @dfn{log-option} is the string @samp{/dev/stderr}, @i{Amd} will use
-standard error, which is also the default target for log messages. To
-implement this, @i{Amd} simulates the effect of the @samp{/dev/fd}
-driver.
-@end enumerate
-
-Any other string is taken as a filename to use for logging. Log
-messages are appended to the file if it already exists, otherwise a new
-file is created. The file is opened once and then held open, rather
-than being re-opened for each message.
-
-If the @samp{syslog} option is specified but the system does not support
-syslog or if the named file cannot be opened or created, @i{Amd} will
-use standard error. Error messages generated before @i{Amd} has
-finished parsing the command line are printed on standard error.
-
-Using @samp{syslog} is usually best, in which case @i{Amd} would be
-started as follows:
-
-@example
-amd -l syslog ...
-@end example
-
-@node -n Option, -p Option, -l Option, Amd Command Line Options
-@comment node-name, next, previous, up
-@section @code{-n}
-@cindex Hostname normalisation
-@cindex Aliased hostnames
-@cindex Resolving aliased hostnames
-@cindex Normalising hostnames
-
-Normalises the remote hostname before using it. Normalisation is done
-by replacing the value of @code{$@{rhost@}} with the primary name
-returned by a hostname lookup.
-
-This option should be used if several names are used to refer to a
-single host in a mount map.
-
-@node -p Option, -r Option, -n Option, Amd Command Line Options
-@comment node-name, next, previous, up
-@section @code{-p}
-@cindex Process id
-@cindex Displaying the process id
-@cindex process id of Amd daemon
-@cindex pid file, creating with -p option
-@cindex Creating a pid file
-
-Causes @i{Amd}'s process id to be printed on standard output.
-This can be redirected to a suitable file for use with kill:
-
-@example
-amd -p > /var/run/amd.pid ...
-@end example
-
-This option only has an affect if @i{Amd} is running in daemon mode.
-If @i{Amd} is started with the @code{-D nodaemon} debug flag, this
-option is ignored.
-
-@node -r Option, -t Option, -p Option, Amd Command Line Options
-@comment node-name, next, previous, up
-@section @code{-r}
-@cindex Restarting existing mounts
-@cindex Picking up existing mounts
-
-Tells @i{Amd} to restart existing mounts (@pxref{Inheritance Filesystem}).
-@c @dfn{This option will be made the default in the next release.}
-
-@node -t Option, -v Option, -r Option, Amd Command Line Options
-@comment node-name, next, previous, up
-@section @code{-t} @var{timeout.retransmit}
-@cindex Setting Amd's RPC parameters
-
-Specifies the RPC @dfn{timeout} and @dfn{retransmit} intervals used by
-the kernel to communicate to @i{Amd}. These are used to set the
-@samp{timeo} and @samp{retrans} mount options.
-
-@i{Amd} relies on the kernel RPC retransmit mechanism to trigger mount
-retries. The value of this parameter changes the retry interval. Too
-long an interval gives poor interactive response, too short an interval
-causes excessive retries.
-
-@node -v Option, -w Option, -t Option, Amd Command Line Options
-@comment node-name, next, previous, up
-@section @code{-v}
-@cindex Version information
-@cindex Discovering version information
-@cindex How to discover your version of Amd
-
-Print version information on standard error and then exit. The output
-is of the form:
-
-@example
-amd 5.2.1.11 of 91/03/17 18:04:05 5.3Alpha11 #0: Sun Mar 17 18:07:28 GMT 1991
-Built by pendry@@vangogh.Berkeley.EDU for a hp300 running bsd44 (big-endian).
-Map support for: root, passwd, union, file, error.
-FS: ufs, nfs, nfsx, host, link, program, union, auto, direct, toplvl, error.
-Primary network is 128.32.130.0.
-@end example
-
-The information includes the version number, release date and name of
-the release. The architecture (@pxref{Supported Machine Architectures}),
-operating system (@pxref{Supported Operating Systems})
-and byte ordering are also printed as they appear in the @code{$@{os@}},
-@code{$@{arch@}} and @code{$@{byte@}} variables.@refill
-
-@node -w Option, -x Option, -v Option, Amd Command Line Options
-@comment node-name, next, previous, up
-@section @code{-w} @var{wait-timeout}
-@cindex Setting the interval between unmount attempts
-@cindex unmount attempt backoff interval
-
-Selects the interval in seconds between unmount attempts after the
-initial time-to-live has expired.
-
-This defaults to 120 seconds (two minutes).
-
-@node -x Option, -y Option, -w Option, Amd Command Line Options
-@comment node-name, next, previous, up
-@section @code{-x} @var{opts}
-@cindex Log message selection
-@cindex Selecting specific log messages
-@cindex How to select log messages
-@cindex syslog priorities
-
-Specifies the type and verbosity of log messages. @dfn{opts} is
-a comma separated list selected from the following options:
-
-@table @code
-@item fatal
-Fatal errors
-@item error
-Non-fatal errors
-@item user
-Non-fatal user errors
-@item warn
-Recoverable errors
-@item warning
-Alias for @code{warn}
-@item info
-Information messages
-@item map
-Mount map usage
-@item stats
-Additional statistics
-@item all
-All of the above
-@end table
-
-Initially a set of default logging flags is enabled. This is as if
-@samp{-x all,nomap,nostats} had been selected. The command line is
-parsed and logging is controlled by the ``-x'' option. The very first
-set of logging flags is saved and can not be subsequently disabled using
-@i{Amq}. This default set of options is useful for general production
-use.@refill
-
-The @samp{info} messages include details of what is mounted and
-unmounted and when filesystems have timed out. If you want to have the
-default set of messages without the @samp{info} messages then you simply
-need @samp{-x noinfo}. The messages given by @samp{user} relate to
-errors in the mount maps, so these are useful when new maps are
-installed. The following table lists the syslog priorites used for each
-of the message types.@refill
-
-@table @code
-@item fatal
-LOG_CRIT
-@item error
-LOG_ERR
-@item user
-LOG_WARNING
-@item warning
-LOG_WARNING
-@item info
-LOG_INFO
-@item debug
-LOG_DEBUG
-@item map
-LOG_DEBUG
-@item stats
-LOG_INFO
-@end table
-
-
-The options can be prefixed by the string @samp{no} to indicate
-that this option should be turned off. For example, to obtain all
-but @samp{info} messages the option @samp{-x all,noinfo} would be used.
-
-If @i{Amd} was built with debugging enabled the @code{debug} option is
-automatically enabled regardless of the command line options.
-
-@node -y Option, -C-Option, -x Option, Amd Command Line Options
-@comment node-name, next, previous, up
-@section @code{-y} @var{NIS-domain}
-@cindex NIS (YP) domain name
-@cindex Overriding the NIS (YP) domain name
-@cindex Setting the NIS (YP) domain name
-@cindex YP domain name
-
-Selects an alternate NIS domain. This is useful for debugging and
-cross-domain shared mounting. If this flag is specified, @i{Amd}
-immediately attempts to bind to a server for this domain.
-@c @i{Amd} refers to NIS maps when it starts, unless the ``-m'' option
-@c is specified, and whenever required in a mount map.
-
-@node -C-Option, -D-Option, -y Option, Amd Command Line Options
-@comment node-name, next, previous, up
-@section @code{-C} @var{cluster-name}
-@cindex Cluster names
-@cindex Setting the cluster name
-
-Specifies the name of the cluster of which the local machine is a member.
-The only effect is to set the variable @code{$@{cluster@}}.
-The @dfn{cluster-name} is will usually obtained by running another command which uses
-a database to map the local hostname into a cluster name.
-@code{$@{cluster@}} can then be used as a selector to restrict mounting of
-replicated data.
-If this option is not given, @code{$@{cluster@}} has the same value as @code{$@{domain@}}.
-This would be used as follows:
-
-@example
-amd -C `clustername` ...
-@end example
-
-@node -D-Option, , -C-Option, Amd Command Line Options
-@comment node-name, next, previous, up
-@section @code{-D} @var{opts}
-@cindex Debug options
-@cindex Setting debug flags
-
-Controls the verbosity and coverage of the debugging trace; @dfn{opts}
-is a comma separated list of debugging options. The ``-D'' option is
-only available if @i{Amd} was compiled with @samp{-DDEBUG}. The memory
-debugging facilities are only available if @i{Amd} was compiled with
-@samp{-DDEBUG_MEM} (in addition to @samp{-DDEBUG}).
-
-The most common options to use are @samp{-D trace} and @samp{-D test}
-(which turns on all the useful debug options). See the program source
-for a more detailed explanation of the available options.
-
-@node Filesystem Types, Run-time Administration, Amd Command Line Options, Top
-@comment node-name, next, previous, up
-@chapter Filesystem Types
-@cindex Filesystem types
-@cindex Mount types
-@cindex Types of filesystem
-
-To mount a volume, @i{Amd} must be told the type of filesystem to be
-used. Each filesystem type typically requires additional information
-such as the fileserver name for NFS.
-
-From the point of view of @i{Amd}, a @dfn{filesystem} is anything that
-can resolve an incoming name lookup. An important feature is support
-for multiple filesystem types. Some of these filesystems are
-implemented in the local kernel and some on remote fileservers, whilst
-the others are implemented internally by @i{Amd}.@refill
-
-The two common filesystem types are UFS and NFS. Four other user
-accessible filesystems (@samp{link}, @samp{program}, @samp{auto} and
-@samp{direct}) are also implemented internally by @i{Amd} and these are
-described below. There are two additional filesystem types internal to
-@i{Amd} which are not directly accessible to the user (@samp{inherit}
-and @samp{error}). Their use is described since they may still have an
-effect visible to the user.@refill
-
-@menu
-* Network Filesystem:: A single NFS filesystem.
-* Network Host Filesystem:: NFS mount a host's entire export tree.
-* Network Filesystem Group:: An atomic group of NFS filesystems.
-* Unix Filesystem:: Native disk filesystem.
-* Program Filesystem:: Generic Program mounts.
-* Symbolic Link Filesystem:: Local link referencing existing filesystem.
-* Symbolic Link Filesystem II:: More on referencing existing filesystems.
-* Automount Filesystem::
-* Direct Automount Filesystem::
-* Union Filesystem::
-* Error Filesystem::
-* Top-level Filesystem::
-* Root Filesystem::
-* Inheritance Filesystem::
-@end menu
-
-@node Network Filesystem, Network Host Filesystem, Filesystem Types, Filesystem Types
-@comment node-name, next, previous, up
-@section Network Filesystem (@samp{type:=nfs})
-@cindex NFS
-@cindex Mounting an NFS filesystem
-@cindex How to mount and NFS filesystem
-@cindex nfs, filesystem type
-@cindex Filesystem type; nfs
-
-The @dfn{nfs} filesystem type provides access to Sun's NFS.
-
-@noindent
-The following options must be specified:
-
-@table @code
-@cindex rhost, mount option
-@cindex Mount option; rhost
-@item rhost
-the remote fileserver. This must be an entry in the hosts database. IP
-addresses are not accepted. The default value is taken
-from the local host name (@code{$@{host@}}) if no other value is
-specified.
-
-@cindex rfs, mount option
-@cindex Mount option; rfs
-@item rfs
-the remote filesystem.
-If no value is specified for this option, an internal default of
-@code{$@{path@}} is used.
-@end table
-
-NFS mounts require a two stage process. First, the @dfn{file handle} of
-the remote file system must be obtained from the server. Then a mount
-system call must be done on the local system. @i{Amd} keeps a cache
-of file handles for remote file systems. The cache entries have a
-lifetime of a few minutes.
-
-If a required file handle is not in the cache, @i{Amd} sends a request
-to the remote server to obtain it. @i{Amd} @dfn{does not} wait for
-a response; it notes that one of the locations needs retrying, but
-continues with any remaining locations. When the file handle becomes
-available, and assuming none of the other locations was successfully
-mounted, @i{Amd} will retry the mount. This mechanism allows several
-NFS filesystems to be mounted in parallel.
-@c @footnote{The mechanism
-@c is general, however NFS is the only filesystem
-@c for which the required hooks have been written.}
-The first one which responds with a valid file handle will be used.
-
-@noindent
-An NFS entry might be:
-
-@example
-jsp host!=charm;type:=nfs;rhost:=charm;rfs:=/home/charm;sublink:=jsp
-@end example
-
-The mount system call and any unmount attempts are always done
-in a new task to avoid the possibilty of blocking @i{Amd}.
-
-@node Network Host Filesystem, Network Filesystem Group, Network Filesystem, Filesystem Types
-@comment node-name, next, previous, up
-@section Network Host Filesystem (@samp{type:=host})
-@cindex Network host filesystem
-@cindex Mounting entire export trees
-@cindex How to mount all NFS exported filesystems
-@cindex host, filesystem type
-@cindex Filesystem type; host
-
-@c NOTE: the current implementation of the @dfn{host} filesystem type
-@c sometimes fails to maintain a consistent view of the remote mount tree.
-@c This happens when the mount times out and only some of the remote mounts
-@c are successfully unmounted. To prevent this from occuring, use the
-@c @samp{nounmount} mount option.
-
-The @dfn{host} filesystem allows access to the entire export tree of an
-NFS server. The implementation is layered above the @samp{nfs}
-implementation so keep-alives work in the same way. The only option
-which needs to specified is @samp{rhost} which is the name of the
-fileserver to mount.
-
-The @samp{host} filesystem type works by querying the mount daemon on
-the given fileserver to obtain its export list. @i{Amd} then obtains
-filehandles for each of the exported filesystems. Any errors at this
-stage cause that particular filesystem to be ignored. Finally each
-filesystem is mounted. Again, errors are logged but ignored. One
-common reason for mounts to fail is that the mount point does not exist.
-Although @i{Amd} attempts to automatically create the mount point, it
-may be on a remote filesystem to which @i{Amd} does not have write
-permission.
-
-When an attempt to unmount a @samp{host} filesystem mount fails, @i{Amd}
-remounts any filesystems which had succesfully been unmounted. To do
-this @i{Amd} queries the mount daemon again and obtains a fresh copy of
-the export list. @i{Amd} then tries to mount any exported filesystems
-which are not currently mounted.
-
-Sun's automounter provides a special @samp{-hosts} map. To achieve the
-same effect with @i{Amd} requires two steps. First a mount map must
-be created as follows:
-
-@example
-/defaults type:=host;fs:=$@{autodir@}/$@{rhost@}/root;rhost:=$@{key@}
-* opts:=rw,nosuid,grpid
-@end example
-
-@noindent
-and then start @i{Amd} with the following command
-
-@example
-amd /n net.map
-@end example
-
-@noindent
-where @samp{net.map} is the name of map described above. Note that the
-value of @code{$@{fs@}} is overridden in the map. This is done to avoid
-a clash between the mount tree and any other filesystem already mounted
-from the same fileserver.
-
-If different mount options are needed for different hosts then
-additional entries can be added to the map, for example
-
-@example
-host2 opts:=ro,nosuid,soft
-@end example
-
-@noindent
-would soft mount @samp{host2} read-only.
-
-@node Network Filesystem Group, Unix Filesystem, Network Host Filesystem, Filesystem Types
-@comment node-name, next, previous, up
-@section Network Filesystem Group (@samp{type:=nfsx})
-@cindex Network filesystem group
-@cindex Atomic NFS mounts
-@cindex Mounting an atomic group of NFS filesystems
-@cindex How to mount an atomic group of NFS filesystems
-@cindex nfsx, filesystem type
-@cindex Filesystem type; nfsx
-
-The @dfn{nfsx} filesystem allows a group of filesystems to be mounted
-from a single NFS server. The implementation is layered above the
-@samp{nfs} implementation so keep-alives work in the same way.
-
-The options are the same as for the @samp{nfs} filesystem with one
-difference.
-
-@noindent
-The following options must be specified:
-
-@table @code
-@item rhost
-the remote fileserver. This must be an entry in the hosts database. IP
-addresses are not accepted. The default value is taken from the local
-host name (@code{$@{host@}}) if no other value is specified.
-
-@item rfs
-as a list of filesystems to mount. The list is in the form of a comma
-separated strings.
-@end table
-
-@noindent
-For example:
-
-@example
-pub type:=nfsx;rhost:=gould;\
- rfs:=/public,/,graphics,usenet;fs:=$@{autodir@}/$@{rhost@}/root
-@end example
-
-The first string defines the root of the tree, and is applied as a
-prefix to the remaining members of the list which define the individual
-filesystems. The first string is @emph{not} used as a filesystem name.
-A parallel operation is used to determine the local mount points to
-ensure a consistent layout of a tree of mounts.
-
-Here, the @emph{three} filesystems, @samp{/public},
-@samp{/public/graphics} and @samp{/public/usenet}, would be mounted.@refill
-
-A local mount point, @code{$@{fs@}}, @emph{must} be specified. The
-default local mount point will not work correctly in the general case.
-A suggestion is to use @samp{fs:=$@{autodir@}/$@{rhost@}/root}.@refill
-
-@node Unix Filesystem, Program Filesystem, Network Filesystem Group, Filesystem Types
-@comment node-name, next, previous, up
-@section Unix Filesystem (@samp{type:=ufs})
-@cindex Unix filesystem
-@cindex UFS
-@cindex Mounting a UFS filesystem
-@cindex Mounting a local disk
-@cindex How to mount a UFS filesystems
-@cindex How to mount a local disk
-@cindex Disk filesystems
-@cindex ufs, filesystem type
-@cindex Filesystem type; ufs
-
-The @dfn{ufs} filesystem type provides access to the system's
-standard disk filesystem---usually a derivative of the Berkeley Fast Filesystem.
-
-@noindent
-The following option must be specified:
-
-@table @code
-@cindex dev, mount option
-@cindex Mount option; dev
-@item dev
-the block special device to be mounted.
-@end table
-
-A UFS entry might be:
-
-@example
-jsp host==charm;type:=ufs;dev:=/dev/xd0g;sublink:=jsp
-@end example
-
-@node Program Filesystem, Symbolic Link Filesystem, Unix Filesystem, Filesystem Types
-@comment node-name, next, previous, up
-@section Program Filesystem (@samp{type:=program})
-@cindex Program filesystem
-@cindex Mount a filesystem under program control
-@cindex program, filesystem type
-@cindex Filesystem type; program
-
-The @dfn{program} filesystem type allows a program to be run whenever a
-mount or unmount is required. This allows easy addition of support for
-other filesystem types, such as MIT's Remote Virtual Disk (RVD)
-which has a programmatic interface via the commands
-@samp{rvdmount} and @samp{rvdunmount}.
-
-@noindent
-The following options must be specified:
-
-@table @code
-@cindex mount, mount option
-@cindex Mount option; mount
-@item mount
-the program which will perform the mount.
-
-@cindex unmount, mount option
-@cindex Mount option; unmount
-@item unmount
-the program which will perform the unmount.
-@end table
-
-The exit code from these two programs is interpreted as a Unix error
-code. As usual, exit code zero indicates success. To execute the
-program @i{Amd} splits the string on whitespace to create an array of
-substrings. Single quotes @samp{'} can be used to quote whitespace
-if that is required in an argument. There is no way to escape or change
-the quote character.
-
-To run the program @samp{rvdmount} with a host name and filesystem as
-arguments would be specified by @samp{mount:="/etc/rvdmount rvdmount
-fserver $@{path@}"}.
-
-The first element in the array is taken as the pathname of the program
-to execute. The other members of the array form the argument vector to
-be passed to the program, @dfn{including argument zero}. This means
-that the split string must have at least two elements. The program is
-directly executed by @i{Amd}, not via a shell. This means that scripts
-must begin with a @code{#!} interpreter specification.
-
-If a filesystem type is to be heavily used, it may be worthwhile adding
-a new filesystem type into @i{Amd}, but for most uses the program
-filesystem should suffice.
-
-When the program is run, standard input and standard error are inherited
-from the current values used by @i{Amd}. Standard output is a
-duplicate of standard error. The value specified with the ``-l''
-command line option has no effect on standard error.
-
-@node Symbolic Link Filesystem, Symbolic Link Filesystem II, Program Filesystem, Filesystem Types
-@comment node-name, next, previous, up
-@section Symbolic Link Filesystem (@samp{type:=link})
-@cindex Symbolic link filesystem
-@cindex Referencing part of the local name space
-@cindex Mounting part of the local name space
-@cindex How to reference part of the local name space
-@cindex link, filesystem type
-@cindex symlink, link filesystem type
-@cindex Filesystem type; link
-
-Each filesystem type creates a symbolic link to point from the volume
-name to the physical mount point. The @samp{link} filesystem does the
-same without any other side effects. This allows any part of the
-machines name space to be accessed via @i{Amd}.
-
-One common use for the symlink filesystem is @file{/homes} which can be
-made to contain an entry for each user which points to their
-(auto-mounted) home directory. Although this may seem rather expensive,
-it provides a great deal of administrative flexibility.
-
-@noindent
-The following option must be defined:
-
-@table @code
-@item fs
-The value of @var{fs} option specifies the destination of the link, as
-modified by the @var{sublink} option. If @var{sublink} is non-null, it
-is appended to @code{$@{fs@}}@code{/} and the resulting string is used
-as the target.
-@end table
-
-The @samp{link} filesystem can be though of as identical to the
-@samp{ufs} filesystem but without actually mounting anything.
-
-An example entry might be:
-
-@example
-jsp host==charm;type:=link;fs:=/home/charm;sublink:=jsp
-@end example
-which would return a symbolic link pointing to @file{/home/charm/jsp}.
-
-@node Symbolic Link Filesystem II, Automount Filesystem, Symbolic Link Filesystem, Filesystem Types,
-@comment node-name, next, previous, up
-@section Symbolic Link Filesystem II (@samp{type:=link})
-@cindex Symbolic link filesystem II
-@cindex Referencing an existing part of the local name space
-@cindex Mounting an existing part of the local name space
-@cindex How to reference an existing part of the local name space
-@cindex linkx, filesystem type
-@cindex symlink, linkx filesystem type
-@cindex Filesystem type; linkx
-
-The @samp{linkx} filesystem type is identical to @samp{link} with the
-exception that the target of the link must exist. Existence is checked
-with the @samp{lstat} system call.
-
-The @samp{linkx} filesystem type is particularly useful for wildcard map
-entries. In this case, a list of possible targets can be give and
-@i{Amd} will choose the first one which exists on the local machine.
-
-@node Automount Filesystem, Direct Automount Filesystem, Symbolic Link Filesystem II, Filesystem Types
-@comment node-name, next, previous, up
-@section Automount Filesystem (@samp{type:=auto})
-@cindex Automount filesystem
-@cindex Map cache types
-@cindex Setting map cache parameters
-@cindex How to set map cache parameters
-@cindex How to start an indirect automount point
-@cindex auto, filesystem type
-@cindex Filesystem type; auto
-@cindex SIGHUP signal
-@cindex Map cache synchronising
-@cindex Synchronising the map cache
-@cindex Map cache options
-@cindex Regular expressions in maps
-
-The @dfn{auto} filesystem type creates a new automount point below an
-existing automount point. Top-level automount points appear as system
-mount points. An automount mount point can also appear as a
-sub-directory of an existing automount point. This allows some
-additional structure to be added, for example to mimic the mount tree of
-another machine.
-
-The following options may be specified:
-
-@table @code
-@cindex cache, mount option
-@cindex Mount option; cache
-@item cache
-specifies whether the data in this mount-map should be
-cached. The default value is @samp{none}, in which case
-no caching is done in order to conserve memory.
-However, better performance and reliability can be obtained by caching
-some or all of a mount-map.
-
-If the cache option specifies @samp{all},
-the entire map is enumerated when the mount point is created.
-
-If the cache option specifies @samp{inc}, caching is done incrementally
-as and when data is required.
-Some map types do not support cache mode @samp{all}, in which case @samp{inc}
-is used whenever @samp{all} is requested.
-
-Caching can be entirely disabled by using cache mode @samp{none}.
-
-If the cache option specifies @samp{regexp} then the entire map will be
-enumerated and each key will be treated as an egrep-style regular
-expression. The order in which a cached map is searched does not
-correspond to the ordering in the source map so the regular expressions
-should be mutually exclusive to avoid confusion.
-
-Each mount map type has a default cache type, usually @samp{inc}, which
-can be selected by specifying @samp{mapdefault}.
-
-The cache mode for a mount map can only be selected on the command line.
-Starting @i{Amd} with the command:
-
-@example
-amd /homes hesiod.homes -cache:=inc
-@end example
-
-will cause @samp{/homes} to be automounted using the @dfn{Hesiod} name
-server with local incremental caching of all succesfully resolved names.
-
-All cached data is forgotten whenever @i{Amd} receives a @samp{SIGHUP}
-signal and, if cache @samp{all} mode was selected, the cache will be
-reloaded. This can be used to inform @i{Amd} that a map has been
-updated. In addition, whenever a cache lookup fails and @i{Amd} needs
-to examine a map, the map's modify time is examined. If the cache is
-out of date with respect to the map then it is flushed as if a
-@samp{SIGHUP} had been received.
-
-An additional option (@samp{sync}) may be specified to force @i{Amd} to
-check the map's modify time whenever a cached entry is being used. For
-example, an incremental, synchronised cache would be created by the
-following command:
-
-@example
-amd /homes hesiod.homes -cache:=inc,sync
-@end example
-
-@item fs
-specifies the name of the mount map to use for the new mount point.
-
-Arguably this should have been specified with the @code{$@{rfs@}} option but
-we are now stuck with it due to historical accident.
-
-@c %If the string @samp{.} is used then the same map is used;
-@c %in addition the lookup prefix is set to the name of the mount point followed
-@c %by a slash @samp{/}.
-@c %This is the same as specifying @samp{fs:=\$@{map@};pref:=\$@{key@}/}.
-@c
-
-@item pref
-alters the name that is looked up in the mount map. If
-@code{$@{pref@}}, the @dfn{prefix}, is non-null then it is prepended to
-the name requested by the kernel @dfn{before} the map is searched.
-@end table
-
-The server @samp{dylan.doc.ic.ac.uk} has two user disks:
-@samp{/dev/dsk/2s0} and @samp{/dev/dsk/5s0}. These are accessed as
-@samp{/home/dylan/dk2} and @samp{/home/dylan/dk5} respectively. Since
-@samp{/home} is already an automount point, this naming is achieved with
-the following map entries:@refill
-
-@example
-dylan type:=auto;fs:=$@{map@};pref:=$@{key@}/
-dylan/dk2 type:=ufs;dev:=/dev/dsk/2s0
-dylan/dk5 type:=ufs;dev:=/dev/dsk/5s0
-@end example
-
-@node Direct Automount Filesystem, Union Filesystem, Automount Filesystem, Filesystem Types
-@comment node-name, next, previous, up
-@section Direct Automount Filesystem (@samp{type:=direct})
-@cindex Direct automount filesystem
-@cindex How to start a direct automount point
-@cindex direct, filesystem type
-@cindex Filesystem type; direct
-
-The @dfn{direct} filesystem is almost identical to the automount
-filesystem. Instead of appearing to be a directory of mount points, it
-appears as a symbolic link to a mounted filesystem. The mount is done
-at the time the link is accessed. @xref{Automount Filesystem} for a
-list of required options.
-
-Direct automount points are created by specifying the @samp{direct}
-filesystem type on the command line:
-
-@example
-amd ... /usr/man auto.direct -type:=direct
-@end example
-
-where @samp{auto.direct} would contain an entry such as:
-
-@example
-usr/man -type:=nfs;rfs:=/usr/man \
- rhost:=man-server1 rhost:=man-server2
-@end example
-
-In this example, @samp{man-server1} and @samp{man-server2} are file
-servers which export copies of the manual pages. Note that the key
-which is looked up is the name of the automount point without the
-leading @samp{/}.
-
-@node Union Filesystem, Error Filesystem, Direct Automount Filesystem, Filesystem Types
-@comment node-name, next, previous, up
-@section Union Filesystem (@samp{type:=union})
-@cindex Union filesystem
-@cindex union, filesystem type
-@cindex Filesystem type; union
-
-The @dfn{union} filesystem type allows the contents of several
-directories to be merged and made visible in a single directory. This
-can be used to overcome one of the major limitations of the Unix mount
-mechanism which only allows complete directories to be mounted.
-
-For example, supposing @file{/tmp} and @file{/var/tmp} were to be merged
-into a new directory called @file{/mtmp}, with files in @file{/var/tmp}
-taking precedence. The following command could be used to achieve this
-effect:
-
-@example
-amd ... /mtmp union:/tmp:/var/tmp -type:=union
-@end example
-
-Currently, the unioned directories must @emph{not} be automounted. That
-would cause a deadlock. This seriously limits the current usefulness of
-this filesystem type and the problem will be addressed in a future
-release of @i{Amd}.
-
-Files created in the union directory are actually created in the last
-named directory. This is done by creating a wildcard entry which points
-to the correct directory. The wildcard entry is visible if the union
-directory is listed, so allowing you to see which directory has
-priority.
-
-The files visible in the union directory are computed at the time
-@i{Amd} is started, and are not kept uptodate with respect to the
-underlying directories. Similarly, if a link is removed, for example
-with the @samp{rm} command, it will be lost forever.
-
-@node Error Filesystem, Top-level Filesystem, Union Filesystem, Filesystem Types
-@comment node-name, next, previous, up
-@section Error Filesystem (@samp{type:=error})
-@cindex Error filesystem
-@cindex error, filesystem type
-@cindex Filesystem type; error
-
-The @dfn{error} filesystem type is used internally as a catch-all in
-the case where none of the other filesystems was selected, or some other
-error occurred.
-Lookups and mounts always fail with ``No such file or directory''.
-All other operations trivially succeed.
-
-The error filesystem is not directly accessible.
-
-@node Top-level Filesystem, Root Filesystem, Error Filesystem, Filesystem Types
-@comment node-name, next, previous, up
-@section Top-level Filesystem (@samp{type:=toplvl})
-@cindex Top level filesystem
-@cindex toplvl, filesystem type
-@cindex Filesystem type; toplvl
-
-The @dfn{toplvl} filesystems is derived from the @samp{auto} filesystem
-and is used to mount the top-level automount nodes. Requests of this
-type are automatically generated from the command line arguments and
-can also be passed in by using the ``-M'' option of the @dfn{Amq} command.
-
-@node Root Filesystem, Inheritance Filesystem, Top-level Filesystem, Filesystem Types
-@comment node-name, next, previous, up
-@section Root Filesystem
-@cindex Root filesystem
-@cindex root, filesystem type
-@cindex Filesystem type; root
-
-The @dfn{root} (@samp{type:=root}) filesystem type acts as an internal
-placeholder onto which @i{Amd} can pin @samp{toplvl} mounts. Only one
-node of this type need ever exist and one is created automatically
-during startup. The effect of creating a second root node is undefined.
-
-@node Inheritance Filesystem, , Root Filesystem, Filesystem Types
-@comment node-name, next, previous, up
-@section Inheritance Filesystem
-@cindex Inheritance filesystem
-@cindex Nodes generated on a restart
-@cindex inherit, filesystem type
-@cindex Filesystem type; inherit
-
-The @dfn{inheritance} (@samp{type:=inherit}) filesystem is not directly
-accessible. Instead, internal mount nodes of this type are
-automatically generated when @i{Amd} is started with the ``-r'' option.
-At this time the system mount table is scanned to locate any filesystems
-which are already mounted. If any reference to these filesystems is
-made through @i{Amd} then instead of attempting to mount it, @i{Amd}
-simulates the mount and @dfn{inherits} the filesystem. This allows a
-new version of @i{Amd} to be installed on a live system simply by
-killing the old daemon with @code{SIGTERM} and starting the new one.@refill
-
-This filesystem type is not generally visible externally, but it is
-possible that the output from @samp{amq -m} may list @samp{inherit} as
-the filesystem type. This happens when an inherit operation cannot
-be completed for some reason, usually because a fileserver is down.
-
-@node Run-time Administration, FSinfo, Filesystem Types, Top
-@comment node-name, next, previous, up
-@chapter Run-time Administration
-@cindex Run-time administration
-@cindex Amq command
-
-@menu
-* Starting Amd::
-* Stopping Amd::
-* Controlling Amd::
-@end menu
-
-@node Starting Amd, Stopping Amd, Run-time Administration, Run-time Administration
-@comment node-name, next, previous, up
-@section Starting @i{Amd}
-@cindex Starting Amd
-@cindex Additions to /etc/rc.local
-@cindex /etc/rc.local additions
-@cindex /etc/amd.start
-
-@i{Amd} is best started from @samp{/etc/rc.local}:
-
-@example
-if [ -f /etc/amd.start ]; then
- sh /etc/amd.start; (echo -n ' amd') >/dev/console
-fi
-@end example
-
-@noindent
-The shell script, @samp{amd.start}, contains:
-
-@example
-#!/bin/sh -
-PATH=/etc:/bin:/usr/bin:/usr/ucb:$PATH export PATH
-
-#
-# Either name of logfile or "syslog"
-#
-LOGFILE=syslog
-#LOGFILE=/var/log/amd
-
-#
-# Figure out whether domain name is in host name
-# If the hostname is just the machine name then
-# pass in the name of the local domain so that the
-# hostnames in the map are domain stripped correctly.
-#
-case `hostname` in
-*.*) dmn= ;;
-*) dmn='-d doc.ic.ac.uk'
-esac
-
-#
-# Zap earlier log file
-#
-case "$LOGFILE" in
-*/*)
- mv "$LOGFILE" "$LOGFILE"-
- > "$LOGFILE"
- ;;
-syslog)
- : nothing
- ;;
-esac
-
-cd /usr/sbin
-#
-# -r restart
-# -d dmn local domain
-# -w wait wait between unmount attempts
-# -l log logfile or "syslog"
-#
-eval ./amd -r $dmn -w 240 -l "$LOGFILE" \
- /homes amd.homes -cache:=inc \
- /home amd.home -cache:=inc \
- /vol amd.vol -cache:=inc \
- /n amd.net -cache:=inc
-@end example
-
-If the list of automount points and maps is contained in a file or NIS map
-it is easily incorporated onto the command line:
-
-@example
-...
-eval ./amd -r $dmn -w 240 -l "$LOGFILE" `ypcat -k auto.master`
-@end example
-
-@node Stopping Amd, Controlling Amd, Starting Amd, Run-time Administration
-@comment node-name, next, previous, up
-@section Stopping @i{Amd}
-@cindex Stopping Amd
-@cindex SIGTERM signal
-@cindex SIGINT signal
-
-@i{Amd} stops in response to two signals.
-
-@table @samp
-@item SIGTERM
-causes the top-level automount points to be unmounted and then @i{Amd}
-to exit. Any automounted filesystems are left mounted. They can be
-recovered by restarting @i{Amd} with the ``-r'' command line option.@refill
-
-@item SIGINT
-causes @i{Amd} to attempt to unmount any filesystems which it has
-automounted, in addition to the actions of @samp{SIGTERM}. This signal
-is primarly used for debugging.@refill
-@end table
-
-Actions taken for other signals are undefined.
-
-@node Controlling Amd, , Stopping Amd, Run-time Administration
-@comment node-name, next, previous, up
-@section Controlling @i{Amd}
-@cindex Controlling Amd
-@cindex Discovering what is going on at run-time
-@cindex Listing currently mounted filesystems
-
-It is sometimes desirable or necessary to exercise external control
-over some of @i{Amd}'s internal state. To support this requirement,
-@i{Amd} implements an RPC interface which is used by the @dfn{Amq} program.
-A variety of information is available.
-
-@i{Amq} generally applies an operation, specified by a single letter option,
-to a list of mount points. The default operation is to obtain statistics
-about each mount point. This is similar to the output shown above
-but includes information about the number and type of accesses to each
-mount point.
-
-@menu
-* Amq default:: Default command behaviour.
-* Amq -f option:: Flushing the map cache.
-* Amq -h option:: Controlling a non-local host.
-* Amq -m option:: Obtaining mount statistics.
-* Amq -M-option:: Mounting a volume.
-* Amq -s option:: Obtaining global statistics.
-* Amq -u option:: Forcing volumes to time out.
-* Amq -v option:: Version information.
-* Other Amq options:: Three other special options.
-@end menu
-
-@node Amq default, Amq -f option, Controlling Amd, Controlling Amd
-@comment node-name, next, previous, up
-@subsection @i{Amq} default information
-
-With no arguments, @dfn{Amq} obtains a brief list of all existing
-mounts created by @i{Amd}. This is different from the list displayed by
-@b{df}(1) since the latter only includes system mount points.
-
-@noindent
-The output from this option includes the following information:
-
-@itemize @bullet
-@item
-the automount point,
-@item
-the filesystem type,
-@item
-the mount map or mount information,
-@item
-the internal, or system mount point.
-@end itemize
-
-@noindent
-For example:
-
-@example
-/ root "root" sky:(pid75)
-/homes toplvl /usr/local/etc/amd.homes /homes
-/home toplvl /usr/local/etc/amd.home /home
-/homes/jsp nfs charm:/home/charm /a/charm/home/charm/jsp
-/homes/phjk nfs toytown:/home/toytown /a/toytown/home/toytown/ai/phjk
-@end example
-
-@noindent
-If an argument is given then statistics for that volume name will
-be output. For example:
-
-@example
-What Uid Getattr Lookup RdDir RdLnk Statfs Mounted@@
-/homes 0 1196 512 22 0 30 90/09/14 12:32:55
-/homes/jsp 0 0 0 0 1180 0 90/10/13 12:56:58
-@end example
-
-@table @code
-@item What
-the volume name.
-
-@item Uid
-ignored.
-
-@item Getattr
-the count of NFS @dfn{getattr} requests on this node. This should only be
-non-zero for directory nodes.
-
-@item Lookup
-the count of NFS @dfn{lookup} requests on this node. This should only be
-non-zero for directory nodes.
-
-@item RdDir
-the count of NFS @dfn{readdir} requests on this node. This should only
-be non-zero for directory nodes.
-
-@item RdLnk
-the count of NFS @dfn{readlink} requests on this node. This should be
-zero for directory nodes.
-
-@item Statfs
-the could of NFS @dfn{statfs} requests on this node. This should only
-be non-zero for top-level automount points.
-
-@item Mounted@@
-the date and time the volume name was first referenced.
-@end table
-
-@node Amq -f option, Amq -h option, Amq default, Controlling Amd
-@comment node-name, next, previous, up
-@subsection @i{Amq} -f option
-@cindex Flushing the map cache
-@cindex Map cache, flushing
-
-The ``-f'' option causes @i{Amd} to flush the internal mount map cache.
-This is useful for Hesiod maps since @i{Amd} will not automatically
-notice when they have been updated. The map cache can also be
-synchronised with the map source by using the @samp{sync} option
-(@pxref{Automount Filesystem}).@refill
-
-@node Amq -h option, Amq -m option, Amq -f option, Controlling Amd
-@comment node-name, next, previous, up
-@subsection @i{Amq} -h option
-@cindex Querying an alternate host
-
-By default the local host is used. In an HP-UX cluster the root server
-is used since that is the only place in the cluster where @i{Amd} will
-be running. To query @i{Amd} on another host the ``-h'' option should
-be used.
-
-@node Amq -m option, Amq -M-option, Amq -h option, Controlling Amd
-@comment node-name, next, previous, up
-@subsection @i{Amq} -m option
-
-The ``-m'' option displays similar information about mounted
-filesystems, rather than automount points. The output includes the
-following information:
-
-@itemize @bullet
-@item
-the mount information,
-@item
-the mount point,
-@item
-the filesystem type,
-@item
-the number of references to this filesystem,
-@item
-the server hostname,
-@item
-the state of the file server,
-@item
-any error which has occured.
-@end itemize
-
-For example:
-
-@example
-"root" truth:(pid602) root 1 localhost is up
-hesiod.home /home toplvl 1 localhost is up
-hesiod.vol /vol toplvl 1 localhost is up
-hesiod.homes /homes toplvl 1 localhost is up
-amy:/home/amy /a/amy/home/amy nfs 5 amy is up
-swan:/home/swan /a/swan/home/swan nfs 0 swan is up (Permission denied)
-ex:/home/ex /a/ex/home/ex nfs 0 ex is down
-@end example
-
-When the reference count is zero the filesystem is not mounted but
-the mount point and server information is still being maintained
-by @i{Amd}.
-
-@node Amq -M-option, Amq -s option, Amq -m option, Controlling Amd
-@comment node-name, next, previous, up
-@subsection @i{Amq} -M option
-
-The ``-M'' option passes a new map entry to @i{Amd} and waits for it to
-be evaluated, possibly causing a mount. For example, the following
-command would cause @samp{/home/toytown} on host @samp{toytown} to be
-mounted locally on @samp{/mnt/toytown}.
-
-@example
-amq -M '/mnt/toytown type:=nfs;rfs:=/home/toytown;rhost:=toytown;fs:=$@{key@}'
-@end example
-
-@i{Amd} applies some simple security checks before allowing this
-operation. The check tests whether the incoming request is from a
-privileged UDP port on the local machine. ``Permission denied'' is
-returned if the check fails.
-
-A future release of @i{Amd} will include code to allow the @b{mount}(8)
-command to mount automount points:
-
-@example
-mount -t amd /vol hesiod.vol
-@end example
-
-This will then allow @i{Amd} to be controlled from the standard system
-filesystem mount list.
-
-@node Amq -s option, Amq -u option, Amq -M-option, Controlling Amd
-@comment node-name, next, previous, up
-@subsection @i{Amq} -s option
-@cindex Global statistics
-@cindex Statistics
-
-The ``-s'' option displays global statistics. If any other options are specified
-or any filesystems named then this option is ignored. For example:
-
-@example
-requests stale mount mount unmount
-deferred fhandles ok failed failed
-1054 1 487 290 7017
-@end example
-
-@table @samp
-@item Deferred requests
-are those for which an immediate reply could not be constructed. For
-example, this would happen if a background mount was required.
-
-@item Stale filehandles
-counts the number of times the kernel passes a stale filehandle to @i{Amd}.
-Large numbers indicate problems.
-
-@item Mount ok
-counts the number of automounts which were successful.
-
-@item Mount failed
-counts the number of automounts which failed.
-
-@item Unmount failed
-counts the number of times a filesystem could not be unmounted. Very
-large numbers here indicate that the time between unmount attempts
-should be increased.
-@end table
-
-@node Amq -u option, Amq -v option, Amq -s option, Controlling Amd
-@comment node-name, next, previous, up
-@subsection @i{Amq} -u option
-@cindex Forcing filesystem to time out
-@cindex Unmounting a filesystem
-
-The ``-u'' option causes the time-to-live interval of the named mount
-points to be expired, thus causing an unmount attempt. This is the only
-safe way to unmount an automounted filesystem. It is not possible to
-unmount a filesystem which has been mounted with the @samp{nounmount}
-flag.
-
-@c The ``-H'' option informs @i{Amd} that the specified mount point has hung -
-@c as if its keepalive timer had expired.
-
-@node Amq -v option, Other Amq options, Amq -u option, Controlling Amd
-@comment node-name, next, previous, up
-@subsection @i{Amq} -v option
-@cindex Version information at run-time
-
-The ``-v'' option displays the version of @i{Amd} in a similar way to
-@i{Amd}'s ``-v'' option.
-
-@node Other Amq options, , Amq -v option, Controlling Amd
-@comment node-name, next, previous, up
-@subsection Other @i{Amq} options
-
-Three other operations are implemented. These modify the state of
-@i{Amd} as a whole, rather than any particular filesystem. The ``-l'',
-``-x'' and ``-D'' options have exactly the same effect as @i{Amd}'s
-corresponding command line options. The ``-l'' option is rejected by
-@i{Amd} in the current version for obvious security reasons. When
-@i{Amd} receives a ``-x''flag it limits the log options being modified
-to those which were not enabled at startup. This prevents a user
-turning @emph{off} any logging option which was specified at startup,
-though any which have been turned off since then can still be turned
-off. The ``-D'' option has a similar behaviour.
-
-@node FSinfo, Examples, Run-time Administration, Top
-@comment node-name, next, previous, up
-@chapter FSinfo
-@cindex FSinfo
-@cindex Filesystem info package
-
-@menu
-* FSinfo Overview:: Introduction to FSinfo.
-* Using FSinfo:: Basic concepts.
-* FSinfo Grammar:: Language syntax, semantics and examples.
-* FSinfo host definitions:: Defining a new host.
-* FSinfo host attributes:: Definable host attributes.
-* FSinfo filesystems:: Defining locally attached filesystems.
-* FSinfo static mounts:: Defining additional static mounts.
-* FSinfo automount definitions::
-* FSinfo Command Line Options::
-* FSinfo errors::
-@end menu
-
-@node FSinfo Overview, Using FSinfo, FSinfo, FSinfo
-@comment node-name, next, previous, up
-@section @i{FSinfo} overview
-@cindex FSinfo overview
-
-@i{FSinfo} is a filesystem management tool. It has been designed to
-work with @i{Amd} to help system administrators keep track of the ever
-increasing filesystem namespace under their control.
-
-The purpose of @i{FSinfo} is to generate all the important standard
-filesystem data files from a single set of input data. Starting with a
-single data source guarantees that all the generated files are
-self-consistent. One of the possible output data formats is a set of
-@i{Amd} maps which can be used amongst the set of hosts described in the
-input data.
-
-@i{FSinfo} implements a declarative language. This language is
-specifically designed for describing filesystem namespace and physical
-layouts. The basic declaration defines a mounted filesystem including
-its device name, mount point, and all the volumes and access
-permissions. @i{FSinfo} reads this information and builds an internal
-map of the entire network of hosts. Using this map, many different data
-formats can be produced including @file{/etc/fstab},
-@file{/etc/exports}, @i{Amd} mount maps and
-@file{/etc/bootparams}.@refill
-
-@node Using FSinfo, FSinfo Grammar, FSinfo Overview, FSinfo
-@comment node-name, next, previous, up
-@section Using @i{FSinfo}
-@cindex Using FSinfo
-
-The basic strategy when using @i{FSinfo} is to gather all the
-information about all disks on all machines into one set of
-declarations. For each machine being managed, the following data is
-required:
-
-@itemize @bullet
-@item
-Hostname
-@item
-List of all filesystems and, optionally, their mount points.
-@item
-Names of volumes stored on each filesystem.
-@item
-NFS export information for each volume.
-@item
-The list of static filesystem mounts.
-@end itemize
-
-The following information can also be entered into the same
-configuration files so that all data can be kept in one place.
-
-@itemize @bullet
-@item
-List of network interfaces
-@item
-IP address of each interface
-@item
-Hardware address of each interface
-@item
-Dumpset to which each filesystem belongs
-@item
-and more @dots{}
-@end itemize
-
-To generate @i{Amd} mount maps, the automount tree must also be defined
-(@pxref{FSinfo automount definitions}). This will have been designed at
-the time the volume names were allocated. Some volume names will not be
-automounted, so @i{FSinfo} needs an explicit list of which volumes
-should be automounted.@refill
-
-Hostnames are required at several places in the @i{FSinfo} language. It
-is important to stick to either fully qualified names or unqualified
-names. Using a mixture of the two will inevitably result in confusion.
-
-Sometimes volumes need to be referenced which are not defined in the set
-of hosts being managed with @i{FSinfo}. The required action is to add a
-dummy set of definitions for the host and volume names required. Since
-the files generated for those particular hosts will not be used on them,
-the exact values used is not critical.
-
-@node FSinfo Grammar, FSinfo host definitions, Using FSinfo, FSinfo
-@comment node-name, next, previous, up
-@section @i{FSinfo} grammar
-@cindex FSinfo grammar
-@cindex Grammar, FSinfo
-
-@i{FSinfo} has a relatively simple grammar. Distinct syntactic
-constructs exist for each of the different types of data, though they
-share a common flavour. Several conventions are used in the grammar
-fragments below.
-
-The notation, @i{list(}@t{xxx}@i{)}, indicates a list of zero or more
-@t{xxx}'s. The notation, @i{opt(}@t{xxx}@i{)}, indicates zero or one
-@t{xxx}. Items in double quotes, @i{eg} @t{"host"}, represent input
-tokens. Items in angle brackets, @i{eg} @var{<hostname>}, represent
-strings in the input. Strings need not be in double quotes, except to
-differentiate them from reserved words. Quoted strings may include the
-usual set of C ``@t{\}'' escape sequences with one exception: a
-backslash-newline-whitespace sequence is squashed into a single space
-character. To defeat this feature, put a further backslash at the start
-of the second line.
-
-At the outermost level of the grammar, the input consists of a
-sequence of host and automount declarations. These declarations are
-all parsed before they are analyzed. This means they can appear in
-any order and cyclic host references are possible.
-
-@example
-fsinfo : @i{list(}fsinfo_attr@i{)} ;
-
-fsinfo_attr : host | automount ;
-@end example
-
-@menu
-* FSinfo host definitions::
-* FSinfo automount definitions::
-@end menu
-
-@node FSinfo host definitions, FSinfo host attributes, FSinfo Grammar, FSinfo
-@comment node-name, next, previous, up
-@section @i{FSinfo} host definitions
-@cindex FSinfo host definitions
-@cindex Defining a host, FSinfo
-
-A host declaration consists of three parts: a set of machine attribute
-data, a list of filesystems physically attached to the machine, and a
-list of additional statically mounted filesystems.
-
-@example
-host : "host" host_data @i{list(}filesystem@i{@i{)}} @i{list(}mount@i{@i{)}} ;
-@end example
-
-Each host must be declared in this way exactly once. Such things as the
-hardware address, the architecture and operating system types and the
-cluster name are all specified within the @dfn{host data}.
-
-All the disks the machine has should then be described in the @dfn{list
-of filesystems}. When describing disks, you can specify what
-@dfn{volname} the disk/partition should have and all such entries are
-built up into a dictionary which can then be used for building the
-automounter maps.
-
-The @dfn{list of mounts} specifies all the filesystems that should be
-statically mounted on the machine.
-
-@menu
-* FSinfo host attributes::
-* FSinfo filesystems::
-* FSinfo static mounts::
-@end menu
-
-@node FSinfo host attributes, FSinfo filesystems, FSinfo host definitions , FSinfo host definitions
-@comment node-name, next, previous, up
-@section @i{FSinfo} host attributes
-@cindex FSinfo host attributes
-@cindex Defining host attributes, FSinfo
-
-The host data, @dfn{host_data}, always includes the @dfn{hostname}. In
-addition, several other host attributes can be given.
-
-@example
-host_data : @var{<hostname>}
- | "@{" @i{list(}host_attrs@i{)} "@}" @var{<hostname>}
- ;
-
-host_attrs : host_attr "=" @var{<string>}
- | netif
- ;
-
-host_attr : "config"
- | "arch"
- | "os"
- | "cluster"
- ;
-@end example
-
-The @dfn{hostname} is, typically, the fully qualified hostname of the
-machine.
-
-Examples:
-
-@example
-host dylan.doc.ic.ac.uk
-
-host @{
- os = hpux
- arch = hp300
-@} dougal.doc.ic.ac.uk
-@end example
-
-The options that can be given as host attributes are shown below.
-
-@menu
-* netif Option: FSinfo host netif
-* config Option: FSinfo host config
-* arch Option: FSinfo host arch
-* os Option: FSinfo host os
-* cluster Option: FSinfo host cluster
-@end menu
-
-@node FSinfo host netif, FSinfo host config, , FSinfo host attributes
-@comment node-name, next, previous, up
-@subsection netif Option
-
-This defines the set of network interfaces configured on the machine.
-The interface attributes collected by @i{FSinfo} are the IP address,
-subnet mask and hardware address. Multiple interfaces may be defined
-for hosts with several interfaces by an entry for each interface. The
-values given are sanity checked, but are currently unused for anything
-else.
-
-@example
-netif : "netif" @var{<string>} "@{" @i{list(}netif_attrs@i{)} "@}" ;
-
-netif_attrs : netif_attr "=" @var{<string>} ;
-
-netif_attr : "inaddr" | "netmask" | "hwaddr" ;
-@end example
-
-Examples:
-
-@example
-netif ie0 @{
- inaddr = 129.31.81.37
- netmask = 0xfffffe00
- hwaddr = "08:00:20:01:a6:a5"
-@}
-
-netif ec0 @{ @}
-@end example
-
-@node FSinfo host config, FSinfo host arch, FSinfo host netif, FSinfo host attributes
-@comment node-name, next, previous, up
-@subsection config Option
-@cindex FSinfo config host attribute
-@cindex config, FSinfo host attribute
-
-This option allows you to specify configuration variables for the
-startup scripts (@file{rc} scripts). A simple string should immediately
-follow the keyword.
-
-Example:
-
-@example
-config "NFS_SERVER=true"
-config "ZEPHYR=true"
-@end example
-
-This option is currently unsupported.
-
-@node FSinfo host arch, FSinfo host os, FSinfo host config, FSinfo host attributes
-@comment node-name, next, previous, up
-@subsection arch Option
-@cindex FSinfo arch host attribute
-@cindex arch, FSinfo host attribute
-
-This defines the architecture of the machine. For example:
-
-@example
-arch = hp300
-@end example
-
-This is intended to be of use when building architecture specific
-mountmaps, however, the option is currently unsupported.
-
-@node FSinfo host os, FSinfo host cluster, FSinfo host arch, FSinfo host attributes
-@comment node-name, next, previous, up
-@subsection os Option
-@cindex FSinfo os host attribute
-@cindex os, FSinfo host attribute
-
-This defines the operating system type of the host. For example:
-
-@example
-os = hpux
-@end example
-
-This information is used when creating the @file{fstab} files, for
-example in choosing which format to use for the @file{fstab} entries
-within the file.
-
-@node FSinfo host cluster, , FSinfo host os, FSinfo host attributes
-@comment node-name, next, previous, up
-@subsection cluster Option
-@cindex FSinfo cluster host attribute
-@cindex cluster, FSinfo host attribute
-
-This is used for specifying in which cluster the machine belongs. For
-example:
-
-@example
-cluster = "theory"
-@end example
-
-The cluster is intended to be used when generating the automount maps,
-although it is currently unsupported.
-
-@node FSinfo filesystems, FSinfo static mounts, FSinfo host attributes, FSinfo host definitions
-@comment node-name, next, previous, up
-@section @i{FSinfo} filesystems
-@cindex FSinfo filesystems
-
-The list of physically attached filesystems follows the machine
-attributes. These should define all the filesystems available from this
-machine, whether exported or not. In addition to the device name,
-filesystems have several attributes, such as filesystem type, mount
-options, and @samp{fsck} pass number which are needed to generate
-@file{fstab} entries.
-
-@example
-filesystem : "fs" @var{<device>} "@{" @i{list(}fs_data@i{)} "@}" ;
-
-fs_data : fs_data_attr "=" @var{<string>}
- | mount
- ;
-
-fs_data_attr
- : "fstype" | "opts" | "passno"
- | "freq" | "dumpset" | "log"
- ;
-@end example
-
-Here, @var{<device>} is the device name of the disk (for example,
-@file{/dev/dsk/2s0}). The device name is used for building the mount
-maps and for the @file{fstab} file. The attributes that can be
-specified are shown in the following section.
-
-The @i{FSinfo} configuration file for @code{dylan.doc.ic.ac.uk} is listed below.
-
-@example
-host dylan.doc.ic.ac.uk
-
-fs /dev/dsk/0s0 @{
- fstype = swap
-@}
-
-fs /dev/dsk/0s0 @{
- fstype = hfs
- opts = rw,noquota,grpid
- passno = 0;
- freq = 1;
- mount / @{ @}
-@}
-
-fs /dev/dsk/1s0 @{
- fstype = hfs
- opts = defaults
- passno = 1;
- freq = 1;
- mount /usr @{
- local @{
- exportfs "dougal eden dylan zebedee brian"
- volname /nfs/hp300/local
- @}
- @}
-@}
-
-fs /dev/dsk/2s0 @{
- fstype = hfs
- opts = defaults
- passno = 1;
- freq = 1;
- mount default @{
- exportfs "toytown_clients hangers_on"
- volname /home/dylan/dk2
- @}
-@}
-
-fs /dev/dsk/3s0 @{
- fstype = hfs
- opts = defaults
- passno = 1;
- freq = 1;
- mount default @{
- exportfs "toytown_clients hangers_on"
- volname /home/dylan/dk3
- @}
-@}
-
-fs /dev/dsk/5s0 @{
- fstype = hfs
- opts = defaults
- passno = 1;
- freq = 1;
- mount default @{
- exportfs "toytown_clients hangers_on"
- volname /home/dylan/dk5
- @}
-@}
-@end example
-
-@menu
-* fstype Option: FSinfo filesystems fstype
-* opts Option: FSinfo filesystems opts
-* passno Option: FSinfo filesystems passno
-* freq Option: FSinfo filesystems freq
-* mount Option: FSinfo filesystems mount
-* dumpset Option: FSinfo filesystems dumpset
-* log Option: FSinfo filesystems log
-@end menu
-
-@node FSinfo filesystems fstype, FSinfo filesystems opts, , FSinfo filesystems
-@comment node-name, next, previous, up
-@subsection fstype Option
-@cindex FSinfo fstype filesystems option
-@cindex fstype, FSinfo filesystems option
-@cindex export, FSinfo special fstype
-
-This specifies the type of filesystem being declared and will be placed
-into the @file{fstab} file as is. The value of this option will be
-handed to @code{mount} as the filesystem type---it should have such
-values as @code{4.2}, @code{nfs} or @code{swap}. The value is not
-examined for correctness.
-
-There is one special case. If the filesystem type is specified as
-@samp{export} then the filesystem information will not be added to the
-host's @file{fstab} information, but it will still be visible on the
-network. This is useful for defining hosts which contain referenced
-volumes but which are not under full control of @i{FSinfo}.
-
-Example:
-
-@example
-fstype = swap
-@end example
-
-@node FSinfo filesystems opts, FSinfo filesystems passno,FSinfo filesystems fstype, FSinfo filesystems
-@comment node-name, next, previous, up
-@subsection opts Option
-@cindex FSinfo opts filesystems option
-@cindex opts, FSinfo filesystems option
-
-This defines any options that should be given to @b{mount}(8) in the
-@file{fstab} file. For example:
-
-@example
-opts = rw,nosuid,grpid
-@end example
-
-@node FSinfo filesystems passno, FSinfo filesystems freq, FSinfo filesystems opts, FSinfo filesystems
-@comment node-name, next, previous, up
-@subsection passno Option
-@cindex FSinfo passno filesystems option
-@cindex passno, FSinfo filesystems option
-
-This defines the @b{fsck}(8) pass number in which to check the
-filesystem. This value will be placed into the @file{fstab} file.
-
-Example:
-
-@example
-passno = 1
-@end example
-
-@node FSinfo filesystems freq, FSinfo filesystems mount, FSinfo filesystems passno, FSinfo filesystems
-@comment node-name, next, previous, up
-@subsection freq Option
-@cindex FSinfo freq filesystems option
-@cindex freq, FSinfo filesystems option
-
-This defines the interval (in days) between dumps. The value is placed
-as is into the @file{fstab} file.
-
-Example:
-
-@example
-freq = 3
-@end example
-
-@node FSinfo filesystems mount, FSinfo filesystems dumpset, FSinfo filesystems freq, FSinfo filesystems
-@comment node-name, next, previous, up
-@subsection mount Option
-@cindex FSinfo mount filesystems option
-@cindex mount, FSinfo filesystems option
-@cindex exportfs, FSinfo mount option
-@cindex volname, FSinfo mount option
-@cindex sel, FSinfo mount option
-
-This defines the mountpoint at which to place the filesystem. If the
-mountpoint of the filesystem is specified as @code{default}, then the
-filesystem will be mounted in the automounter's tree under its volume
-name and the mount will automatically be inherited by the automounter.
-
-Following the mountpoint, namespace information for the filesystem may
-be described. The options that can be given here are @code{exportfs},
-@code{volname} and @code{sel}.
-
-The format is:
-
-@example
-mount : "mount" vol_tree ;
-
-vol_tree : @i{list(}vol_tree_attr@i{)} ;
-
-vol_tree_attr
- : @var{<string>} "@{" @i{list(}vol_tree_info@i{)} vol_tree "@}" ;
-
-vol_tree_info
- : "exportfs" @var{<export-data>}
- | "volname" @var{<volname>}
- | "sel" @var{<selector-list>}
- ;
-@end example
-
-Example:
-
-@example
-mount default @{
- exportfs "dylan dougal florence zebedee"
- volname /vol/andrew
-@}
-@end example
-
-In the above example, the filesystem currently being declared will have
-an entry placed into the @file{exports} file allowing the filesystem to
-be exported to the machines @code{dylan}, @code{dougal}, @code{florence}
-and @code{zebedee}. The volume name by which the filesystem will be
-referred to remotely, is @file{/vol/andrew}. By declaring the
-mountpoint to be @code{default}, the filesystem will be mounted on the
-local machine in the automounter tree, where @i{Amd} will automatically
-inherit the mount as @file{/vol/andrew}.@refill
-
-@table @samp
-@item exportfs
-a string defining which machines the filesystem may be exported to.
-This is copied, as is, into the @file{exports} file---no sanity checking
-is performed on this string.@refill
-
-@item volname
-a string which declares the remote name by which to reference the
-filesystem. The string is entered into a dictionary and allows you to
-refer to this filesystem in other places by this volume name.@refill
-
-@item sel
-a string which is placed into the automounter maps as a selector for the
-filesystem.@refill
-
-@end table
-
-@node FSinfo filesystems dumpset, FSinfo filesystems log, FSinfo filesystems mount, FSinfo filesystems
-@comment node-name, next, previous, up
-@subsection dumpset Option
-@cindex FSinfo dumpset filesystems option
-@cindex dumpset, FSinfo filesystems option
-
-This provides support for Imperial College's local file backup tools and
-is not documented further here.
-
-@node FSinfo filesystems log, , FSinfo filesystems dumpset, FSinfo filesystems
-@comment node-name, next, previous, up
-@subsection log Option
-@cindex FSinfo log filesystems option
-@cindex log, FSinfo filesystems option
-
-Specifies the log device for the current filesystem. This is ignored if
-not required by the particular filesystem type.
-
-@node FSinfo static mounts, FSinfo automount definitions , FSinfo filesystems, FSinfo host definitions
-@comment node-name, next, previous, up
-@section @i{FSinfo} static mounts
-@cindex FSinfo static mounts
-@cindex Statically mounts filesystems, FSinfo
-
-Each host may also have a number of statically mounted filesystems. For
-example, the host may be a diskless workstation in which case it will
-have no @code{fs} declarations. In this case the @code{mount}
-declaration is used to determine from where its filesystems will be
-mounted. In addition to being added to the @file{fstab} file, this
-information can also be used to generate a suitable @file{bootparams}
-file.@refill
-
-@example
-mount : "mount" @var{<volname>} @i{list(}localinfo@i{)} ;
-
-localinfo : localinfo_attr @var{<string>} ;
-
-localinfo_attr
- : "as"
- | "from"
- | "fstype"
- | "opts"
- ;
-@end example
-
-The filesystem specified to be mounted will be searched for in the
-dictionary of volume names built when scanning the list of hosts'
-definitions.
-
-The attributes have the following semantics:
-@table @samp
-@item from @var{machine}
-mount the filesystem from the machine with the hostname of
-@dfn{machine}.@refill
-
-@item as @var{mountpoint}
-mount the filesystem locally as the name given, in case this is
-different from the advertised volume name of the filesystem.
-
-@item opts @var{options}
-native @b{mount}(8) options.
-
-@item fstype @var{type}
-type of filesystem to be mounted.
-@end table
-
-An example:
-
-@example
-mount /export/exec/hp300/local as /usr/local
-@end example
-
-If the mountpoint specified is either @file{/} or @file{swap}, the
-machine will be considered to be booting off the net and this will be
-noted for use in generating a @file{bootparams} file for the host which
-owns the filesystems.
-
-@node FSinfo automount definitions, FSinfo Command Line Options, FSinfo static mounts, FSinfo
-@comment node-name, next, previous, up
-@section Defining an @i{Amd} Mount Map in @i{FSinfo}
-@cindex FSinfo automount definitions
-@cindex Defining an Amd mount map, FSinfo
-
-The maps used by @i{Amd} can be constructed from @i{FSinfo} by defining
-all the automount trees. @i{FSinfo} takes all the definitions found and
-builds one map for each top level tree.
-
-The automount tree is usually defined last. A single automount
-configuration will usually apply to an entire management domain. One
-@code{automount} declaration is needed for each @i{Amd} automount point.
-@i{FSinfo} determines whether the automount point is @dfn{direct}
-(@pxref{Direct Automount Filesystem}) or @dfn{indirect}
-(@pxref{Top-level Filesystem}). Direct automount points are
-distinguished by the fact that there is no underlying
-@dfn{automount_tree}.@refill
-
-@example
-automount : "automount" opt(auto_opts@i{)} automount_tree ;
-
-auto_opts : "opts" @var{<mount-options>} ;
-
-automount_tree
- : @i{list(}automount_attr@i{)}
- ;
-
-automount_attr
- : @var{<string>} "=" @var{<volname>}
- | @var{<string>} "->" @var{<symlink>}
- | @var{<string>} "@{" automount_tree "@}"
- ;
-@end example
-
-If @var{<mount-options>} is given, then it is the string to be placed in
-the maps for @i{Amd} for the @code{opts} option.
-
-A @dfn{map} is typically a tree of filesystems, for example @file{home}
-normally contains a tree of filesystems representing other machines in
-the network.
-
-A map can either be given as a name representing an already defined
-volume name, or it can be a tree. A tree is represented by placing
-braces after the name. For example, to define a tree @file{/vol}, the
-following map would be defined:
-
-@example
-automount /vol @{ @}
-@end example
-
-Within a tree, the only items that can appear are more maps.
-For example:
-
-@example
-automount /vol @{
- andrew @{ @}
- X11 @{ @}
-@}
-@end example
-
-In this case, @i{FSinfo} will look for volumes named @file{/vol/andrew}
-and @file{/vol/X11} and a map entry will be generated for each. If the
-volumes are defined more than once, then @i{FSinfo} will generate
-a series of alternate entries for them in the maps.@refill
-
-Instead of a tree, either a link (@var{name} @code{->}
-@var{destination}) or a reference can be specified (@var{name} @code{=}
-@var{destination}). A link creates a symbolic link to the string
-specified, without further processing the entry. A reference will
-examine the destination filesystem and optimise the reference. For
-example, to create an entry for @code{njw} in the @file{/homes} map,
-either of the two forms can be used:@refill
-
-@example
-automount /homes @{
- njw -> /home/dylan/njw
-@}
-@end example
-
-or
-
-@example
-automount /homes @{
- njw = /home/dylan/njw
-@}
-@end example
-
-In the first example, when @file{/homes/njw} is referenced from @i{Amd},
-a link will be created leading to @file{/home/dylan/njw} and the
-automounter will be referenced a second time to resolve this filename.
-The map entry would be:
-
-@example
-njw type:=link;fs:=/home/dylan/njw
-@end example
-
-In the second example, the destination directory is analysed and found
-to be in the filesystem @file{/home/dylan} which has previously been
-defined in the maps. Hence the map entry will look like:
-
-@example
-njw rhost:=dylan;rfs:=/home/dylan;sublink:=njw
-@end example
-
-Creating only one symbolic link, and one access to @i{Amd}.
-
-@c ---------------------------------------------
-@node FSinfo Command Line Options, FSinfo errors, FSinfo automount definitions, FSinfo
-@comment node-name, next, previous, up
-@section @i{FSinfo} Command Line Options
-@cindex FSinfo command line options
-@cindex Command line options, FSinfo
-
-@i{FSinfo} is started from the command line by using the command:
-
-@example
-fsinfo [@i{options}] files ...
-@end example
-
-The input to @i{FSinfo} is a single set of definitions of machines and
-automount maps. If multiple files are given on the command-line, then
-the files are concatenated together to form the input source. The files
-are passed individually through the C pre-processor before being parsed.
-
-Several options define a prefix for the name of an output file. If the
-prefix is not specified no output of that type is produced. The suffix
-used will correspond either to the hostname to which a file belongs, or
-to the type of output if only one file is produced. Dumpsets and the
-@file{bootparams} file are in the latter class. To put the output into
-a subdirectory simply put a @file{/} at the end of the prefix, making
-sure that the directory has already been made before running
-@samp{fsinfo}.
-
-@menu
-* -a FSinfo Option:: Amd automount directory:
-* -b FSinfo Option:: Prefix for bootparams files.
-* -d FSinfo Option:: Prefix for dumpset data files.
-* -e FSinfo Option:: Prefix for exports files.
-* -f FSinfo Option:: Prefix for fstab files.
-* -h FSinfo Option:: Local hostname.
-* -m FSinfo Option:: Prefix for automount maps.
-* -q FSinfo Option:: Ultra quiet mode.
-* -v FSinfo Option:: Verbose mode.
-* -I FSinfo Option:: Define new #include directory.
-* -D-FSinfo Option:: Define macro.
-* -U FSinfo Option:: Undefine macro.
-@end menu
-
-@node -a FSinfo Option, -b FSinfo Option, FSinfo Command Line Options, FSinfo Command Line Options
-@comment node-name, next, previous, up
-@subsection @code{-a} @var{autodir}
-
-Specifies the directory name in which to place the automounter's
-mountpoints. This defaults to @file{/a}. Some sites have the autodir set
-to be @file{/amd}, and this would be achieved by:
-
-@example
-fsinfo -a /amd ...
-@end example
-
-@node -b FSinfo Option, -d FSinfo Option, -a FSinfo Option, FSinfo Command Line Options
-@comment node-name, next, previous, up
-@subsection @code{-b} @var{bootparams}
-@cindex bootparams, FSinfo prefix
-
-This specifies the prefix for the @file{bootparams} filename. If it is
-not given, then the file will not be generated. The @file{bootparams}
-file will be constructed for the destination machine and will be placed
-into a file named @file{bootparams} and prefixed by this string. The
-file generated contains a list of entries describing each diskless
-client that can boot from the destination machine.
-
-As an example, to create a @file{bootparams} file in the directory
-@file{generic}, the following would be used:
-
-@example
-fsinfo -b generic/ ...
-@end example
-
-@node -d FSinfo Option, -e FSinfo Option, -b FSinfo Option, FSinfo Command Line Options
-@comment node-name, next, previous, up
-@subsection @code{-d} @var{dumpsets}
-@cindex dumpset, FSinfo prefix
-
-This specifies the prefix for the @file{dumpsets} file. If it is not
-specified, then the file will not be generated. The file will be for
-the destination machine and will be placed into a filename
-@file{dumpsets}, prefixed by this string. The @file{dumpsets} file is
-for use by Imperial College's local backup system.
-
-For example, to create a dumpsets file in the directory @file{generic},
-then you would use the following:
-
-@example
-fsinfo -d generic/ ...
-@end example
-
-@node -e FSinfo Option, -f FSinfo Option, -d FSinfo Option, FSinfo Command Line Options
-@comment node-name, next, previous, up
-@subsection @code{-e} @var{exportfs}
-@cindex exports, FSinfo prefix
-
-Defines the prefix for the @file{exports} files. If it is not given,
-then the file will not be generated. For each machine defined in the
-configuration files as having disks, an @file{exports} file is
-constructed and given a filename determined by the name of the machine,
-prefixed with this string. If a machine is defined as diskless, then no
-@file{exports} file will be created for it. The files contain entries
-for directories on the machine that may be exported to clients.
-
-Example: To create the @file{exports} files for each diskful machine
-and place them into the directory @file{exports}:
-
-@example
-fsinfo -e exports/ ...
-@end example
-
-@node -f FSinfo Option, -h FSinfo Option, -e FSinfo Option, FSinfo Command Line Options
-@comment node-name, next, previous, up
-@subsection @code{-f} @var{fstab}
-@cindex fstab, FSinfo prefix
-
-This defines the prefix for the @file{fstab} files. The files will only
-be created if this prefix is defined. For each machine defined in the
-configuration files, a @file{fstab} file is created with the filename
-determined by prefixing this string with the name of the machine. These
-files contain entries for filesystems and partitions to mount at boot
-time.
-
-Example, to create the files in the directory @file{fstabs}:
-
-@example
-fsinfo -f fstabs/ ...
-@end example
-
-@node -h FSinfo Option, -m FSinfo Option, -f FSinfo Option, FSinfo Command Line Options
-@comment node-name, next, previous, up
-@subsection @code{-h} @var{hostname}
-@cindex hostname, FSinfo command line option
-
-Defines the hostname of the destination machine to process for. If this
-is not specified, it defaults to the local machine name, as returned by
-@b{gethostname}(2).
-
-Example:
-
-@example
-fsinfo -h dylan.doc.ic.ac.uk ...
-@end example
-
-@node -m FSinfo Option, -q FSinfo Option, -h FSinfo Option, FSinfo Command Line Options
-@comment node-name, next, previous, up
-@subsection @code{-m} @var{mount-maps}
-@cindex maps, FSinfo command line option
-
-Defines the prefix for the automounter files. The maps will only be
-produced if this prefix is defined. The mount maps suitable for the
-network defined by the configuration files will be placed into files
-with names calculated by prefixing this string to the name of each map.
-
-For example, to create the automounter maps and place them in the
-directory @file{automaps}:
-
-@example
-fsinfo -m automaps/ ...
-@end example
-
-@node -q FSinfo Option, -v FSinfo Option, -m FSinfo Option, FSinfo Command Line Options
-@comment node-name, next, previous, up
-@subsection @code{-q}
-@cindex quiet, FSinfo command line option
-
-Selects quiet mode. @i{FSinfo} suppress the ``running commentary'' and
-only outputs any error messages which are generated.
-
-@node -v FSinfo Option, -D-FSinfo Option, -q FSinfo Option, FSinfo Command Line Options
-@comment node-name, next, previous, up
-@subsection @code{-v}
-@cindex verbose, FSinfo command line option
-
-Selects verbose mode. When this is activated, the program will display
-more messages, and display all the information discovered when
-performing the semantic analysis phase. Each verbose message is output
-to @file{stdout} on a line starting with a @samp{#} character.
-
-@node -D-FSinfo Option, -I FSinfo Option, -v FSinfo Option, FSinfo Command Line Options
-@comment node-name, next, previous, up
-@subsection @code{-D} @var{name[=defn]}
-
-Defines a symbol @dfn{name} for the preprocessor when reading the
-configuration files. Equivalent to @code{#define} directive.
-
-@node -I FSinfo Option, -U FSinfo Option, -D-FSinfo Option, FSinfo Command Line Options
-@comment node-name, next, previous, up
-@subsection @code{-I} @var{directory}
-
-This option is passed into the preprocessor for the configuration files.
-It specifies directories in which to find include files
-
-@node -U FSinfo Option, , -I FSinfo Option, FSinfo Command Line Options
-@comment node-name, next, previous, up
-@subsection @code{-U} @var{name}
-
-Removes any initial definition of the symbol @dfn{name}. Inverse of the
-@code{-D} option.
-
-@node FSinfo errors, , FSinfo Command Line Options, FSinfo
-@comment node-name, next, previous, up
-@section Errors produced by @i{FSinfo}
-@cindex FSinfo error messages
-
-The following table documents the errors and warnings which @i{FSinfo} may produce.
-
-@table @t
-
-@item can't open @var{filename} for writing
-Occurs if any errors are encountered when opening an output file.@refill
-
-@item unknown host attribute
-Occurs if an unrecognised keyword is used when defining a host.@refill
-
-@item unknown filesystem attribute
-Occurs if an unrecognised keyword is used when defining a host's
-filesystems.@refill
-
-@item not allowed '/' in a directory name
-When reading the configuration input, if there is a filesystem
-definition which contains a pathname with multiple directories for any
-part of the mountpoint element, and it is not a single absolute path,
-then this message will be produced by the parser.@refill
-
-@item unknown directory attribute
-If an unknown keyword is found while reading the definition of a hosts's
-filesystem mount option.
-
-@item unknown mount attribute
-Occurs if an unrecognised keyword is found while parsing the list of
-static mounts.@refill
-
-@item " expected
-Occurs if an unescaped newline is found in a quoted string.
-
-@item unknown \ sequence
-Occurs if an unknown escape sequence is found inside a string. Within a
-string, you can give the standard C escape sequences for strings, such
-as newlines and tab characters.@refill
-
-@item @var{filename}: cannot open for reading
-If a file specified on the command line as containing configuration data
-could not be opened.@refill
-
-@item end of file within comment
-A comment was unterminated before the end of one of the configuration
-files.
-
-@item host field "@var{field-name}" already set
-If duplicate definitions are given for any of the fields with a host
-definition.
-
-@item duplicate host @var{hostname}!
-If a host has more than one definition.
-
-@item netif field @var{field-name} already set
-Occurs if you attempt to define an attribute of an interface more than
-once.
-
-@item malformed IP dotted quad: @var{address}
-If the Internet address of an interface is incorrectly specified. An
-Internet address definition is handled to @b{inet_addr}(3N) to see if it
-can cope. If not, then this message will be displayed.
-
-@item malformed netmask: @var{netmask}
-If the netmask cannot be decoded as though it were a hexadecimal number,
-then this message will be displayed. It will typically be caused by
-incorrect characters in the @var{netmask} value.@refill
-
-@item fs field "@var{field-name}" already set
-Occurs when multiple definitions are given for one of the attributes of a
-host's filesystem.
-
-@item mount tree field "@var{field-name}" already set
-Occurs when the @var{field-name} is defined more than once during the
-definition of a filesystems mountpoint.
-
-@item mount field "@var{field-name}" already set
-Occurs when a static mount has multiple definitions of the same field.
-
-@item no disk mounts on @var{hostname}
-If there are no static mounts, nor local disk mounts specified for a
-machine, this message will be displayed.
-
-@item @var{host}:@var{device} needs field "@var{field-name}"
-Occurs when a filesystem is missing a required field. @var{field-name} could
-be one of @code{fstype}, @code{opts}, @code{passno} or
-@code{mount}.@refill
-
-@item @var{filesystem} has a volname but no exportfs data
-Occurs when a volume name is declared for a file system, but the string
-specifying what machines the filesystem can be exported to is
-missing.
-
-@item sub-directory @var{directory} of @var{directory-tree} starts with '/'
-Within the filesystem specification for a host, if an element
-@var{directory} of the mountpoint begins with a @samp{/} and it is not
-the start of the tree.@refill
-
-@item @var{host}:@var{device} has no mount point
-Occurs if the @samp{mount} option is not specified for a host's
-filesystem.@refill
-
-@item @var{host}:@var{device} has more than one mount point
-Occurs if the mount option for a host's filesystem specifies multiple
-trees at which to place the mountpoint.@refill
-
-@item no volname given for @var{host}:@var{device}
-Occurs when a filesystem is defined to be mounted on @file{default}, but
-no volume name is given for the file system, then the mountpoint cannot
-be determined.@refill
-
-@item @var{host}:mount field specified for swap partition
-Occurs if a mountpoint is given for a filesystem whose type is declared
-to be @code{swap}.@refill
-
-@item ambiguous mount: @var{volume} is a replicated filesystem
-If several filesystems are declared as having the same volume name, they
-will be considered replicated filesystems. To mount a replicated
-filesystem statically, a specific host will need to be named, to say
-which particular copy to try and mount, else this error will
-result.@refill
-
-@item cannot determine localname since volname @var{volume} is not uniquely defined
-If a volume is replicated and an attempt is made to mount the filesystem
-statically without specifying a local mountpoint, @i{FSinfo} cannot
-calculate a mountpoint, as the desired pathname would be
-ambiguous.@refill
-
-@item volname @var{volume} is unknown
-Occurs if an attempt is made to mount or reference a volume name which
-has not been declared during the host filesystem definitions.@refill
-
-@item volname @var{volume} not exported from @var{machine}
-Occurs if you attempt to mount the volume @var{volume} from a machine
-which has not declared itself to have such a filesystem
-available.@refill
-
-@item network booting requires both root and swap areas
-Occurs if a machine has mount declarations for either the root partition
-or the swap area, but not both. You cannot define a machine to only
-partially boot via the network.@refill
-
-@item unknown volname @var{volume} automounted @i{[} on <name> @i{]}
-Occurs if @var{volume} is used in a definition of an automount map but the volume
-name has not been declared during the host filesystem definitions.@refill
-
-@item not allowed '/' in a directory name
-Occurs when a pathname with multiple directory elements is specified as
-the name for an automounter tree. A tree should only have one name at
-each level.
-
-@item @var{device} has duplicate exportfs data
-Produced if the @samp{exportfs} option is used multiple times within the
-same branch of a filesytem definition. For example, if you attempt to
-set the @samp{exportfs} data at different levels of the mountpoint
-directory tree.@refill
-
-@item sub-directory of @var{directory-tree} is named "default"
-@samp{default} is a keyword used to specify if a mountpoint should be
-automatically calculated by @i{FSinfo}. If you attempt to specify a
-directory name as this, it will use the filename of @file{default} but
-will produce this warning.@refill
-
-@item pass number for @var{host}:@var{device} is non-zero
-Occurs if @var{device} has its @samp{fstype} declared to be @samp{swap}
-or @samp{export} and the @b{fsck}(8) pass number is set. Swap devices should not be
-fsck'd. @xref{FSinfo filesystems fstype}@refill
-
-@item dump frequency for @var{host}:@var{device} is non-zero
-Occurs if @var{device} has its @samp{fstype} declared to be @samp{swap}
-or @samp{export} and the @samp{dump} option is set to a value greater
-than zero. Swap devices should not be dumped.@refill
-
-@end table
-
-@node Examples, Internals, FSinfo, Top
-@comment node-name, next, previous, up
-@chapter Examples
-
-@menu
-* User Filesystems::
-* Home Directories::
-* Architecture Sharing::
-* Wildcard Names::
-* rwho servers::
-* /vol::
-@end menu
-
-@node User Filesystems, Home Directories, Examples, Examples
-@comment node-name, next, previous, up
-@section User Filesystems
-@cindex User filesystems
-@cindex Mounting user filesystems
-
-With more than one fileserver, the directories most frequently
-cross-mounted are those containing user home directories. A common
-convention used at Imperial College is to mount the user disks under
-@t{/home/}@i{machine}.
-
-Typically, the @samp{/etc/fstab} file contained a long list of entries
-such as:
-
-@example
-@i{machine}:/home/@i{machine} /home/@i{machine} nfs ...
-@end example
-
-for each fileserver on the network.
-
-There are numerous problems with this system. The mount list can become
-quite large and some of the machines may be down when a system is
-booted. When a new fileserver is installed, @samp{/etc/fstab} must be
-updated on every machine, the mount directory created and the filesystem
-mounted.
-
-In many environments most people use the same few workstations, but
-it is convenient to go to a colleague's machine and access your own
-files. When a server goes down, it can cause a process on a client
-machine to hang. By minimising the mounted filesystems to only include
-those actively being used, there is less chance that a filesystem will
-be mounted when a server goes down.
-
-The following is a short extract from a map taken from a research fileserver
-at Imperial College.
-
-Note the entry for @samp{localhost} which is used for users such as
-the operator (@samp{opr}) who have a home directory on most machine as
-@samp{/home/localhost/opr}.
-
-@example
-/defaults opts:=rw,intr,grpid,nosuid
-charm host!=$@{key@};type:=nfs;rhost:=$@{key@};rfs:=/home/$@{key@} \
- host==$@{key@};type:=ufs;dev:=/dev/xd0g
-#
-...
-
-#
-localhost type:=link;fs:=$@{host@}
-...
-#
-# dylan has two user disks so have a
-# top directory in which to mount them.
-#
-dylan type:=auto;fs:=$@{map@};pref:=$@{key@}/
-#
-dylan/dk2 host!=dylan;type:=nfs;rhost:=dylan;rfs:=/home/$@{key@} \
- host==dylan;type:=ufs;dev:=/dev/dsk/2s0
-#
-dylan/dk5 host!=dylan;type:=nfs;rhost:=dylan;rfs:=/home/$@{key@} \
- host==dylan;type:=ufs;dev:=/dev/dsk/5s0
-...
-#
-toytown host!=$@{key@};type:=nfs;rhost:=$@{key@};rfs:=/home/$@{key@} \
- host==$@{key@};type:=ufs;dev:=/dev/xy1g
-...
-#
-zebedee host!=$@{key@};type:=nfs;rhost:=$@{key@};rfs:=/home/$@{key@} \
- host==$@{key@};type:=ufs;dev:=/dev/dsk/1s0
-#
-# Just for access...
-#
-gould type:=auto;fs:=$@{map@};pref:=$@{key@}/
-gould/staff host!=gould;type:=nfs;rhost:=gould;rfs:=/home/$@{key@}
-#
-gummo host!=$@{key@};type:=nfs;rhost:=$@{key@};rfs:=/home/$@{key@}
-...
-@end example
-
-This map is shared by most of the machines listed so on those
-systems any of the user disks is accessible via a consistent name.
-@i{Amd} is started with the following command
-
-@example
-amd /home amd.home
-@end example
-
-Note that when mounting a remote filesystem, the @dfn{automounted}
-mount point is referenced, so that the filesystem will be mounted if
-it is not yet (at the time the remote @samp{mountd} obtains the file handle).
-
-@node Home Directories, Architecture Sharing, User Filesystems, Examples
-@comment node-name, next, previous, up
-@section Home Directories
-@cindex Home directories
-@cindex Example of mounting home directories
-@cindex Mount home directories
-
-One convention for home directories is to locate them in @samp{/homes}
-so user @samp{jsp}'s home directory is @samp{/homes/jsp}. With more
-than a single fileserver it is convenient to spread user files across
-several machines. All that is required is a mount-map which converts
-login names to an automounted directory.
-
-Such a map might be started by the command:
-
-@example
-amd /homes amd.homes
-@end example
-
-where the map @samp{amd.homes} contained the entries:
-
-@example
-/defaults type:=link # All the entries are of type:=link
-jsp fs:=/home/charm/jsp
-njw fs:=/home/dylan/dk5/njw
-...
-phjk fs:=/home/toytown/ai/phjk
-sjv fs:=/home/ganymede/sjv
-@end example
-
-Whenever a login name is accessed in @samp{/homes} a symbolic link
-appears pointing to the real location of that user's home directory. In
-this example, @samp{/homes/jsp} would appear to be a symbolic link
-pointing to @samp{/home/charm/jsp}. Of course, @samp{/home} would also
-be an automount point.
-
-This system causes an extra level of symbolic links to be used.
-Although that turns out to be relatively inexpensive, an alternative is
-to directly mount the required filesystems in the @samp{/homes}
-map. The required map is simple, but long, and its creation is best automated.
-The entry for @samp{jsp} could be:
-
-@example
-jsp -sublink:=$@{key@};rfs:=/home/charm \
- host==charm;type:=ufs;dev:=/dev/xd0g \
- host!=charm;type:=nfs;rhost:=charm
-@end example
-
-This map can become quite big if it contains a large number of entries.
-By combining two other features of @i{Amd} it can be greatly simplified.
-
-First the UFS partitions should be mounted under the control of
-@samp{/etc/fstab}, taking care that they are mounted in the same place
-that @i{Amd} would have automounted them. In most cases this would be
-something like @samp{/a/@dfn{host}/home/@dfn{host}} and
-@samp{/etc/fstab} on host @samp{charm} would have a line:@refill
-
-@example
-/dev/xy0g /a/charm/home/charm 4.2 rw,nosuid,grpid 1 5
-@end example
-
-The map can then be changed to:
-
-@example
-/defaults type:=nfs;sublink:=$@{key@};opts:=rw,intr,nosuid,grpid
-jsp rhost:=charm;rfs:=/home/charm
-njw rhost:=dylan;rfs:=/home/dylan/dk5
-...
-phjk rhost:=toytown;rfs:=/home/toytown;sublink:=ai/$@{key@}
-sjv rhost:=ganymede;rfs:=/home/ganymede
-@end example
-
-This map operates as usual on a remote machine (@i{ie} @code{$@{host@}}
-not equal to @code{$@{rhost@}}). On the machine where the filesystem is
-stored (@i{ie} @code{$@{host@}} equal to @code{$@{rhost@}}), @i{Amd}
-will construct a local filesystem mount point which corresponds to the
-name of the locally mounted UFS partition. If @i{Amd} is started with
-the ``-r'' option then instead of attempting an NFS mount, @i{Amd} will
-simply inherit the UFS mount (@pxref{Inheritance Filesystem}). If
-``-r'' is not used then a loopback NFS mount will be made. This type of
-mount is known to cause a deadlock on many systems.
-
-@node Architecture Sharing, Wildcard Names, Home Directories, Examples
-@comment node-name, next, previous, up
-@section Architecture Sharing
-@cindex Architecture sharing
-@cindex Sharing a fileserver between architectures
-@cindex Architecture dependent volumes
-
-@c %At the moment some of the research machines have sets of software
-@c %mounted in @samp{/vol}. This contains subdirectories for \TeX,
-@c %system sources, local sources, prolog libraries and so on.
-Often a filesystem will be shared by machines of different architectures.
-Separate trees can be maintained for the executable images for each
-architecture, but it may be more convenient to have a shared tree,
-with distinct subdirectories.
-
-A shared tree might have the following structure on the fileserver (called
-@samp{fserver} in the example):
-
-@example
-local/tex
-local/tex/fonts
-local/tex/lib
-local/tex/bin
-local/tex/bin/sun3
-local/tex/bin/sun4
-local/tex/bin/hp9000
-...
-@end example
-
-In this example, the subdirectories of @samp{local/tex/bin} should be
-hidden when accessed via the automount point (conventionally @samp{/vol}).
-A mount-map for @samp{/vol} to achieve this would look like:
-
-@example
-/defaults sublink:=$@{/key@};rhost:=fserver;type:=link
-tex type:=auto;fs:=$@{map@};pref:=$@{key@}/
-tex/fonts host!=fserver;type:=nfs;rfs:=/vol/tex \
- host==fserver;fs:=/usr/local/tex
-tex/lib host!=fserver;type:=nfs;rfs:=/vol/tex \
- host==fserver;fs:=/usr/local/tex
-tex/bin -sublink:=$@{/key@}/$@{arch@} host!=fserver;type:=nfs;rfs:=/vol/tex \
- host:=fserver;fs:=/usr/local/tex
-@end example
-
-When @samp{/vol/tex/bin} is referenced, the current machine architecture
-is automatically appended to the path by the @code{$@{sublink@}}
-variable. This means that users can have @samp{/vol/tex/bin} in their
-@samp{PATH} without concern for architecture dependencies.
-
-@node Wildcard Names, rwho servers, Architecture Sharing, Examples
-@comment node-name, next, previous, up
-@section Wildcard names & Replicated Servers
-
-By using the wildcard facility, @i{Amd} can @dfn{overlay} an existing
-directory with additional entries.
-The system files are usually mounted under @samp{/usr}. If instead
-@i{Amd} is mounted on @samp{/usr}, additional
-names can be overlayed to augment or replace names in the ``master'' @samp{/usr}.
-A map to do this would have the form:
-
-@example
-local type:=auto;fs:=local-map
-share type:=auto;fs:=share-map
-* -type:=nfs;rfs:=/export/exec/$@{arch@};sublink:="$@{key@}" \
- rhost:=fserv1 rhost:=fserv2 rhost:=fserv3
-@end example
-
-Note that the assignment to @code{$@{sublink@}} is surrounded by double
-quotes to prevent the incoming key from causing the map to be
-misinterpreted. This map has the effect of directing any access to
-@samp{/usr/local} or @samp{/usr/share} to another automount point.
-
-In this example, it is assumed that the @samp{/usr} files are replicated
-on three fileservers: @samp{fserv1}, @samp{fserv2} and @samp{fserv3}.
-For any references other than to @samp{local} and @samp{share} one of
-the servers is used and a symbolic link to
-@t{$@{autodir@}/$@{rhost@}/export/exec/$@{arch@}/@i{whatever}} is
-returned once an appropriate filesystem has been mounted.@refill
-
-@node rwho servers, /vol, Wildcard Names, Examples
-@comment node-name, next, previous, up
-@section @samp{rwho} servers
-@cindex rwho servers
-@cindex Architecture specific mounts
-@cindex Example of architecture specific mounts
-
-The @samp{/usr/spool/rwho} directory is a good candidate for automounting.
-For efficiency reasons it is best to capture the rwho data on a small
-number of machines and then mount that information onto a large number
-of clients. The data written into the rwho files is byte order dependent
-so only servers with the correct byte ordering can be used by a client:
-
-@example
-/defaults type:=nfs
-usr/spool/rwho -byte==little;rfs:=/usr/spool/rwho \
- rhost:=vaxA rhost:=vaxB \
- || -rfs:=/usr/spool/rwho \
- rhost:=sun4 rhost:=hp300
-@end example
-
-@node /vol, , rwho servers, Examples
-@comment node-name, next, previous, up
-@section @samp{/vol}
-@cindex /vol
-@cindex Catch-all mount point
-@cindex Generic volume name
-
-@samp{/vol} is used as a catch-all for volumes which do not have other
-conventional names.
-
-Below is part of the @samp{/vol} map for the domain @samp{doc.ic.ac.uk}.
-The @samp{r+d} tree is used for new or experimental software that needs
-to be available everywhere without installing it on all the fileservers.
-Users wishing to try out the new software then simply include
-@samp{/vol/r+d/@{bin,ucb@}} in their path.@refill
-
-The main tree resides on one host @samp{gould.doc.ic.ac.uk}, which has
-different @samp{bin}, @samp{etc}, @samp{lib} and @samp{ucb}
-sub-directories for each machine architecture. For example,
-@samp{/vol/r+d/bin} for a Sun-4 would be stored in the sub-directory
-@samp{bin/sun4} of the filesystem @samp{/usr/r+d}. When it was accessed
-a symbolic link pointing to @samp{/a/gould/usr/r+d/bin/sun4} would be
-returned.@refill
-
-@example
-/defaults type:=nfs;opts:=rw,grpid,nosuid,intr,soft
-wp -opts:=rw,grpid,nosuid;rhost:=charm \
- host==charm;type:=link;fs:=/usr/local/wp \
- host!=charm;type:=nfs;rfs:=/vol/wp
-...
-#
-src -opts:=rw,grpid,nosuid;rhost:=charm \
- host==charm;type:=link;fs:=/usr/src \
- host!=charm;type:=nfs;rfs:=/vol/src
-#
-r+d type:=auto;fs:=$@{map@};pref:=r+d/
-# per architecture bin,etc,lib&ucb...
-r+d/bin rhost:=gould.doc.ic.ac.uk;rfs:=/usr/r+d;sublink:=$@{/key@}/$@{arch@}
-r+d/etc rhost:=gould.doc.ic.ac.uk;rfs:=/usr/r+d;sublink:=$@{/key@}/$@{arch@}
-r+d/include rhost:=gould.doc.ic.ac.uk;rfs:=/usr/r+d;sublink:=$@{/key@}
-r+d/lib rhost:=gould.doc.ic.ac.uk;rfs:=/usr/r+d;sublink:=$@{/key@}/$@{arch@}
-r+d/man rhost:=gould.doc.ic.ac.uk;rfs:=/usr/r+d;sublink:=$@{/key@}
-r+d/src rhost:=gould.doc.ic.ac.uk;rfs:=/usr/r+d;sublink:=$@{/key@}
-r+d/ucb rhost:=gould.doc.ic.ac.uk;rfs:=/usr/r+d;sublink:=$@{/key@}/$@{arch@}
-# hades pictures
-pictures -opts:=rw,grpid,nosuid;rhost:=thpfs \
- host==thpfs;type:=link;fs:=/nbsd/pictures \
- host!=thpfs;type:=nfs;rfs:=/nbsd;sublink:=pictures
-# hades tools
-hades -opts:=rw,grpid,nosuid;rhost:=thpfs \
- host==thpfs;type:=link;fs:=/nbsd/hades \
- host!=thpfs;type:=nfs;rfs:=/nbsd;sublink:=hades
-# bsd tools for hp.
-bsd -opts:=rw,grpid,nosuid;arch==hp9000;rhost:=thpfs \
- host==thpfs;type:=link;fs:=/nbsd/bsd \
- host!=thpfs;type:=nfs;rfs:=/nbsd;sublink:=bsd
-@end example
-
-@node Internals, Acknowledgements & Trademarks, Examples, Top
-@comment node-name, next, previous, up
-@chapter Internals
-
-@menu
-* Log Messages::
-@end menu
-
-@node Log Messages, , Internals, Internals
-@comment node-name, next, previous, up
-@section Log Messages
-
-In the following sections a brief explanation is given of some of the
-log messages made by @i{Amd}. Where the message is in @samp{typewriter}
-font, it corresponds exactly to the message produced by @i{Amd}. Words
-in @dfn{italic} are replaced by an appropriate string. Variables,
-@code{$@{var@}}, indicate that the value of the appropriate variable is
-output.
-
-Log messages are either sent direct to a file,
-or logged via the @b{syslog}(3) mechanism.
-Messages are logged with facility @samp{LOG_DAEMON} when using @b{syslog}(3).
-In either case, entries in the file are of the form:
-@example
-@i{date-string} @i{hostname} @t{amd[}@i{pid}@t{]} @i{message}
-@end example
-
-@menu
-* Fatal errors::
-* Info messages::
-@end menu
-
-@node Fatal errors, Info messages, Log Messages, Log Messages
-@comment node-name, next, previous, up
-@subsection Fatal errors
-
-@i{Amd} attempts to deal with unusual events. Whenever it is not
-possible to deal with such an error, @i{Amd} will log an appropriate
-message and, if it cannot possibly continue, will either exit or abort.
-These messages are selected by @samp{-x fatal} on the command line.
-When @b{syslog}(3) is being used, they are logged with level
-@samp{LOG_FATAL}. Even if @i{Amd} continues to operate it is likely to
-remain in a precarious state and should be restarted at the earliest
-opportunity.
-
-@table @asis
-@item @t{Attempting to inherit not-a-filesystem}
-The prototype mount point created during a filesystem restart did not
-contain a reference to the restarted filesystem. This erorr ``should
-never happen''.
-
-@item @t{Can't bind to domain "@i{NIS-domain}"}
-A specific NIS domain was requested on the command line, but no server
-for that domain is available on the local net.
-
-@item @t{Can't determine IP address of this host (@i{hostname})}
-When @i{Amd} starts it determines its own IP address. If this lookup
-fails then @i{Amd} cannot continue. The hostname it looks up is that
-obtained returned by @b{gethostname}(2) system call.
-
-@item @t{Can't find root file handle for @i{automount point}}
-@i{Amd} creates its own file handles for the automount points. When it
-mounts itself as a server, it must pass these file handles to the local
-kernel. If the filehandle is not obtainable the mount point is ignored.
-This error ``should never happen''.
-
-@item @t{Must be root to mount filesystems (euid = @i{euid})}
-To prevent embarrassment, @i{Amd} makes sure it has appropriate system
-privileges. This amounts to having an euid of 0. The check is made
-after argument processing complete to give non-root users a chance to
-access the ``-v'' option.
-
-@item @t{No work to do - quitting}
-No automount points were given on the command line and so there is no
-work to do.
-
-@item @t{Out of memory in realloc}
-While attempting to realloc some memory, the memory space available to
-@i{Amd} was exhausted. This is an unrecoverable error.
-
-@item @t{Out of memory}
-While attempting to malloc some memory, the memory space available to
-@i{Amd} was exhausted. This is an unrecoverable error.
-
-@item @t{cannot create rpc/udp service}
-Either the NFS or AMQ endpoint could not be created.
-
-@item @t{gethostname:} @i{description}
-The @b{gethostname}(2) system call failed during startup.
-
-@item @t{host name is not set}
-The @b{gethostname}(2) system call returned a zero length host name.
-This can happen if @i{Amd} is started in single user mode just after
-booting the system.
-
-@item @t{ifs_match called!}
-An internal error occurred while restarting a pre-mounted filesystem.
-This error ``should never happen''.
-
-@item @t{mount_afs:} @i{description}
-An error occured while @i{Amd} was mounting itself.
-
-@item @t{run_rpc failed}
-Somehow the main NFS server loop failed. This error ``should never
-happen''.
-
-@item @t{unable to free rpc arguments in amqprog_1}
-The incoming arguments to the AMQ server could not be free'ed.
-
-@item @t{unable to free rpc arguments in nfs_program_1}
-The incoming arguments to the NFS server could not be free'ed.
-
-@item @t{unable to register (AMQ_PROGRAM, AMQ_VERSION, udp)}
-The AMQ server could not be registered with the local portmapper or the
-internal RPC dispatcher.
-
-@item @t{unable to register (NFS_PROGRAM, NFS_VERSION, 0)}
-The NFS server could not be registered with the internal RPC dispatcher.
-
-@end table
-
-@node Info messages, , Fatal errors, Log Messages
-@comment node-name, next, previous, up
-@subsection Info messages
-
-@i{Amd} generates information messages to record state changes. These
-messages are selected by @samp{-x info} on the command line. When
-@b{syslog}(3) is being used, they are logged with level @samp{LOG_INFO}.
-
-The messages listed below can be generated and are in a format suitable
-for simple statistical analysis. @dfn{mount-info} is the string
-that is displayed by @dfn{Amq} in its mount information column and
-placed in the system mount table.
-
-@table @asis
-@item @t{mount of "@t{$@{@i{path}@}}" on @t{$@{@i{fs}@}} timed out}
-Attempts to mount a filesystem for the given automount point have failed
-to complete within 30 seconds.
-
-@item @t{"@t{$@{@i{path}@}}" forcibly timed out}
-An automount point has been timed out by the @i{Amq} command.
-
-@item @t{restarting @i{mount-info} on @t{$@{@i{fs}@}}}
-A pre-mounted file system has been noted.
-
-@item @t{"@t{$@{@i{path}@}}" has timed out}
-No access to the automount point has been made within the timeout
-period.
-
-@item @t{file server @t{$@{@i{rhost}@}} is down - timeout of "@t{$@{@i{path}@}}" ignored}
-An automount point has timed out, but the corresponding file server is
-known to be down. This message is only produced once for each mount
-point for which the server is down.
-
-@item @t{Re-synchronizing cache for map @t{$@{@i{map}@}}}
-The named map has been modified and the internal cache is being re-synchronized.
-
-@item @t{Filehandle denied for "@t{$@{@i{rhost}@}}:@t{$@{@i{rfs}@}}"}
-The mount daemon refused to return a file handle for the requested filesystem.
-
-@item @t{Filehandle error for "$@{@i{rhost}@}:$@{@i{rfs}@}":} @i{description}
-The mount daemon gave some other error for the requested filesystem.
-
-@item @t{file server @t{$@{@i{rhost}@}} type nfs starts up}
-A new NFS file server has been referenced and is known to be up.
-
-@item @t{file server @t{$@{@i{rhost}@}} type nfs starts down}
-A new NFS file server has been referenced and is known to be down.
-
-@item @t{file server @t{$@{@i{rhost}@}} type nfs is up}
-An NFS file server that was previously down is now up.
-
-@item @t{file server @t{$@{@i{rhost}@}} type nfs is down}
-An NFS file server that was previously up is now down.
-
-@item @t{Finishing with status @i{exit-status}}
-@i{Amd} is about to exit with the given exit status.
-
-@item @t{@i{mount-info} mounted fstype @t{$@{@i{type}@}} on @t{$@{@i{fs}@}}}
-A new file system has been mounted.
-
-@item @t{@i{mount-info} restarted fstype @t{$@{@i{type}@}} on @t{$@{@i{fs}@}}}
-@i{Amd} is using a pre-mounted filesystem to satisfy a mount request.
-
-@item @t{@i{mount-info} unmounted fstype @t{$@{@i{type}@}} from @t{$@{@i{fs}@}}}
-A file system has been unmounted.
-
-@item @t{@i{mount-info} unmounted fstype @t{$@{@i{type}@}} from @t{$@{@i{fs}@}} link @t{$@{@i{fs}@}}/@t{$@{@i{sublink}@}}}
-A file system of which only a sub-directory was in use has been unmounted.
-
-@end table
-
-@node Acknowledgements & Trademarks, Index, Internals, Top
-@comment node-name, next, previous, up
-@unnumbered Acknowledgements & Trademarks
-
-Thanks to the Formal Methods Group at Imperial College for
-suffering patiently while @i{Amd} was being developed on their machines.
-
-Thanks to the many people who have helped with the development of
-@i{Amd}, especially Piete Brooks at the Cambridge University Computing
-Lab for many hours of testing, experimentation and discussion.
-
-@itemize @bullet
-@item
-@b{DEC}, @b{VAX} and @b{Ultrix} are registered trademarks of Digital
-Equipment Corporation.
-@item
-@b{AIX} and @b{IBM} are registered trademarks of International Business
-Machines Corporation.
-@item
-@b{Sun}, @b{NFS} and @b{SunOS} are registered trademarks of Sun
-Microsystems, Inc.
-@item
-@b{Unix} is a registered trademark of AT&T Unix Systems Laboratories
-in the USA and other countries.
-@end itemize
-
-@node Index, , Acknowledgements & Trademarks, Top
-@comment node-name, next, previous, up
-@unnumbered Index
-
-@printindex cp
-
-@contents
-@bye
OpenPOWER on IntegriCloud