aboutsummaryrefslogtreecommitdiffstats
path: root/doc/am-utils.info
diff options
context:
space:
mode:
Diffstat (limited to 'doc/am-utils.info')
-rw-r--r--doc/am-utils.info8897
1 files changed, 8897 insertions, 0 deletions
diff --git a/doc/am-utils.info b/doc/am-utils.info
new file mode 100644
index 000000000000..3a01684f240c
--- /dev/null
+++ b/doc/am-utils.info
@@ -0,0 +1,8897 @@
+This is am-utils.info, produced by makeinfo version 5.2 from
+am-utils.texi.
+
+INFO-DIR-SECTION Administration
+START-INFO-DIR-ENTRY
+* Am-utils: (am-utils). The Amd automounter suite of utilities
+END-INFO-DIR-ENTRY
+
+
+File: am-utils.info, Node: Top, Next: License, Up: (DIR)
+
+Am-utils (4.4BSD Automounter Utilities) User Manual
+For version 6.2, 28 October 2014
+
+ Erez Zadok
+(Originally by Jan-Simon Pendry and Nick Williams)
+
+ Copyright (C) 1997-2014 Erez Zadok
+Copyright (C) 1989 Jan-Simon Pendry
+Copyright (C) 1989 Imperial College of Science, Technology & Medicine
+Copyright (C) 1989 The Regents of the University of California.
+All Rights Reserved.
+
+ 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.
+
+ Am-utils is the 4.4BSD Automounter Tool Suite, which includes the Amd
+automounter, the Amq query and control program, the Hlfsd daemon, and
+other tools. This Info file describes how to use and understand the
+tools within Am-utils.
+
+* Menu:
+
+* License:: Explains the terms and conditions for using
+ and distributing Am-utils.
+* Distrib:: How to get the latest Am-utils distribution.
+* AddInfo:: How to get additional information.
+* Intro:: An introduction to Automounting concepts.
+* History:: History of am-utils' development.
+* 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.
+* Amd Configuration File:: The amd.conf file syntax and meaning.
+* Run-time Administration:: How to start, stop and control Amd.
+* FSinfo:: The FSinfo filesystem management tool.
+* Hlfsd:: The Home-Link Filesystem server.
+* Assorted Tools:: Other tools which come with am-utils.
+* Examples:: Some examples showing how Amd might be used.
+* Internals:: Implementation details.
+* Acknowledgments & Trademarks:: Legal Notes.
+
+Indexes
+* Index:: An item for each concept.
+
+
+File: am-utils.info, Node: License, Next: Distrib, Prev: Top, Up: Top
+
+License
+*******
+
+Am-utils is not in the public domain; it is copyrighted and there are
+restrictions on its distribution.
+
+ Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+ 1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the
+ distribution.
+
+ 3. 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 BY THE REGENTS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+THE POSSIBILITY OF SUCH DAMAGE.
+
+
+File: am-utils.info, Node: Distrib, Next: AddInfo, Prev: License, Up: Top
+
+Source Distribution
+*******************
+
+The Am-utils home page is located in
+ <http://www.am-utils.org/>
+
+ You can get the latest distribution version of Am-utils from
+ <ftp://ftp.am-utils.org/pub/am-utils/am-utils.tar.gz>
+
+ Additional alpha, beta, and release distributions are available in
+ <ftp://ftp.am-utils.org/pub/am-utils/>.
+
+ Revision 5.2 was part of the 4.3BSD Reno distribution.
+
+ Revision 5.3bsdnet, a late alpha version of 5.3, was part of the BSD
+network version 2 distribution
+
+ Revision 6.0 was made independently by Erez Zadok at the Computer
+Science Department of Columbia University (http://www.cs.columbia.edu/),
+as part of his PhD thesis work
+(http://www.fsl.cs.sunysb.edu/docs/zadok-thesis-proposal/). Am-utils
+(especially version 6.1) continues to be developed and maintained at the
+Computer Science Department (http://www.cs.sunysb.edu/) of Stony Brook
+University (http://www.stonybrook.edu/), as a service to the user
+community.
+
+ *Note History::, for more details.
+
+
+File: am-utils.info, Node: AddInfo, Next: Intro, Prev: Distrib, Up: Top
+
+Getting Additional Information
+******************************
+
+Bug Reports
+===========
+
+Before reporting a bug, see if it is a known one in the bugs
+(http://www.am-utils.org/docs/am-utils/BUGS.txt) file.
+
+ If you find a problem and hopefully you can reproduce it, please
+describe it in detail and submit a bug report
+(https://bugzilla.filesystems.org/) via Bugzilla
+(http://www.bugzilla.org/). Alternatively, you can send your bug report
+to the "am-utils" list (see <http://www.am-utils.org/> under "Mailing
+Lists") quoting the details of the release and your configuration.
+These details can be obtained by running the command 'amd -v'. It would
+greatly help if you could provide a reproducible procedure for detecting
+the bug you are reporting.
+
+ Providing working patches is highly encouraged. Every patch
+incorporated, however small, will get its author an honorable mention in
+the authors file (http://www.am-utils.org/docs/am-utils/AUTHORS.txt).
+
+Mailing Lists
+=============
+
+There are several mailing lists for people interested in keeping
+up-to-date with developments.
+
+ 1. The users mailing list, 'am-utils' is for
+
+ - announcements of alpha and beta releases of am-utils
+ - reporting of bugs and patches
+ - discussions of new features for am-utils
+ - implementation and porting issues
+
+ To subscribe, visit <http://www.am-utils.org/> under "Mailing
+ Lists." After subscribing, you can post a message to this list.
+ To avoid as much spam as possible, only subscribers to this list
+ may post to it.
+
+ Subscribers of 'am-utils' are most helpful if they have the time
+ and resources to test new and development versions of amd, on as
+ many different platforms as possible. They should also be prepared
+ to learn and use the GNU Autoconf, Automake, and Libtool packages,
+ as needed; and of course, become familiar with the complex code in
+ the am-utils package. In other words, subscribers on this list
+ should hopefully be able to contribute meaningfully to the
+ development of amd.
+
+ Note that this 'am-utils' list used to be called 'amd-dev' before
+ January 1st, 2004. Please use the new name, 'am-utils'.
+
+ 2. The announcements mailing list, 'am-utils-announce' is for
+ announcements only (mostly new releases). To subscribe, visit
+ <http://www.am-utils.org/> under "Mailing Lists." This list is
+ read-only: only am-utils developers may post to it.
+
+ 3. We distribute nightly CVS snapshots in
+ <ftp://ftp.am-utils.org/pub/am-utils/snapshots/daily/>. If you
+ like to get email notices of commits to the am-utils CVS
+ repository, subscribe to the CVS logs mailing list, 'am-utils-cvs'
+ at <http://www.am-utils.org/> under "Mailing Lists."
+
+ 4. The older list which was used to user discussions, 'amd-workers',
+ is defunct as of January 2004. (Its last address was <amd-workers
+ AT majordomo.glue.umd.edu>.) Don't use 'amd-workers': use the
+ newer, more active 'am-utils' list.
+
+ 5. For completeness, there's a developers-only closed list called
+ 'am-utils-developers' (see <http://www.am-utils.org/> under
+ "Mailing Lists").
+
+Am-utils Book
+=============
+
+Erez Zadok (http://www.cs.sunysb.edu/~ezk) wrote a book
+(http://www.fsl.cs.sunysb.edu/docs/amd-book/), titled Linux NFS and
+Automounter Administration, ISBN 0-7821-2739-8, (Sybex, 2001). The book
+is full of details and examples that go beyond what this manual has.
+The book also covers NFS in great detail. Although the book is geared
+toward Linux users, it is general enough for any Unix administrator and
+contains specific sections for non-Linux systems.
+
+
+File: am-utils.info, Node: Intro, Next: History, Prev: AddInfo, Up: Top
+
+Introduction
+************
+
+An "automounter" maintains a cache of mounted filesystems. Filesystems
+are mounted on demand when they are first referenced, and unmounted
+after a period of inactivity.
+
+ Amd may be used as a replacement for Sun's automounter. The choice
+of which filesystem to mount can be controlled dynamically with
+"selectors". Selectors allow decisions of the form "hostname is THIS,"
+or "architecture is not THAT." Selectors may be combined arbitrarily.
+Amd also supports a variety of filesystem types, including NFS, UFS and
+the novel "program" filesystem. The combination of selectors and
+multiple filesystem types allows identical configuration files to be
+used on all machines thus reducing the administrative overhead.
+
+ Amd ensures that it will not hang if a remote server goes down.
+Moreover, Amd can determine when a remote server has become inaccessible
+and then mount replacement filesystems as and when they become
+available.
+
+ Amd contains no proprietary source code and has been ported to
+numerous flavors of Unix.
+
+
+File: am-utils.info, Node: History, Next: Overview, Prev: Intro, Up: Top
+
+History
+*******
+
+The Amd package has been without an official maintainer since 1992.
+Several people have stepped in to maintain it unofficially. Most
+notable were the 'upl' (Unofficial Patch Level) releases of Amd, created
+by me (Erez Zadok (http://www.cs.sunysb.edu/~ezk)), and available from
+<ftp://ftp.am-utils.org/pub/amd/>. The last such unofficial release was
+'upl102'.
+
+ Through the process of patching and aging, it was becoming more and
+more apparent that Amd was in much need of revitalizing. Maintaining
+Amd had become a difficult task. I took it upon myself to cleanup the
+code, so that it would be easier to port to new platforms, add new
+features, keep up with the many new feature requests, and deal with the
+never ending stream of bug reports.
+
+ I have been working on such a release of Amd on and off since January
+of 1996. The new suite of tools is currently named "am-utils"
+(AutoMounter Utilities), in line with GNU naming conventions, befitting
+the contents of the package. In October of 1996 I had received enough
+offers to help me with this task that I decided to make a mailing list
+for this group of people. Around the same time, Amd had become a
+necessary part of my PhD thesis work, resulting in more work performed
+on am-utils.
+
+ Am-utils version 6.0 was numbered with a major new release number to
+distinguish it from the last official release of Amd (5.x). Many new
+features have been added such as a GNU 'configure' system, NFS Version
+3, a run-time configuration file ('amd.conf'), many new ports, more
+scripts and programs, as well as numerous bug fixes. Another reason for
+the new major release number was to alert users of am-utils that
+user-visible interfaces may have changed. In order to make Amd work
+well for the next 10 years, and be easier to maintain, it was necessary
+to remove old or unused features, change various syntax files, etc.
+However, great care was taken to ensure the maximum possible backwards
+compatibility.
+
+ Am-utils version 6.1 has autofs support for Linux and Solaris 2.5+ as
+the major new feature, in addition to several other minor new features.
+The autofs support is completely transparent to the end-user, aside from
+the fact that '/bin/pwd' now always returns the correct amd-ified path.
+The administrator can easily switch between NFS and autofs mounts by
+changing one parameter in 'amd.conf'. Autofs support and maintenance
+was developed in conjunction with Ion Badulescu <ionut AT badula.org>.
+
+
+File: am-utils.info, Node: Overview, Next: Supported Platforms, Prev: History, Up: Top
+
+1 Overview
+**********
+
+Amd maintains a cache of mounted filesystems. Filesystems are
+"demand-mounted" when they are first referenced, and unmounted after a
+period of inactivity. Amd may be used as a replacement for Sun's
+automount(8) program. It contains no proprietary source code and has
+been ported to numerous flavors of Unix. *Note Supported Platforms::.
+
+ Amd was designed as the basis for experimenting with filesystem
+layout and management. Although 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.
+
+ Amd supports the notion of "replicated" filesystems by evaluating
+each member of a list of possible filesystem locations one by one. Amd
+checks that each cached mapping remains valid. Should a mapping be lost
+- such as happens when a fileserver goes down - Amd automatically
+selects a replacement should one be available.
+
+* Menu:
+
+* Fundamentals::
+* Filesystems and Volumes::
+* Volume Naming::
+* Volume Binding::
+* Operational Principles::
+* Mounting a Volume::
+* Automatic Unmounting::
+* Keep-alives::
+* Non-blocking Operation::
+
+
+File: am-utils.info, Node: Fundamentals, Next: Filesystems and Volumes, Prev: Overview, Up: Overview
+
+1.1 Fundamentals
+================
+
+The fundamental concept behind 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 '/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-organized without requiring changes to
+configuration files, shell scripts and so on.
+
+
+File: am-utils.info, Node: Filesystems and Volumes, Next: Volume Naming, Prev: Fundamentals, Up: Overview
+
+1.2 Filesystems and Volumes
+===========================
+
+Amd views the world as a set of fileservers, each containing one or more
+filesystems where each filesystem contains one or more "volumes". Here
+the term "volume" is used to refer to a coherent set of files such as a
+user's home directory or a TeX distribution.
+
+ In order to access the contents of a volume, 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 "sublink" is used to refer to the sub-directory within
+the filesystem where the volume can be found.
+
+
+File: am-utils.info, Node: Volume Naming, Next: Volume Binding, Prev: Filesystems and Volumes, Up: Overview
+
+1.3 Volume Naming
+=================
+
+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, '/vol/tex'
+might be the name of a TeX distribution which varied for each machine
+architecture.
+
+ 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.
+
+ Amd can take advantage of replacement volumes by mounting them as
+required should an active fileserver become unavailable.
+
+
+File: am-utils.info, Node: Volume Binding, Next: Operational Principles, Prev: Volume Naming, Up: Overview
+
+1.4 Volume Binding
+==================
+
+Unix implements a namespace of hierarchically mounted filesystems. Two
+forms of binding between names and files are provided. A "hard link"
+completes the binding when the name is added to the filesystem. A "soft
+link" delays the binding until the name is accessed. An "automounter"
+adds a further form in which the binding of name to filesystem is
+delayed until the name is accessed.
+
+ 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, 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.
+
+
+File: am-utils.info, Node: Operational Principles, Next: Mounting a Volume, Prev: Volume Binding, Up: Overview
+
+1.5 Operational Principles
+==========================
+
+Amd operates by introducing new mount points into the namespace. These
+are called "automount" points. The kernel sees these automount points
+as NFS filesystems being served by Amd. Having attached itself to the
+namespace, 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 "lookup" call is received 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, Amd consults a configuration
+"mount-map" corresponding to the automount point. Amd then makes a
+runtime decision on what and where to mount a filesystem based on the
+information obtained from the map.
+
+ Amd does not implement all the NFS requests; only those relevant to
+name binding such as "lookup", "readlink" and "readdir". Some other
+calls are also implemented but most simply return an error code; for
+example "mkdir" always returns "read-only filesystem".
+
+
+File: am-utils.info, Node: Mounting a Volume, Next: Automatic Unmounting, Prev: Operational Principles, Up: Overview
+
+1.6 Mounting a Volume
+=====================
+
+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
+
+ location1 location2 ... locationN
+
+ Amd examines each location in turn. Each location may contain
+"selectors" which control whether 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.
+
+ Amd attempts to mount the filesystem described by each remaining
+location until a mount succeeds or Amd can no longer proceed. The
+latter can occur in three ways:
+
+ * If none of the locations could be used, or if all of the locations
+ caused an error, then the last error is returned.
+
+ * If a location could be used but was being mounted in the background
+ then Amd marks that mount as being "in progress" and continues with
+ the next request; no reply is sent to the kernel.
+
+ * Lastly, one or more of the mounts may have been "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, Amd continues to try any remaining
+ locations.
+
+ Once a volume has been mounted, Amd establishes a "volume mapping"
+which is used to satisfy subsequent requests.
+
+
+File: am-utils.info, Node: Automatic Unmounting, Next: Keep-alives, Prev: Mounting a Volume, Up: Overview
+
+1.7 Automatic Unmounting
+========================
+
+To avoid an ever increasing number of filesystem mounts, 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 (*note -w: -w
+Option.) or the amd.conf parameter 'dismount_interval' (*note
+dismount_interval Parameter::). It is also possible to set this value
+on a per-mount basis (*note opts: opts Option.).
+
+ Filesystems can be forcefully timed out using the Amq command. *Note
+Run-time Administration::. Note that on new enough systems that support
+forced unmounts, such as Linux, Amd can try to use the umount2(2) system
+call to force the unmount, if the regular umount(2) system call failed
+in a way that indicates that the mount point is hung or stale. *Note
+forced_unmounts Parameter::.
+
+
+File: am-utils.info, Node: Keep-alives, Next: Non-blocking Operation, Prev: Automatic Unmounting, Up: Overview
+
+1.8 Keep-alives
+===============
+
+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 recognized when an
+NFS server crashes and the behavior observed on client machines is that
+more and more processes hang. In order to provide the possibility of
+recovery, Amd implements a "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. Amd does this by sending RPC requests to the
+servers' NFS '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. This interval is configurable and can even be turned off using
+the ping option. *Note opts Option::.
+
+ 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 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.
+
+ Although this action does not protect user files, which are unique on
+the network, or processes which do not access files via Amd or already
+have open files on the hung filesystem, it can prevent most new
+processes from hanging.
+
+
+File: am-utils.info, Node: Non-blocking Operation, Prev: Keep-alives, Up: Overview
+
+1.9 Non-blocking Operation
+==========================
+
+Since there is only one instance of 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. Amd goes to great lengths to
+ensure that it does not block in a system call. As a last resort 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 Amd's task
+scheduler. This library is also used to implement NFS keep-alives
+(*note Keep-alives::).
+
+ Whenever a mount is deferred or backgrounded, Amd must wait for it to
+complete before replying to the kernel. However, this would cause Amd
+to block waiting for a reply to be constructed. Rather than do this,
+Amd simply "drops" the call under the assumption that the kernel RPC
+mechanism will automatically retry the request.
+
+
+File: am-utils.info, Node: Supported Platforms, Next: Mount Maps, Prev: Overview, Up: Top
+
+2 Supported Platforms
+*********************
+
+Am-utils has been ported to a wide variety of machines and operating
+systems. Am-utils's code works for little-endian and big-endian
+machines, as well as 32 bit and 64 bit architectures. Furthermore, when
+Am-utils ports to an Operating System on one architecture, it is
+generally readily portable to the same Operating System on all platforms
+on which it is available.
+
+ See the 'INSTALL' in the distribution for more specific details on
+building and/or configuring for some systems.
+
+
+File: am-utils.info, Node: Mount Maps, Next: Amd Command Line Options, Prev: Supported Platforms, Up: Top
+
+3 Mount Maps
+************
+
+Amd has no built-in knowledge of machines or filesystems. External
+"mount-maps" are used to provide the required information.
+Specifically, 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 (*note fs
+Option::). A location may also contain "selectors" (*note Selectors::).
+
+* Menu:
+
+* Map Types::
+* Key Lookup::
+* Location Format::
+
+
+File: am-utils.info, Node: Map Types, Next: Key Lookup, Prev: Mount Maps, Up: Mount Maps
+
+3.1 Map Types
+=============
+
+A mount-map provides the run-time configuration information to Amd.
+Maps can be implemented in many ways. Some of the forms supported by
+Amd are regular files, ndbm databases, NIS maps, the "Hesiod" name
+server, and even the password file.
+
+ A mount-map "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, Amd attempts to reference the map of the appropriate
+type. If a map is found, Amd notes the type for future use and deletes
+the reference, for example closing any open file descriptors. The
+available maps are configured when Amd is built and can be displayed by
+running the command 'amd -v'.
+
+ When using an Amd configuration file (*note Amd Configuration File::)
+and the keyword 'map_type' (*note map_type Parameter::), you may force
+the map used to any type.
+
+ By default, Amd caches data in a mode dependent on the type of map.
+This is the same as specifying 'cache:=mapdefault' and selects a
+suitable default cache mode depending on the map type. The individual
+defaults are described below. The CACHE option can be specified on
+automount points to alter the caching behavior (*note Automount
+Filesystem::).
+
+ The following map types have been implemented, though some are not
+available on all machines. Run the command 'amd -v' to obtain a list of
+map types configured on your machine.
+
+* Menu:
+
+* File maps::
+* ndbm maps::
+* NIS maps::
+* NIS+ maps::
+* Hesiod maps::
+* Password maps::
+* Union maps::
+* LDAP maps::
+* Executable maps::
+
+
+File: am-utils.info, Node: File maps, Next: ndbm maps, Prev: Map Types, Up: Map Types
+
+3.1.1 File maps
+---------------
+
+When 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 ('\') as
+the last character of a line in the file. The backslash, newline
+character _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:
+
+ key valA valB; \
+ valC
+
+ specifies _three_ locations, and is identical to
+
+ key valA valB; valC
+
+ However,
+
+ key valA valB;\
+ valC
+
+ specifies only _two_ locations, and is identical to
+
+ key valA valB;valC
+
+ After a complete line has been read from the file, including
+continuations, Amd determines whether there is a comment on the line. A
+comment begins with a hash ("'#'") 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 "only" apply to file
+maps, or ndbm maps built with the 'mk-amd-map' program.
+
+ When caching is enabled, file maps have a default cache mode of 'all'
+(*note Automount Filesystem::).
+
+
+File: am-utils.info, Node: ndbm maps, Next: NIS maps, Prev: File maps, Up: Map Types
+
+3.1.2 ndbm maps
+---------------
+
+An ndbm map may be used as a fast access form of a file map. The
+program, '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 _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 have a default cache mode of 'all' (*note Automount
+Filesystem::).
+
+
+File: am-utils.info, Node: NIS maps, Next: NIS+ maps, Prev: ndbm maps, Up: Map Types
+
+3.1.3 NIS maps
+--------------
+
+When using NIS (formerly YP), an Amd map is implemented directly by the
+underlying NIS map. Comments and continuation lines are _not_ supported
+in the automounter and must be stripped when constructing the NIS
+server's database.
+
+ NIS maps have a default cache mode of 'all' (*note Automount
+Filesystem::).
+
+ The following rule illustrates what could be added to your NIS
+'Makefile', in this case causing the 'amd.home' map to be rebuilt:
+ $(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
+
+ Here '$(YPTSDIR)' contains the time stamp files, and '$(YPDBDIR)'
+contains the dbm format NIS files.
+
+
+File: am-utils.info, Node: NIS+ maps, Next: Hesiod maps, Prev: NIS maps, Up: Map Types
+
+3.1.4 NIS+ maps
+---------------
+
+NIS+ maps do not support cache mode 'all' and, when caching is enabled,
+have a default cache mode of 'inc'.
+
+ XXX: FILL IN WITH AN EXAMPLE.
+
+
+File: am-utils.info, Node: Hesiod maps, Next: Password maps, Prev: NIS+ maps, Up: Map Types
+
+3.1.5 Hesiod maps
+-----------------
+
+When the map name begins with the string 'hesiod.' lookups are made
+using the "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 'automount' context, or the
+amd.conf parameter 'hesiod_base' (*note hesiod_base Parameter::). For
+example, if the key is 'jsp' and map name is 'hesiod.homes' then
+"Hesiod" is asked to resolve 'jsp.homes.automount'.
+
+ Hesiod maps do not support cache mode 'all' and, when caching is
+enabled, have a default cache mode of 'inc' (*note Automount
+Filesystem::).
+
+ The following is an example of a "Hesiod" map entry:
+
+ 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"
+
+
+File: am-utils.info, Node: Password maps, Next: Union maps, Prev: Hesiod maps, Up: Map Types
+
+3.1.6 Password maps
+-------------------
+
+The password map support is unlike the four previous map types. When
+the map name is the string '/etc/passwd' Amd can lookup a user name in
+the password file and re-arrange the home directory field to produce a
+usable map entry.
+
+ Amd assumes the home directory has the format
+'/anydir/dom1/../domN/login'. It breaks this string into a map entry
+where '${rfs}' has the value '/anydir/domN', '${rhost}' has the value
+'domN.....dom1', and '${sublink}' has the value login.
+
+ Thus if the password file entry was
+
+ /home/achilles/jsp
+
+ the map entry used by Amd would be
+
+ rfs:=/home/achilles;rhost:=achilles;sublink:=jsp
+
+ Similarly, if the password file entry was
+
+ /home/cc/sugar/mjh
+
+ the map entry used by Amd would be
+
+ rfs:=/home/sugar;rhost:=sugar.cc;sublink:=mhj
+
+
+File: am-utils.info, Node: Union maps, Next: LDAP maps, Prev: Password maps, Up: Map Types
+
+3.1.7 Union maps
+----------------
+
+The union map support is provided specifically for use with the union
+filesystem, *note Union Filesystem::.
+
+ It is identified by the string '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.
+
+
+File: am-utils.info, Node: LDAP maps, Next: Executable maps, Prev: Union maps, Up: Map Types
+
+3.1.8 LDAP maps
+---------------
+
+LDAP (Lightweight Directory Access Protocol) maps do not support cache
+mode 'all' and, when caching is enabled, have a default cache mode of
+'inc'.
+
+ For example, an Amd map 'amd.home' that looks as follows:
+
+ /defaults opts:=rw,intr;type:=link
+
+ zing -rhost:=shekel \
+ host==shekel \
+ host!=shekel;type:=nfs
+when converted to LDAP (*note amd2ldif::), will result in the following
+LDAP database:
+ $ amd2ldif amd.home CUCS < amd.home
+ dn: cn=amdmap timestamp, CUCS
+ cn : amdmap timestamp
+ objectClass : amdmapTimestamp
+ amdmapTimestamp: 873071363
+
+ dn: cn=amdmap amd.home[/defaults], CUCS
+ cn : amdmap amd.home[/defaults]
+ objectClass : amdmap
+ amdmapName : amd.home
+ amdmapKey : /defaults
+ amdmapValue : opts:=rw,intr;type:=link
+
+ dn: cn=amdmap amd.home[], CUCS
+ cn : amdmap amd.home[]
+ objectClass : amdmap
+ amdmapName : amd.home
+ amdmapKey :
+ amdmapValue :
+
+ dn: cn=amdmap amd.home[zing], CUCS
+ cn : amdmap amd.home[zing]
+ objectClass : amdmap
+ amdmapName : amd.home
+ amdmapKey : zing
+ amdmapValue : -rhost:=shekel host==shekel host!=shekel;type:=nfs
+
+
+File: am-utils.info, Node: Executable maps, Prev: LDAP maps, Up: Map Types
+
+3.1.9 Executable maps
+---------------------
+
+An executable map is a dynamic map in which the keys and values for the
+maps are generated on the fly by a program or script. The program is
+expected to take a single parameter argument which is the key to lookup.
+If the key is found, the program should print on stdout the key-value
+pair that were found; if the key was not found, nothing should be
+printed out. Below is an sample of such a map script:
+
+ #!/bin/sh
+ # executable map example
+ case "$1" in
+ "/defaults" )
+ echo "/defaults type:=nfs;rfs:=filer"
+ ;;
+ "a" )
+ echo "a type:=nfs;fs:=/tmp"
+ ;;
+ "b" )
+ echo "b type:=link;fs:=/usr/local"
+ ;;
+ * ) # no match, echo nothing
+ ;;
+ esac
+
+ *Note exec_map_timeout Parameter::.
+
+
+File: am-utils.info, Node: Key Lookup, Next: Location Format, Prev: Map Types, Up: Mount Maps
+
+3.2 How keys are looked up
+==========================
+
+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 (*note Variable Expansion::) and prefixing. If the automount
+point has a prefix, specified by the PREF option, then that is prepended
+to the search key before the map is searched.
+
+ If the map cache is a '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 "wildcard" match is attempted. Amd
+repeatedly strips the basename from the key, appends '/*' and attempts a
+lookup. Finally, Amd attempts to locate the special key '*'.
+
+ For example, the following sequence would be checked if
+'home/dylan/dk2' was being located:
+
+ home/dylan/dk2
+ home/dylan/*
+ home/*
+ *
+
+ At any point when a wildcard is found, 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.
+(*note Filesystem Types::).
+
+
+File: am-utils.info, Node: Location Format, Prev: Key Lookup, Up: Mount Maps
+
+3.3 Location Format
+===================
+
+The value field from the lookup provides the information required to
+mount a filesystem. The information is parsed according to the syntax
+shown below.
+
+ location-list:
+ location-selection
+ location-list white-space || white-space location-selection
+ location-selection:
+ location
+ location-selection white-space location
+ location:
+ location-info
+ -location-info
+ -
+ location-info:
+ sel-or-opt
+ location-info;sel-or-opt
+ ;
+ sel-or-opt:
+ selection
+ opt-ass
+ selection:
+ selector==value
+ selector!=value
+ opt-ass:
+ option:=value
+ white-space:
+ space
+ tab
+
+ Note that unquoted whitespace is not allowed in a location
+description. White space is only allowed, and is mandatory, where shown
+with non-terminal white-space.
+
+ A "location-selection" is a list of possible volumes with which to
+satisfy the request. Each "location-selection" is tried sequentially,
+until either one succeeds or all fail. This, by the way, is different
+from the historically documented behavior, which claimed (falsely, at
+least for last 3 years) that Amd would attempt to mount all
+"location-selection"s in parallel and the first one to succeed would be
+used.
+
+ "location-selection"s are optionally separated by the '||' 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 (*note
+Selectors::).
+
+ The location-selection, and singleton "location-list",
+'type:=ufs;dev:=/dev/xd1g' would inform Amd to mount a UFS filesystem
+from the block special device '/dev/xd1g'.
+
+ The "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 '"', for example '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
+(*note Program Filesystem::).
+
+* Menu:
+
+* Map Defaults::
+* Variable Expansion::
+* Selectors::
+* Map Options::
+
+
+File: am-utils.info, Node: Map Defaults, Next: Variable Expansion, Prev: Location Format, Up: Location Format
+
+3.3.1 Map Defaults
+------------------
+
+A location beginning with a dash '-' 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 '-fs:=/mnt;opts:=ro' would set the local mount point to
+'/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 '/defaults').
+
+
+File: am-utils.info, Node: Variable Expansion, Next: Selectors, Prev: Map Defaults, Up: Location Format
+
+3.3.2 Variable Expansion
+------------------------
+
+To allow generic location specifications Amd does variable expansion on
+each location and also on some of the option strings. Any option or
+selector appearing in the form '$"var"' is replaced by the current value
+of that option or selector. For example, if the value of '${key}' was
+'bin', '${autodir}' was '/a' and '${fs}' was '${autodir}/local/${key}'
+then after expansion '${fs}' would have the value '/a/local/bin'. Any
+environment variable can be accessed in a similar way.
+
+ Two pathname operators are available when expanding a variable. If
+the variable name begins with '/' then only the last component of the
+pathname is substituted. For example, if '${path}' was '/foo/bar' then
+'${/path}' would be expanded to 'bar'. Similarly, if the variable name
+ends with '/' then all but the last component of the pathname is
+substituted. In the previous example, '${path/}' would be expanded to
+'/foo'.
+
+ Two domain name operators are also provided. If the variable name
+begins with '.' then only the domain part of the name is substituted.
+For example, if '${rhost}' was 'swan.doc.ic.ac.uk' then '${.rhost}'
+would be expanded to 'doc.ic.ac.uk'. Similarly, if the variable name
+ends with '.' then only the host component is substituted. In the
+previous example, '${rhost.}' would be expanded to 'swan'.
+
+ Variable expansion is a two phase process. Before a location is
+parsed, all references to selectors, eg '${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: SUBLINK, RFS, FS, OPTS, REMOPTS, MOUNT and UNMOUNT.
+
+ Note that expansion of option values is done after "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:
+
+ 1. 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 '${arch}.bin' and the machine architecture was
+ 'vax', the value given to '${key}' would be 'vax.bin'.
+
+ 2. the value of '${rhost}' is expanded and normalized before the other
+ options are expanded. The normalization process strips any local
+ sub-domain components. For example, if '${domain}' was
+ 'Berkeley.EDU' and '${rhost}' was initially 'snow.Berkeley.EDU',
+ after the normalization it would simply be 'snow'. Hostname
+ normalization is currently done in a _case-dependent_ manner.
+
+
+File: am-utils.info, Node: Selectors, Next: Map Options, Prev: Variable Expansion, Up: Location Format
+
+3.3.3 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 'arch==sun3;os==sunos4' would only
+apply on Sun-3s running SunOS 4.x.
+
+ Selectors can be negated by using '!=' instead of '=='. For example
+to select a location on all non-Vax machines the selector 'arch!=vax'
+would be used.
+
+ 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 Amd uses the "error" filesystem (*note Error
+Filesystem::). This is equivalent to having a location 'type:=error' at
+the end of each mount-map entry.
+
+ The default value of many of the selectors listed here can be
+overridden by an Amd command line switch or in an Amd configuration
+file. *Note Amd Configuration File::.
+
+ The following selectors are currently implemented.
+
+* Menu:
+
+* arch Selector Variable::
+* autodir Selector Variable::
+* byte Selector Variable::
+* cluster Selector Variable::
+* domain Selector Variable::
+* dollar Selector Variable::
+* host Selector Variable::
+* hostd Selector Variable::
+* karch Selector Variable::
+* os Selector Variable::
+* osver Selector Variable::
+* full_os Selector Variable::
+* vendor Selector Variable::
+
+* key Selector Variable::
+* map Selector Variable::
+* netnumber Selector Variable::
+* network Selector Variable::
+* path Selector Variable::
+* wire Selector Variable::
+* uid Selector Variable::
+* gid Selector Variable::
+
+* exists Selector Function::
+* false Selector Function::
+* netgrp Selector Function::
+* netgrpd Selector Function::
+* in_network Selector Function::
+* true Selector Function::
+* xhost Selector Function::
+
+
+File: am-utils.info, Node: arch Selector Variable, Next: autodir Selector Variable, Prev: Selectors, Up: Selectors
+
+3.3.3.1 arch Selector Variable
+..............................
+
+The machine architecture which was automatically determined at compile
+time. The architecture type can be displayed by running the command
+'amd -v'. You can override this value also using the '-A' command line
+option. *Note Supported Platforms::.
+
+
+File: am-utils.info, Node: autodir Selector Variable, Next: byte Selector Variable, Prev: arch Selector Variable, Up: Selectors
+
+3.3.3.2 autodir Selector Variable
+.................................
+
+The default directory under which to mount filesystems. This may be
+changed by the '-a' command line option. *Note fs Option::.
+
+
+File: am-utils.info, Node: byte Selector Variable, Next: cluster Selector Variable, Prev: autodir Selector Variable, Up: Selectors
+
+3.3.3.3 byte Selector Variable
+..............................
+
+The machine's byte ordering. This is either 'little', indicating
+little-endian, or 'big', indicating big-endian. One possible use is to
+share 'rwho' databases (*note rwho servers::). Another is to share ndbm
+databases, however this use can be considered a courageous juggling act.
+
+
+File: am-utils.info, Node: cluster Selector Variable, Next: domain Selector Variable, Prev: byte Selector Variable, Up: Selectors
+
+3.3.3.4 cluster Selector Variable
+.................................
+
+This 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. '${cluster}' defaults to the value of '${domain}' unless a
+different value is set with the '-C' command line option.
+
+
+File: am-utils.info, Node: domain Selector Variable, Next: dollar Selector Variable, Prev: cluster Selector Variable, Up: Selectors
+
+3.3.3.5 domain Selector Variable
+................................
+
+The local domain name as specified by the '-d' command line option.
+*Note host Selector Variable::.
+
+
+File: am-utils.info, Node: dollar Selector Variable, Next: host Selector Variable, Prev: domain Selector Variable, Up: Selectors
+
+3.3.3.6 dollar Selector Variable
+................................
+
+This is a special variable, whose sole purpose is to produce a literal
+dollar sign in the value of another variable. For example, if you have
+a remote file system whose name is '/disk$s', you can mount it by
+setting the remote file system variable as follows:
+
+ rfs:=/disk${dollar}s
+
+
+File: am-utils.info, Node: host Selector Variable, Next: hostd Selector Variable, Prev: dollar Selector Variable, Up: Selectors
+
+3.3.3.7 host Selector Variable
+..............................
+
+The local hostname as determined by gethostname(2). If no domain name
+was specified on the command line and the hostname contains a period '.'
+then the string before the period is used as the host name, and the
+string after the period is assigned to '${domain}'. For example, if the
+hostname is 'styx.doc.ic.ac.uk' then 'host' would be 'styx' and 'domain'
+would be 'doc.ic.ac.uk'. 'hostd' would be 'styx.doc.ic.ac.uk'.
+
+
+File: am-utils.info, Node: hostd Selector Variable, Next: karch Selector Variable, Prev: host Selector Variable, Up: Selectors
+
+3.3.3.8 hostd Selector Variable
+...............................
+
+This resolves to the '${host}' and '${domain}' concatenated with a '.'
+inserted between them if required. If '${domain}' is an empty string
+then '${host}' and '${hostd}' will be identical.
+
+
+File: am-utils.info, Node: karch Selector Variable, Next: os Selector Variable, Prev: hostd Selector Variable, Up: Selectors
+
+3.3.3.9 karch Selector Variable
+...............................
+
+This is provided as a hook for the kernel architecture. This is used on
+SunOS 4 and SunOS 5, for example, to distinguish between different
+'/usr/kvm' volumes. '${karch}' defaults to the "machine" value gotten
+from uname(2). If the uname(2) system call is not available, the value
+of '${karch}' defaults to that of '${arch}'. Finally, a different value
+can be set with the '-k' command line option.
+
+
+File: am-utils.info, Node: os Selector Variable, Next: osver Selector Variable, Prev: karch Selector Variable, Up: Selectors
+
+3.3.3.10 os Selector Variable
+.............................
+
+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 'amd -v'. *Note Supported
+Platforms::.
+
+
+File: am-utils.info, Node: osver Selector Variable, Next: full_os Selector Variable, Prev: os Selector Variable, Up: Selectors
+
+3.3.3.11 osver Selector Variable
+................................
+
+The operating system version. Like the machine architecture, this is
+automatically determined at compile time. The operating system name can
+be displayed by running the command 'amd -v'. *Note Supported
+Platforms::.
+
+
+File: am-utils.info, Node: full_os Selector Variable, Next: vendor Selector Variable, Prev: osver Selector Variable, Up: Selectors
+
+3.3.3.12 full_os Selector Variable
+..................................
+
+The full name of the operating system, including its version. This
+value is automatically determined at compile time. The full operating
+system name and version can be displayed by running the command 'amd
+-v'. *Note Supported Platforms::.
+
+
+File: am-utils.info, Node: vendor Selector Variable, Next: key Selector Variable, Prev: full_os Selector Variable, Up: Selectors
+
+3.3.3.13 vendor Selector Variable
+.................................
+
+The name of the vendor of the operating system. This value is
+automatically determined at compile time. The name of the vendor can be
+displayed by running the command 'amd -v'. *Note Supported Platforms::.
+
+
+
+
+ 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.
+
+
+File: am-utils.info, Node: key Selector Variable, Next: map Selector Variable, Prev: vendor Selector Variable, Up: Selectors
+
+3.3.3.14 key Selector Variable
+..............................
+
+The name being resolved. For example, if '/home' is an automount point,
+then accessing '/home/foo' would set '${key}' to the string 'foo'. The
+key is prefixed by the PREF option set in the parent mount point. The
+default prefix is an empty string. If the prefix was 'blah/' then
+'${key}' would be set to 'blah/foo'.
+
+
+File: am-utils.info, Node: map Selector Variable, Next: netnumber Selector Variable, Prev: key Selector Variable, Up: Selectors
+
+3.3.3.15 map Selector Variable
+..............................
+
+The name of the mount map being used.
+
+
+File: am-utils.info, Node: netnumber Selector Variable, Next: network Selector Variable, Prev: map Selector Variable, Up: Selectors
+
+3.3.3.16 netnumber Selector Variable
+....................................
+
+This selector is identical to the 'in_network' selector function, see
+*note in_network Selector Function::. It will match either the name or
+number of any network interface on which this host is connected to. The
+names and numbers of all attached interfaces are available from the
+output of 'amd -v'.
+
+
+File: am-utils.info, Node: network Selector Variable, Next: path Selector Variable, Prev: netnumber Selector Variable, Up: Selectors
+
+3.3.3.17 network Selector Variable
+..................................
+
+This selector is identical to the 'in_network' selector function, see
+*note in_network Selector Function::. It will match either the name or
+number of any network interface on which this host is connected to. The
+names and numbers of all attached interfaces are available from the
+output of 'amd -v'.
+
+
+File: am-utils.info, Node: path Selector Variable, Next: wire Selector Variable, Prev: network Selector Variable, Up: Selectors
+
+3.3.3.18 path Selector Variable
+...............................
+
+The full pathname of the name being resolved. For example '/home/foo'
+in the example above.
+
+
+File: am-utils.info, Node: wire Selector Variable, Next: uid Selector Variable, Prev: path Selector Variable, Up: Selectors
+
+3.3.3.19 wire Selector Variable
+...............................
+
+This selector is identical to the 'in_network' selector function, see
+*note in_network Selector Function::. It will match either the name or
+number of any network interface on which this host is connected to. The
+names and numbers of all attached interfaces are available from the
+output of 'amd -v'.
+
+
+File: am-utils.info, Node: uid Selector Variable, Next: gid Selector Variable, Prev: wire Selector Variable, Up: Selectors
+
+3.3.3.20 uid Selector Variable
+..............................
+
+This selector provides the numeric effective user ID (UID) of the user
+which last accessed an automounted path name. This simple example shows
+how floppy mounting can be assigned only to machine owners:
+
+ floppy -type:=pcfs \
+ uid==2301;host==shekel;dev:=/dev/floppy \
+ uid==6712;host==titan;dev=/dev/fd0 \
+ uid==0;dev:=/dev/fd0c \
+ type:=error
+
+ The example allows two machine owners to mount floppies on their
+designated workstations, allows the root user to mount on any host, and
+otherwise forces an error.
+
+
+File: am-utils.info, Node: gid Selector Variable, Next: exists Selector Function, Prev: uid Selector Variable, Up: Selectors
+
+3.3.3.21 gid Selector Variable
+..............................
+
+This selector provides the numeric effective group ID (GID) of the user
+which last accessed an automounted path name.
+
+
+
+ The following boolean functions are selectors which take an argument
+ARG. They return a value of true or false, and thus do not need to be
+compared with a value. Each of these may be negated by prepending '!'
+to their name.
+
+
+File: am-utils.info, Node: exists Selector Function, Next: false Selector Function, Prev: gid Selector Variable, Up: Selectors
+
+3.3.3.22 exists Selector Function
+.................................
+
+If the file listed by ARG exists (via lstat(2)), this function evaluates
+to true. Otherwise it evaluates to false.
+
+
+File: am-utils.info, Node: false Selector Function, Next: netgrp Selector Function, Prev: exists Selector Function, Up: Selectors
+
+3.3.3.23 false Selector Function
+................................
+
+Always evaluates to false. ARG is ignored.
+
+
+File: am-utils.info, Node: netgrp Selector Function, Next: netgrpd Selector Function, Prev: false Selector Function, Up: Selectors
+
+3.3.3.24 netgrp Selector Function
+.................................
+
+The argument ARG of this selector is a netgroup name followed optionally
+by a comma and a host name. If the host name is not specified, it
+defaults to '${host}'. If the host name (short name) is a member of the
+netgroup, this selector evaluates to true. Otherwise it evaluates to
+false.
+
+ For example, suppose you have a netgroup 'ppp-hosts', and for reasons
+of performance, these have a local '/home' partition, while all other
+clients on the faster network can access a shared home directory. A
+common map to use for both might look like the following:
+
+ home/* netgrp(ppp-hosts);type:=link;fs:=/local/${key} \
+ !netgrp(ppp-hosts);type:=nfs;rhost:=serv1;rfs:=/remote/${key}
+
+ A more complex example that takes advantage of the two argument
+netgrp mount selector is given in the following scenario. Suppose one
+wants to mount the local scratch space from a each host under
+'scratch/<hostname>' and some hosts have their scratch space in a
+different path than others. Hosts in the netgroup 'apple-hosts' have
+their scratch space in the '/apple' path, where hosts in the netgroup
+'cherry-hosts' have their scratch space in the '/cherry' path. For
+hosts that are neither in the 'apple-hosts' or 'cherry-hosts' netgroups
+we want to make a symlink pointing to nowhere but provide a descriptive
+error message in the link destination:
+
+ scratch/* netgrp(apple-hosts,${/key});type:=nfs;rhost:=${/key};\
+ rfs:="/apple" \
+ netgrp(cherry-hosts,${/key});type:=nfs;rhost:=${/key};\
+ rfs:="/cherry" \
+ type:=link;rfs:="no local partition for ${/key}"
+
+
+File: am-utils.info, Node: netgrpd Selector Function, Next: in_network Selector Function, Prev: netgrp Selector Function, Up: Selectors
+
+3.3.3.25 netgrpd Selector Function
+..................................
+
+The argument ARG of this selector is a netgroup name followed optionally
+by a comma and a host name. If the host name is not specified, it
+defaults to '${hostd}'. If the host name (fully-qualified name) is a
+member of the netgroup, this selector evaluates to true. Otherwise it
+evaluates to false.
+
+ The 'netgrpd' function uses fully-qualified host names to match
+netgroup names, while the 'netgrp' function (*note netgrp Selector
+Function::) uses short host names.
+
+
+File: am-utils.info, Node: in_network Selector Function, Next: true Selector Function, Prev: netgrpd Selector Function, Up: Selectors
+
+3.3.3.26 in_network Selector Function
+.....................................
+
+This selector matches against any network name or number with an
+optional netmask. First, if the current host has any network interface
+that is locally attached to the network specified in ARG (either via
+name or number), this selector evaluates to true.
+
+ Second, 'in_network' supports a network/netmask syntax such as
+'128.59.16.0/255.255.255.0', '128.59.16.0/24', '128.59.16.0/0xffffff00',
+or '128.59.16.0/'. Using the last form, Amd will match the specified
+network number against the default netmasks of each of the locally
+attached interfaces.
+
+ If the selector does not match, it evaluates to false.
+
+ For example, suppose you have two servers that have an exportable
+'/opt' that smaller clients can NFS mount. The two servers are say,
+'serv1' on network 'foo-net.site.com' and 'serv2' on network
+'123.4.5.0'. You can write a map to be used by all clients that will
+attempt to mount the closest one as follows:
+
+ opt in_network(foo-net.site.com);rhost:=serv1;rfs:=/opt \
+ in_network(123.4.5.0);rhost:=serv2;rfs:=/opt \
+ rhost:=fallback-server
+
+
+File: am-utils.info, Node: true Selector Function, Next: xhost Selector Function, Prev: in_network Selector Function, Up: Selectors
+
+3.3.3.27 true Selector Function
+...............................
+
+Always evaluates to true. ARG is ignored.
+
+
+File: am-utils.info, Node: xhost Selector Function, Prev: true Selector Function, Up: Selectors
+
+3.3.3.28 xhost Selector Function
+................................
+
+This function compares ARG against the current hostname, similarly to
+the *note host Selector Variable::. However, this function will also
+match if ARG is a CNAME (DNS Canonical Name, or alias) for the current
+host's name.
+
+
+File: am-utils.info, Node: Map Options, Prev: Selectors, Up: Location Format
+
+3.3.4 Map Options
+-----------------
+
+Options are parsed concurrently with selectors. The difference is that
+when an option is seen the string following the ':=' is recorded for
+later use. As a minimum the TYPE option must be specified. Each
+filesystem type has other options which must also be specified. *Note
+Filesystem Types::, for details on the filesystem specific options.
+
+ Superfluous option specifications are ignored and are not reported as
+errors.
+
+ The following options apply to more than one filesystem type.
+
+* Menu:
+
+* addopts Option::
+* delay Option::
+* fs Option::
+* opts Option::
+* remopts Option::
+* sublink Option::
+* type Option::
+
+
+File: am-utils.info, Node: addopts Option, Next: delay Option, Prev: Map Options, Up: Map Options
+
+3.3.4.1 addopts Option
+......................
+
+This option adds additional options to default options normally
+specified in the '/defaults' entry or the defaults of the key entry
+being processed (*note opts Option::). Normally when you specify 'opts'
+in both the '/defaults' and the map entry, the latter overrides the
+former completely. But with 'addopts' it will append the options and
+override any conflicting ones.
+
+ 'addopts' also overrides the value of the 'remopts' option (*note
+remopts Option::), which unless specified defaults to the value of
+'opts'.
+
+ Options which start with 'no' will override those with the same name
+that do not start with 'no' and vice verse. Special handling is given
+to inverted options such as 'soft' and 'hard', 'bg' and 'fg', 'ro' and
+'rw', etc.
+
+ For example, if the default options specified were
+ opts:=rw,nosuid,intr,rsize=1024,wsize=1024,quota,posix
+
+ and the ones specified in a map entry were
+
+ addopts:=grpid,suid,ro,rsize=2048,quota,nointr
+
+ then the actual options used would be
+
+ wsize=1024,posix,grpid,suid,ro,rsize=2048,quota,nointr
+
+
+File: am-utils.info, Node: delay Option, Next: fs Option, Prev: addopts Option, Up: Map Options
+
+3.3.4.2 delay Option
+....................
+
+The delay, in seconds, before an attempt will be made to mount from the
+current location. Auxiliary 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.
+
+
+File: am-utils.info, Node: fs Option, Next: opts Option, Prev: delay Option, Up: Map Options
+
+3.3.4.3 fs Option
+.................
+
+The local mount point. The semantics of this option vary between
+filesystems.
+
+ For NFS and UFS filesystems the value of '${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 "local" mount point "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 getcwd(3) traverses the
+namespace to find the pathname of the current directory.
+
+ The 'fs' option defaults to '${autodir}/${rhost}${rfs}'. In
+addition, 'rhost' defaults to the local host name ('${host}') and 'rfs'
+defaults to the value of '${path}', which is the full path of the
+requested file; '/home/foo' in the example above (*note Selectors::).
+'${autodir}' defaults to '/a' but may be changed with the '-a' command
+line option. Sun's automounter defaults to '/tmp_mnt'. Note that there
+is no '/' between the '${rhost}' and '${rfs}' since '${rfs}' begins with
+a '/'.
+
+
+File: am-utils.info, Node: opts Option, Next: remopts Option, Prev: fs Option, Up: Map Options
+
+3.3.4.4 opts Option
+...................
+
+The options to pass to the mount system call. A leading '-' is silently
+ignored. The mount options supported generally correspond to those used
+by mount(8) and are listed below. Some additional pseudo-options are
+interpreted by Amd and are also listed.
+
+ Unless specifically overridden, each of the system default mount
+options applies. Any options not recognized are ignored. If no options
+list is supplied the string '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.4BSD is known to implement the 'compress' and 'spongy' options.
+
+'acdirmax=N'
+ Set the maximum directory attribute cache timeout to N.
+
+'acdirmin=N'
+ Set the minimum directory attribute cache timeout to N.
+
+'acregmax=N'
+ Set the maximum file attribute cache timeout to N.
+
+'acregmin=N'
+ Set the minimum file attribute cache timeout to N.
+
+'actimeo=N'
+ Set the overall attribute cache timeout to N.
+
+'auto'
+'ignore'
+ Ignore this mount by df(1).
+
+'cache'
+ Allow data to be cached from a remote server for this mount.
+
+'closesession'
+ For UDF mounts, close the session when unmounting.
+
+'compress'
+ Use NFS compression protocol.
+
+'defperm'
+ Ignore the permission mode bits, and default file permissions to
+ 0555, UID 0, and GID 0. Useful for CD-ROMs formatted as ISO-9660.
+
+'dev'
+ Allow local special devices on this filesystem.
+
+'dirmask=N'
+ For PCFS mounts, specify the maximum file permissions for
+ directories in the file system. See the 'mask' option's
+ description for more details. The mask value of N can be specified
+ in decimal, octal, or hexadecimal.
+
+'dumbtimr'
+ Turn off the dynamic retransmit timeout estimator. This may be
+ useful for UDP mounts that exhibit high retry rates, since it is
+ possible that the dynamically estimated timeout interval is too
+ short.
+
+'extatt'
+ Enable extended attributes in ISO-9660 file systems.
+
+'fsid'
+ Set ID of filesystem.
+
+'gens'
+ Enable generations in ISO-9660 file systems. Generations allow you
+ to see all versions of a given file.
+
+'gmtoff=N'
+ For UDF mounts, set the time zone offset from UTC to N seconds,
+ with positive values indicating east of the Prime Meridian. If not
+ set, the user's current time zone will be used.
+
+'group=N'
+ For PCFS and UDF mounts, set the group of the files in the file
+ system to N (which can either be a group name or a GID number).
+ The default group is the group of the directory on which the file
+ system is being mounted.
+
+'grpid'
+ Use BSD directory group-id semantics.
+
+'int'
+'intr'
+ Allow keyboard interrupts on hard mounts.
+
+'lock'
+ Use the NFS locking protocol (default)
+
+'longname'
+ For PCFS mounts, force Win95 long names.
+
+'mask=N'
+ For PCFS mounts, specify the maximum file permissions for files in
+ the file system. For example, a mask of 755 specifies that, by
+ default, the owner should have read, write, and execute permissions
+ for files, but others should only have read and execute
+ permissions. Only the nine low-order bits of mask are used. The
+ default mask is taken from the directory on which the file system
+ is being mounted. The mask value of N can be specified in decimal,
+ octal, or hexadecimal.
+
+'multi'
+ Perform multi-component lookup on files.
+
+'maxgroups'
+ Set the maximum number of groups to allow for this mount.
+
+'nfsv3'
+ Use NFS Version 3 for this mount.
+
+'noac'
+ Turn off the attribute cache.
+
+'noauto'
+ This option is used by the mount command in '/etc/fstab' or
+ '/etc/vfstab' and means not to mount this file system when mount -a
+ is used.
+
+'nocache'
+ Do not allow data to be cached from a remote server for this mount.
+
+'nocasetrans'
+ Don't do case translation. Useful for CD-ROMS formatted as
+ ISO-9660.
+
+'noconn'
+ Don't make a connection on datagram transports.
+
+'nocto'
+ No close-to-open consistency.
+
+'nodefperm'
+ Do not ignore the permission mode bits. Useful for CD-ROMS
+ formatted as ISO-9660.
+
+'nodev'
+'nodevs'
+ Don't allow local special devices on this filesystem.
+
+'noexec'
+ Don't allow program execution.
+
+'noint'
+ Do not allow keyboard interrupts for this mount
+
+'nojoliet'
+ Turn off the Joliet extensions. Useful for CD-ROMS formatted as
+ ISO-9660.
+
+'nolock'
+ Do not use the NFS locking protocol
+
+'nomnttab'
+ This option is used internally to tell Amd that a Solaris 8 system
+ using mntfs is in use.
+
+'norrip'
+ Turn off using of the Rock Ridge Interchange Protocol (RRIP)
+ extensions to ISO-9660.
+
+'nosub'
+ Disallow mounts beneath this mount.
+
+'nosuid'
+ Don't allow set-uid or set-gid executables on this filesystem.
+
+'noversion'
+ Strip the extension ';#' from the version string of files recorded
+ on an ISO-9660 CD-ROM.
+
+'nowin95'
+ For PCFS mounts, completely ignore Win95 entries.
+
+'optionstr'
+ Under Solaris 8, provide the kernel a string of options to parse
+ and show as part of the special in-kernel mount file system.
+
+'overlay'
+ Overlay this mount on top of an existing mount, if any.
+
+'pgthresh=N'
+ Set the paging threshold to N kilobytes.
+
+'port=N'
+ Set the NFS port to N.
+
+'posix'
+ Turn on POSIX static pathconf for mounts.
+
+'private'
+ Use local locking instead of the NLM protocol, useful for IRIX 6
+ only.
+
+'proplist'
+ Support property lists (ACLs) for this mount, useful primarily for
+ Tru64 UNIX.
+
+'proto=S'
+ Use transport protocol S for NFS (can be '"tcp"' or '"udp"').
+
+'quota'
+ Enable quota checking on this mount.
+
+'rdonly'
+'ro'
+ Mount this filesystem readonly.
+
+'resvport'
+ Use a reserved port (smaller than 1024) for remote NFS mounts.
+ Most systems assume that, but some allow for mounts to occur on
+ non-reserved ports. This causes problems when such a system tries
+ to NFS mount one that requires reserved ports. It is recommended
+ that this option always be on.
+
+'retrans=n'
+ The number of NFS retransmits made before a user error is generated
+ by a 'soft' mounted filesystem, and before a 'hard' mounted
+ filesystem reports 'NFS server "yoyo" not responding still trying'.
+
+'retry'
+ Set the NFS retry counter.
+
+'rrcaseins'
+ Enable the Rock Ridge Interchange Protocol (RRIP) case insensitive
+ extensions. Useful for CD-ROMS formatted as ISO-9660.
+
+'rrip'
+ Uses the Rock Ridge Interchange Protocol (RRIP) extensions to
+ ISO-9660.
+
+'rsize=N'
+ The NFS read packet size. You may need to set this if you are
+ using NFS/UDP through a gateway or a slow link.
+
+'rw'
+ Allow reads and writes on this filesystem.
+
+'sessionnr=N'
+ For multisession UDF mounts, use session number N when mounting.
+
+'shortname'
+ For PCFS mounts, force old DOS short names only.
+
+'soft'
+ Give up after "retrans" retransmissions.
+
+'spongy'
+ Like 'soft' for status requests, and 'hard' for data transfers.
+
+'suid'
+ Allow set-uid programs on this mount.
+
+'symttl'
+ Turn off the symbolic link cache time-to-live.
+
+'sync'
+ Perform synchronous filesystem operations on this mount.
+
+'tcp'
+ Use TCP/IP instead of UDP/IP, ignored if the NFS implementation
+ does not support TCP/IP mounts.
+
+'timeo=N'
+ The NFS timeout, in tenth-seconds, before a request is
+ retransmitted.
+
+'user=N'
+ For PCFS and UDF mounts, set the owner of the files in the file
+ system to N (which can either be a user name or a UID number). The
+ default owner is the owner of the directory on which the file
+ system is being mounted.
+
+'vers=N'
+ Use NFS protocol version number N (can be 2 or 3).
+
+'wsize=N'
+ The NFS write packet size. You may need to set this if you are
+ using NFS/UDP through a gateway or a slow link.
+
+ The following options are implemented by Amd, rather than being
+passed to the kernel.
+
+'nounmount'
+ Configures the mount so that its time-to-live will never expire.
+ This is the default for non-network based filesystem types (such as
+ mounting local disks, floppies, and CD-ROMs). See also the related
+ unmount option.
+
+'ping=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 set
+ to zero, Amd will use the default 30-second interval. If the
+ interval is set to -1 (or any other negative value), no pings are
+ sent and the host is assumed to be always up, which can cause
+ unmounts to hang See the softlookup option for a better
+ alternative. Turning pings off can be useful in NFS-HA
+ (High-Availability) sites where the NFS service rarely goes down.
+ Setting the ping value to a large value can reduce the amount of
+ NFS_NULL chatter on your network considerably, especially in large
+ sites.
+
+ Note that if you have multiple Amd entries using the same file
+ server, and each entry sets a different value of N, then each time
+ Amd mounts a new entry, the ping value will be re-evaluated (and
+ updated, turned off, or turned back on as needed). Finally, note
+ that NFS_NULL pings are sent for both UDP and TCP mounts, because
+ even a hung TCP mount can cause user processes to hang.
+
+'public'
+ Use WebNFS multi-component lookup on the public file handle instead
+ of the mount protocol to obtain NFS file handles, as documented in
+ the WebNFS Client Specification, RFC 2054. This means that Amd
+ will not attempt to contact the remote portmapper or remote mountd
+ daemon, and will only connect to the well-known NFS port 2049 or
+ the port specified with the port mount option, thus making it
+ easier to use NFS through a firewall.
+
+'retry=N'
+ The number of times to retry the mount system call.
+
+'softlookup'
+ Configures Amd's behavior with respect to already-mounted shares
+ from NFS fileservers that are unreachable. If softlookup is
+ specified, trying to access such a share will result in an error
+ (EIO, which is changed from the ENOENT 6.0 used to return). If it
+ is not specified, a regular symlink is provided and the access will
+ probably hang in the NFS filesystem.
+
+ The default behavior depends on whether the mount is 'soft' or
+ 'hard'; softlookup can be used to change this default. This is
+ changed from 6.0 which always behaved as if softlookup was
+ specified.
+
+'unmount'
+ Configures the mount so that its time-to-live will indeed expire
+ (and thus may be automatically unmounted). This is also the
+ default for network-based filesystem types (e.g., NFS). This option
+ is useful for removable local media such as CD-ROMs, USB drives,
+ etc. so they can expire when not in use, and get unmounted (such
+ drives can get work out when they keep spinning). See also the
+ related nounmount option.
+
+'utimeout=N'
+ The interval, in seconds, that looked up and mounted map entries
+ are cached. After that period of time, Amd will attempt to unmount
+ the entries. If, however, the unmount fails (with EBUSY), then Amd
+ will extend the mount's time-to-live by the utimeout value before
+ the next unmount attempt is made. 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.
+
+'xlatecookie'
+ Translate directory cookies between 32-long and 64-long lengths.
+
+
+File: am-utils.info, Node: remopts Option, Next: sublink Option, Prev: opts Option, Up: Map Options
+
+3.3.4.5 remopts Option
+......................
+
+This option has the same use as '${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 REMOPTS. When a non-local host is accessed, the smaller
+sizes will automatically be used.
+
+ Amd determines whether a host is local by examining the network
+interface configuration at startup. Any interface changes made after
+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 '${remopts}' is the same as the
+value of '${opts}'.
+
+
+File: am-utils.info, Node: sublink Option, Next: type Option, Prev: remopts Option, Up: Map Options
+
+3.3.4.6 sublink Option
+......................
+
+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.
+
+
+File: am-utils.info, Node: type Option, Prev: sublink Option, Up: Map Options
+
+3.3.4.7 type Option
+...................
+
+The filesystem type to be used. *Note Filesystem Types::, for a full
+description of each type.
+
+
+File: am-utils.info, Node: Amd Command Line Options, Next: Filesystem Types, Prev: Mount Maps, Up: Top
+
+4 Amd Command Line Options
+**************************
+
+Many of 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
+
+ amd [options] [{ directory map-name [-map-options] } ...]
+
+ For each directory and map-name given or specified in the 'amd.conf'
+file, Amd establishes an automount point. The "map-options" may be any
+sequence of options or selectors--*note Location Format::. The
+"map-options" apply only to Amd's mount point.
+
+ '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 '/defaults'. When default
+options are given they are prepended to any options specified in the
+mount-map locations as explained in *note Map Defaults::.
+
+ The "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 Amd exits. Finally, Amd
+disassociates itself from its controlling terminal and forks into the
+background.
+
+ Note: Even if Amd has been built with '-DDEBUG' (via 'configure
+--enable-debug'), it will still background itself and disassociate
+itself from the controlling terminal. To use a debugger it is necessary
+to specify '-D daemon' on the command line. However, even with all of
+this, mounts and unmounts are performed in the background, and Amd will
+always fork before doing them. Therefore, debugging what happens
+closely during un/mounts is more challenging.
+
+ _All_ of Amd's command options (save '-F' and '-T') can be specified
+in the 'amd.conf' file. *Note Amd Configuration File::. If Amd is
+invoked without any command line options, it will default to using the
+configuration file '/etc/amd.conf', if one exists.
+
+* 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 normalization.
+* -o Option:: Operating system version.
+* -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.
+* -A Option:: Operating system Architecture.
+* -C Option:: Cluster name.
+* -D Option:: Debug flags.
+* -F Option:: Amd configuration file.
+* -H Option:: Show brief help.
+* -O Option:: Operating system name.
+* -S Option:: Lock executable pages in memory.
+* -T Option:: Set tag for configuration file.
+
+
+File: am-utils.info, Node: -a Option, Next: -c Option, Prev: Amd Command Line Options, Up: Amd Command Line Options
+
+4.1 '-a' DIRECTORY
+==================
+
+Specifies the default mount directory. This option changes the variable
+'${autodir}' which otherwise defaults to '/a'. For example, some sites
+prefer '/amd' or '/n'.
+
+ amd -a /amd ...
+
+
+File: am-utils.info, Node: -c Option, Next: -d Option, Prev: -a Option, Up: Amd Command Line Options
+
+4.2 '-c' CACHE-INTERVAL
+=======================
+
+Selects the period, in seconds, for which a name is cached by Amd. If
+no reference is made to the volume in this period, Amd discards the
+volume name to filesystem mapping.
+
+ Once the last reference to a filesystem has been removed, Amd
+attempts to unmount the filesystem. If the unmount fails the interval
+is extended by a further period as specified by the '-w' command line
+option or by the 'utimeout' mount option.
+
+ The default "cache-interval" is 300 seconds (five minutes).
+
+
+File: am-utils.info, Node: -d Option, Next: -k Option, Prev: -c Option, Up: Amd Command Line Options
+
+4.3 '-d' DOMAIN
+===============
+
+Specifies the host's domain. This sets the internal variable
+'${domain}' and affects the '${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
+'${domain}' is 'unknown.domain'.
+
+ For example, if the local domain was 'doc.ic.ac.uk', Amd could be
+started as follows:
+
+ amd -d doc.ic.ac.uk ...
+
+
+File: am-utils.info, Node: -k Option, Next: -l Option, Prev: -d Option, Up: Amd Command Line Options
+
+4.4 '-k' KERNEL-ARCHITECTURE
+============================
+
+Specifies the kernel architecture of the system. This is usually the
+output of 'uname -m' (the "machine" value gotten from uname(2)). If the
+uname(2) system call is not available, the value of '${karch}' defaults
+to that of '${arch}'.
+
+ The only effect of this option is to set the variable '${karch}'.
+
+ This option would be used as follows:
+
+ amd -k `arch -k` ...
+
+
+File: am-utils.info, Node: -l Option, Next: -n Option, Prev: -k Option, Up: Amd Command Line Options
+
+4.5 '-l' LOG-OPTION
+===================
+
+Selects the form of logging to be made. Several special "log-options"
+are recognized.
+
+ 1. If "log-option" is the string 'syslog', Amd will use the syslog(3)
+ mechanism. If your system supports syslog facilities, then the
+ default facility used is 'LOG_DAEMON'.
+
+ 2. When using syslog, if you wish to change the facility, append its
+ name to the log option name, delimited by a single colon. For
+ example, if "log-options" is the string 'syslog:local7' then Amd
+ will log messages via syslog(3) using the 'LOG_LOCAL7' facility.
+ If the facility name specified is not recognized, Amd will default
+ to 'LOG_DAEMON'. Note: while you can use any syslog facility
+ available on your system, it is generally a bad idea to use those
+ reserved for other services such as 'kern', 'lpr', 'cron', etc.
+
+ 3. If "log-option" is the string '/dev/stderr', Amd will use standard
+ error, which is also the default target for log messages. To
+ implement this, Amd simulates the effect of the '/dev/fd' driver.
+
+ 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.
+
+ Normally, when long-running daemons hold an open file descriptor on a
+log file, it is impossible to "rotate" the log file and compress older
+logs on a daily basis. The daemon needs to be told to discard (via
+close(2)) its file handle, and re-open the log file. This is done using
+'amq -l' log-option. *Note Amq -l option::.
+
+ If the 'syslog' option is specified but the system does not support
+syslog or if the named file cannot be opened or created, Amd will use
+standard error. Error messages generated before Amd has finished
+parsing the command line are printed on standard error.
+
+ Since Amd tends to generate a lot of logging information (especially
+if debugging was turned on), and due to it being an important program
+running on the system, it is usually best to log to a separate disk
+file. In that case Amd would be started as follows:
+
+ amd -l /var/log/amd ...
+
+
+File: am-utils.info, Node: -n Option, Next: -o Option, Prev: -l Option, Up: Amd Command Line Options
+
+4.6 '-n'
+========
+
+Normalizes the remote hostname before using it. Normalization is done
+by replacing the value of '${rhost}' with the (generally fully
+qualified) 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.
+
+
+File: am-utils.info, Node: -o Option, Next: -p Option, Prev: -n Option, Up: Amd Command Line Options
+
+4.7 '-o' OP-SYS-VER
+===================
+
+Overrides the compiled-in version number of the operating system, with
+OP-SYS-VER. Useful when the built-in version is not desired for
+backward compatibility reasons. For example, if the built-in version is
+'2.5.1', you can override it to '5.5.1', and use older maps that were
+written with the latter in mind.
+
+
+File: am-utils.info, Node: -p Option, Next: -r Option, Prev: -o Option, Up: Amd Command Line Options
+
+4.8 '-p'
+========
+
+Causes Amd's process id to be printed on standard output. This can be
+redirected to a suitable file for use with kill:
+
+ amd -p > /var/run/amd.pid ...
+
+ This option only has an affect if Amd is running in daemon mode. If
+Amd is started with the '-D daemon' debug flag, this option is ignored.
+
+
+File: am-utils.info, Node: -r Option, Next: -t Option, Prev: -p Option, Up: Amd Command Line Options
+
+4.9 '-r'
+========
+
+Tells Amd to restart existing mounts (*note Inheritance Filesystem::).
+
+
+File: am-utils.info, Node: -t Option, Next: -v Option, Prev: -r Option, Up: Amd Command Line Options
+
+4.10 '-t' TIMEOUT.RETRANSMIT
+============================
+
+Specifies the RPC "timeout" interval and the "retransmit" counter used
+by the kernel to communicate to Amd. These are used to set the 'timeo'
+and 'retrans' mount options, respectively. The default timeout is 0.8
+seconds, and the default number of retransmissions is 11.
+
+ Amd relies on the kernel RPC retransmit mechanism to trigger mount
+retries. The values of these parameters change the overall retry
+interval. Too long an interval gives poor interactive response; too
+short an interval causes excessive retries.
+
+
+File: am-utils.info, Node: -v Option, Next: -w Option, Prev: -t Option, Up: Amd Command Line Options
+
+4.11 '-v'
+=========
+
+Print version information on standard error and then exit. The output
+is of the form:
+
+ Copyright (c) 1997-1999 Erez Zadok
+ Copyright (c) 1990 Jan-Simon Pendry
+ Copyright (c) 1990 Imperial College of Science, Technology & Medicine
+ Copyright (c) 1990 The Regents of the University of California.
+ am-utils version 6.0a15 (build 61).
+ Built by ezk@example.com on date Wed Oct 22 15:21:03 EDT 1997.
+ cpu=sparc (big-endian), arch=sun4, karch=sun4u.
+ full_os=solaris2.5.1, os=sos5, osver=5.5.1, vendor=sun.
+ Map support for: root, passwd, union, nisplus, nis, ndbm, file, error.
+ AMFS: nfs, link, nfsx, nfsl, host, linkx, program, union, inherit,
+ ufs, lofs, hsfs, pcfs, auto, direct, toplvl, error.
+ FS: autofs, cachefs, cdfs, lofs, nfs, nfs3, pcfs, tfs, tmpfs, udf, ufs.
+ Network 1: wire="mcl-lab-net.cs.columbia.edu" (netnumber=128.59.13).
+ Network 2: wire="14-net.cs.columbia.edu" (netnumber=128.59.14).
+ Network 3: wire="old-net.cs.columbia.edu" (netnumber=128.59.16).
+
+ The information includes the version number, number of times Amd was
+compiled on the local system, release date and name of the release.
+Following come the cpu type, byte ordering, and the architecture and
+kernel architecture as '${arch}' and '${karch}', respectively. The next
+line lists the operating system full name, short name, version, and
+vendor. These four values correspond to the variables '${full_os}',
+'${os}', '${osver}', and '${vendor}', respectively. *Note Supported
+Platforms::.
+
+ Then come a list of map types supported, filesystems internally
+supported by Amd (AMFS), and generic filesystems available (FS). Finally
+all known networks (if any) of this host are listed by name and number.
+They are available via the variables '${wire}' or '${network}', and
+'${netnumber}' (*note Selectors::) or the 'in_network' selector function
+(*note in_network Selector Function::).
+
+
+File: am-utils.info, Node: -w Option, Next: -x Option, Prev: -v Option, Up: Amd Command Line Options
+
+4.12 '-w' WAIT-TIMEOUT
+======================
+
+Selects the interval in seconds between unmount attempts after the
+initial time-to-live has expired.
+
+ This defaults to 120 seconds (two minutes).
+
+
+File: am-utils.info, Node: -x Option, Next: -y Option, Prev: -w Option, Up: Amd Command Line Options
+
+4.13 '-x' OPTS
+==============
+
+Specifies the type and verbosity of log messages. "opts" is a comma
+separated list selected from the following options:
+
+'fatal'
+ Fatal errors (cannot be turned off)
+'error'
+ Non-fatal errors (cannot be turned off)
+'user'
+ Non-fatal user errors
+'warn'
+ Recoverable errors
+'warning'
+ Alias for 'warn'
+'info'
+ Information messages
+'map'
+ Mount map usage
+'stats'
+ Additional statistics
+'all'
+ All of the above
+'defaults'
+ An alias for "fatal,error,user,warning,info".
+
+ Initially a set of default logging flags is enabled. This is as if
+'-x defaults' or '-x fatal,error,user,warning,info' 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 Amq. This default set of options is useful for general
+production use.
+
+ The '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 'info' messages then you simply need '-x
+noinfo'. The messages given by 'user' relate to errors in the mount
+maps, so these are useful when new maps are installed. The following
+table lists the syslog priorities used for each of the message types.
+
+'fatal'
+ 'LOG_CRIT'
+'error'
+ 'LOG_ERR'
+'user'
+ 'LOG_WARNING'
+'warning'
+ 'LOG_WARNING'
+'info'
+ 'LOG_INFO'
+'debug'
+ 'LOG_DEBUG'
+'map'
+ 'LOG_DEBUG'
+'stats'
+ 'LOG_INFO'
+
+ The options can be prefixed by the string 'no' to indicate that this
+option should be turned off. For example, to obtain all but 'info'
+messages the option '-x all,noinfo' would be used.
+
+ If Amd was built with debugging enabled the 'debug' option is
+automatically enabled regardless of the command line options.
+
+
+File: am-utils.info, Node: -y Option, Next: -A Option, Prev: -x Option, Up: Amd Command Line Options
+
+4.14 '-y' NIS-DOMAIN
+====================
+
+Selects an alternate NIS domain. This is useful for debugging and
+cross-domain shared mounting. If this flag is specified, Amd
+immediately attempts to bind to a server for this domain.
+
+
+File: am-utils.info, Node: -A Option, Next: -C Option, Prev: -y Option, Up: Amd Command Line Options
+
+4.15 '-A' ARCHITECTURE
+======================
+
+Specifies the OS architecture of the system. The only effect of this
+option is to set the variable '${arch}'.
+
+ This option would be used as follows:
+
+ amd -A i386 ...
+
+
+File: am-utils.info, Node: -C Option, Next: -D Option, Prev: -A Option, Up: Amd Command Line Options
+
+4.16 '-C' CLUSTER-NAME
+======================
+
+Specifies the name of the cluster of which the local machine is a
+member. The only effect is to set the variable '${cluster}'. The
+"cluster-name" is will usually obtained by running another command which
+uses a database to map the local hostname into a cluster name.
+'${cluster}' can then be used as a selector to restrict mounting of
+replicated data. If this option is not given, '${cluster}' has the same
+value as '${domain}'. This would be used as follows:
+
+ amd -C `clustername` ...
+
+
+File: am-utils.info, Node: -D Option, Next: -F Option, Prev: -C Option, Up: Amd Command Line Options
+
+4.17 '-D' OPTS
+==============
+
+Controls the verbosity and coverage of the debugging trace; "opts" is a
+comma separated list of debugging options. The '-D' option is only
+available if Amd was compiled with '-DDEBUG', or configured with
+'configure --enable-debug'. The memory debugging facilities ('mem') are
+only available if Amd was compiled with '-DDEBUG_MEM' (in addition to
+'-DDEBUG'), or configured with 'configure --enable-debug=mem'.
+
+ The most common options to use are '-D trace' and '-D test' (which
+turns on all the useful debug options). As usual, every option can be
+prefixed with 'no' to turn it off.
+
+'all'
+ all options (excluding hrtime and mtab)
+'defaults'
+ "sensible" default options (all-excluding hrtime, mtab, and
+ xdrtrace)
+'test'
+ full debug options plus mtab,nodaemon,nofork,noamq
+'amq'
+ register Amd with the RPC portmapper, for Amq
+'daemon'
+ enter daemon mode
+'fork'
+ fork child worker (hlfsd only)
+'full'
+ program trace
+'hrtime'
+ print high resolution time stamps (only if syslog(3) is not used)
+'info'
+ info service specific debugging (hesiod, nis, etc.) In the case of
+ hesiod maps, turns on the hesiod RES_DEBUG internal debugging
+ option.
+'mem'
+ trace memory allocations. Needs to be explicitly enabled at
+ compile time with -enable-debug=mem.
+'mtab'
+ use local mount-table file (defaults to '/tmp/mtab', *note
+ debug_mtab_file Parameter::)
+'readdir'
+ show readdir progress
+'str'
+ debug string munging
+'trace'
+ trace RPC protocol and NFS mount arguments
+'xdrtrace'
+ trace XDR routines
+
+ You may also refer to the program source for a more detailed
+explanation of the available options.
+
+
+File: am-utils.info, Node: -F Option, Next: -H Option, Prev: -D Option, Up: Amd Command Line Options
+
+4.18 '-F' CONF-FILE
+===================
+
+Specify an Amd configuration file CONF-FILE to use. For a description
+of the format and syntax, *note Amd Configuration File::. This
+configuration file is used to specify any options in lieu of typing many
+of them on the command line. The 'amd.conf' file includes directives
+for every command line option Amd has, and many more that are only
+available via the configuration file facility. The configuration file
+specified by this option is processed after all other options had been
+processed, regardless of the actual location of this option on the
+command line.
+
+
+File: am-utils.info, Node: -H Option, Next: -O Option, Prev: -F Option, Up: Amd Command Line Options
+
+4.19 '-H'
+=========
+
+Print a brief help and usage string.
+
+
+File: am-utils.info, Node: -O Option, Next: -S Option, Prev: -H Option, Up: Amd Command Line Options
+
+4.20 '-O' OP-SYS-NAME
+=====================
+
+Overrides the compiled-in name of the operating system, with
+OP-SYS-NAME. Useful when the built-in name is not desired for backward
+compatibility reasons. For example, if the build in name is 'sunos5',
+you can override it to the old name 'sos5', and use older maps which
+were written with the latter in mind.
+
+
+File: am-utils.info, Node: -S Option, Next: -T Option, Prev: -O Option, Up: Amd Command Line Options
+
+4.21 '-S'
+=========
+
+Do _not_ lock the running executable pages of Amd into memory. To
+improve Amd's performance, systems that support the plock(3) or
+mlockall(2) call lock the Amd process into memory. This way there is
+less chance the operating system will schedule, page out, and swap the
+Amd process as needed. This tends to improve Amd's performance, at the
+cost of reserving the memory used by the Amd process (making it
+unavailable for other processes). If this behavior is not desired, use
+the '-S' option.
+
+
+File: am-utils.info, Node: -T Option, Prev: -S Option, Up: Amd Command Line Options
+
+4.22 '-T' TAG
+=============
+
+Specify a tag to use with 'amd.conf'. All map entries tagged with TAG
+will be processed. Map entries that are not tagged are always
+processed. Map entries that are tagged with a tag other than TAG will
+not be processed.
+
+
+File: am-utils.info, Node: Filesystem Types, Next: Amd Configuration File, Prev: Amd Command Line Options, Up: Top
+
+5 Filesystem Types
+******************
+
+To mount a volume, 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 Amd, a "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 Amd.
+
+ The two common filesystem types are UFS and NFS. Four other user
+accessible filesystems ('link', 'program', 'auto' and 'direct') are also
+implemented internally by Amd and these are described below. There are
+two additional filesystem types internal to Amd which are not directly
+accessible to the user ('inherit' and 'error'). Their use is described
+since they may still have an effect visible to the user.
+
+* 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.
+* Caching Filesystem:: Caching from remote server filesystem.
+* CD-ROM Filesystem:: ISO9660 CD ROM.
+* UDF Filesystem:: Universal Disk Format filesystem.
+* Loopback Filesystem:: Local loopback-mount filesystem.
+* Memory/RAM Filesystem:: A memory or RAM-based filesystem.
+* Null Filesystem:: 4.4BSD's loopback-mount filesystem.
+* Floppy Filesystem:: MS-DOS Floppy filesystem.
+* Translucent Filesystem:: The directory merging filesystem.
+* Shared Memory+Swap Filesystem:: Sun's tmpfs filesystem.
+* User ID Mapping Filesystem:: 4.4BSD's umapfs filesystem.
+* Program Filesystem:: Generic Program mounts.
+* Symbolic Link Filesystem:: Local link.
+* Symbolic Link Filesystem II:: Local link referencing existing filesystem.
+* NFS-Link Filesystem:: Link if path exists, NFS otherwise.
+* Automount Filesystem::
+* Direct Automount Filesystem::
+* Union Filesystem::
+* Error Filesystem::
+* Top-level Filesystem::
+* Root Filesystem::
+* Inheritance Filesystem::
+
+
+File: am-utils.info, Node: Network Filesystem, Next: Network Host Filesystem, Prev: Filesystem Types, Up: Filesystem Types
+
+5.1 Network Filesystem ('nfs')
+==============================
+
+The "nfs" ('type:=nfs') filesystem type provides access to Sun's NFS.
+
+The following options must be specified:
+
+'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 ('${host}') if no other value is
+ specified.
+
+'rfs'
+ the remote filesystem. If no value is specified for this option,
+ an internal default of '${path}' is used.
+
+ NFS mounts require a two stage process. First, the "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. 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, Amd sends a request to
+the remote server to obtain it.
+
+ Historically, this documentation has maintained that Amd will try all
+the locations in parallel and use the first one which responds with a
+valid file handle. This has not been the case for quite some time,
+however. Instead, Amd will go through each location, one by one, and
+will only skip to the next one if the previous one either fails or times
+out.
+
+An NFS entry might be:
+
+ jsp host!=charm;type:=nfs;rhost:=charm;rfs:=/home/charm;sublink:=jsp
+
+ The mount system call and any unmount attempts are always done in a
+new task to avoid the possibility of blocking Amd.
+
+
+File: am-utils.info, Node: Network Host Filesystem, Next: Network Filesystem Group, Prev: Network Filesystem, Up: Filesystem Types
+
+5.2 Network Host Filesystem ('host')
+====================================
+
+The "host" ('type:=host') filesystem allows access to the entire export
+tree of an NFS server. The implementation is layered above the 'nfs'
+implementation so keep-alives work in the same way. The only option
+which needs to be specified is 'rhost' which is the name of the
+fileserver to mount.
+
+ The 'host' filesystem type works by querying the mount daemon on the
+given fileserver to obtain its export list. 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 Amd attempts to automatically create the mount point, it may be
+on a remote filesystem to which Amd does not have write permission.
+
+ When an attempt to unmount a 'host' filesystem mount fails, Amd
+remounts any filesystems which had successfully been unmounted. To do
+this Amd queries the mount daemon again and obtains a fresh copy of the
+export list. Amd then tries to mount any exported filesystems which are
+not currently mounted.
+
+ Sun's automounter provides a special '-hosts' map. To achieve the
+same effect with Amd requires two steps. First a mount map must be
+created as follows:
+
+ * type:=host;rhost:=${key};fs:=${autodir}/${rhost}/root
+
+and then start Amd with the following command
+
+ amd /net net.map
+
+where 'net.map' is the name of map described above. Note that the value
+of '${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
+
+ host2 opts:=ro,nosuid,soft
+
+would soft mount 'host2' read-only.
+
+
+File: am-utils.info, Node: Network Filesystem Group, Next: Unix Filesystem, Prev: Network Host Filesystem, Up: Filesystem Types
+
+5.3 Network Filesystem Group ('nfsx')
+=====================================
+
+The "nfsx" ('type:=nfsx') filesystem allows a group of filesystems to be
+mounted from a single NFS server. The implementation is layered above
+the 'nfs' implementation so keep-alives work in the same way.
+
+ _WARNING_: 'nfsx' is meant to be a "last resort" kind of solution.
+It is racy and poorly supported. The authors _highly_ recommend that
+other solutions be considered before relying on it.
+
+ The options are the same as for the 'nfs' filesystem with one
+difference for 'rfs', as explained below.
+
+The following options should be specified:
+
+'rhost'
+ the remote fileserver. The default value is taken from the local
+ host name ('${host}') if no other value is specified.
+
+'rfs'
+ is a list of filesystems to mount, and must be specified. The list
+ is in the form of a comma separated strings.
+
+For example:
+
+ pub type:=nfsx;rhost:=gould;\
+ rfs:=/public,/,graphics,usenet;fs:=${autodir}/${rhost}/root
+
+ 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 _not_ used as a filesystem name. A
+serial operation is used to determine the local mount points to ensure a
+consistent layout of a tree of mounts.
+
+ Here, the _three_ filesystems, '/public', '/public/graphics' and
+'/public/usenet', would be mounted.
+
+ A local mount point, '${fs}', _must_ be specified. The default local
+mount point will not work correctly in the general case. A suggestion
+is to use 'fs:=${autodir}/${rhost}/root'.
+
+
+File: am-utils.info, Node: Unix Filesystem, Next: Caching Filesystem, Prev: Network Filesystem Group, Up: Filesystem Types
+
+5.4 Unix Filesystem ('ufs', 'xfs', or 'efs')
+============================================
+
+The "ufs" ('type:=ufs') filesystem type provides access to the system's
+standard disk filesystem--usually a derivative of the Berkeley Fast
+Filesystem.
+
+The following option must be specified:
+
+'dev'
+ the block special device to be mounted.
+
+ A UFS entry might be:
+
+ jsp host==charm;type:=ufs;dev:=/dev/sd0d;sublink:=jsp
+
+ UFS is the default Unix disk-based file system, which Am-utils picks
+up during the autoconfiguration phase. Some systems have more than one
+type, such as IRIX, that comes with EFS (Extent File System) and XFS
+(Extended File System). In those cases, you may explicitly set the file
+system type, by using entries such:
+
+ ez1 type:=efs;dev:=/dev/xd0a
+ ez2 type:=xfs;dev:=/dev/sd3c
+
+ The UFS/XFS/EFS filesystems are never timed out by default, i.e.
+they will never be unmounted by Amd. If automatic unmounting is
+desired, the "unmount" option should be added to the mount options for
+the entry.
+
+
+File: am-utils.info, Node: Caching Filesystem, Next: CD-ROM Filesystem, Prev: Unix Filesystem, Up: Filesystem Types
+
+5.5 Caching Filesystem ('cachefs')
+==================================
+
+The "cachefs" ('type:=cachefs') filesystem caches files from one
+location onto another, presumably providing faster access. It is
+particularly useful to cache from a larger and remote (slower) NFS
+partition to a smaller and local (faster) UFS directory.
+
+The following options must be specified:
+
+'cachedir'
+ the directory where the cache is stored.
+'rfs'
+ the path name to the "back file system" to be cached from.
+'fs'
+ the "front file system" mount point to the cached files, where Amd
+ will set a symbolic link pointing to.
+
+ A CacheFS entry for, say, the '/import' Amd mount point, might be:
+
+ copt type:=cachefs;cachedir:=/cache;rfs:=/import/opt;fs:=/n/import/copt
+
+ Access to the pathname '/import/copt' will follow a symbolic link to
+'/n/import/copt'. The latter is the mount point for a caching file
+system, that caches from '/import/opt' to '/cache'.
+
+ The cachefs filesystem is never timed out by default, i.e. it will
+never be unmounted by Amd. If automatic unmounting is desired, the
+"unmount" option should be added to the mount options for the entry.
+
+ Caveats:
+ 1. This file system is currently only implemented for Solaris 2.x!
+ 2. Before being used for the first time, the cache directory must be
+ initialized with 'cfsadmin -c CACHEDIR'. See the manual page for
+ cfsadmin(1M) for more information.
+ 3. The "back file system" mounted must be a complete file system, not
+ a subdirectory thereof; otherwise you will get an error "Invalid
+ Argument".
+ 4. If Amd aborts abnormally, the state of the cache may be
+ inconsistent, requiring running the command 'fsck -F cachefs
+ CACHEDIR'. Otherwise you will get the error "No Space Left on
+ Device".
+
+
+File: am-utils.info, Node: CD-ROM Filesystem, Next: UDF Filesystem, Prev: Caching Filesystem, Up: Filesystem Types
+
+5.6 CD-ROM Filesystem ('cdfs')
+==============================
+
+The "cdfs" ('type:=cdfs') filesystem mounts a CD-ROM with an ISO9660
+format filesystem on it.
+
+The following option must be specified:
+
+'dev'
+ the block special device to be mounted.
+
+ Some operating systems will fail to mount read-only CDs unless the
+'ro' option is specified. A cdfs entry might be:
+
+ cdfs os==sunos4;type:=cdfs;dev:=/dev/sr0 \
+ os==sunos5;addopts:=ro;type:=cdfs;dev:=/dev/dsk/c0t6d0s2
+
+
+File: am-utils.info, Node: UDF Filesystem, Next: Loopback Filesystem, Prev: CD-ROM Filesystem, Up: Filesystem Types
+
+5.7 CD-ROM Filesystem ('udf')
+=============================
+
+The "udf" ('type:=udf') filesystem mounts media with a Universal Disk
+Format (UDF) filesystem on it, e.g., a video DVD.
+
+The following option must be specified:
+
+'dev'
+ the block special device to be mounted.
+
+ Some operating systems will fail to mount read-only media unless the
+'ro' option is specified. A udf entry might be:
+
+ udf os==sunos4;type:=udf;dev:=/dev/sr0 \
+ os==sunos5;addopts:=ro;type:=udf;dev:=/dev/dsk/c0t6d0s2
+
+
+File: am-utils.info, Node: Loopback Filesystem, Next: Memory/RAM Filesystem, Prev: UDF Filesystem, Up: Filesystem Types
+
+5.8 Loopback Filesystem ('lofs')
+================================
+
+The "lofs" ('type:=lofs') filesystem is also called the loopback
+filesystem. It mounts a local directory on another, thus providing
+mount-time binding to another location (unlike symbolic links).
+
+ The loopback filesystem is particularly useful within the context of
+a chroot-ed directory (via chroot(2)), to provide access to directories
+otherwise inaccessible.
+
+The following option must be specified:
+
+'rfs'
+ the pathname to be mounted on top of '${fs}'.
+
+ Usually, the FTP server runs in a chroot-ed environment, for security
+reasons. In this example, lofs is used to provide a subdirectory within
+a user's home directory, also available for public ftp.
+
+ lofs type:=lofs;rfs:=/home/ezk/myftpdir;fs:=/usr/ftp/pub/ezk
+
+
+File: am-utils.info, Node: Memory/RAM Filesystem, Next: Null Filesystem, Prev: Loopback Filesystem, Up: Filesystem Types
+
+5.9 Memory/RAM Filesystem ('mfs')
+=================================
+
+The "mfs" ('type:=mfs') filesystem is available in 4.4BSD, Linux, and
+other systems. It creates a filesystem in a portion of the system's
+memory, thus providing very fast file (volatile) access.
+
+ XXX: THIS FILESYSTEM IS NOT IMPLEMENTED YET!
+
+
+File: am-utils.info, Node: Null Filesystem, Next: Floppy Filesystem, Prev: Memory/RAM Filesystem, Up: Filesystem Types
+
+5.10 Null Filesystem ('nullfs')
+===============================
+
+The "nullfs" ('type:=nullfs') filesystem is available from 4.4BSD, and
+is very similar to the loopback filesystem, "lofs".
+
+ XXX: THIS FILESYSTEM IS NOT IMPLEMENTED YET!
+
+
+File: am-utils.info, Node: Floppy Filesystem, Next: Translucent Filesystem, Prev: Null Filesystem, Up: Filesystem Types
+
+5.11 Floppy Filesystem ('pcfs')
+===============================
+
+The "pcfs" ('type:=pcfs') filesystem mounts a floppy previously
+formatted for the MS-DOS format.
+
+The following option must be specified:
+
+'dev'
+ the block special device to be mounted.
+
+ A pcfs entry might be:
+
+ pcfs os==sunos4;type:=pcfs;dev:=/dev/fd0 \
+ os==sunos5;type:=pcfs;dev:=/dev/diskette
+
+
+File: am-utils.info, Node: Translucent Filesystem, Next: Shared Memory+Swap Filesystem, Prev: Floppy Filesystem, Up: Filesystem Types
+
+5.12 Translucent Filesystem ('tfs')
+===================================
+
+The "tfs" ('type:=tfs') filesystem is an older version of the 4.4BSD
+"unionfs".
+
+ XXX: THIS FILESYSTEM IS NOT IMPLEMENTED YET!
+
+
+File: am-utils.info, Node: Shared Memory+Swap Filesystem, Next: User ID Mapping Filesystem, Prev: Translucent Filesystem, Up: Filesystem Types
+
+5.13 Shared Memory+Swap Filesystem ('tmpfs')
+============================================
+
+The "tmpfs" ('type:=tmpfs') filesystem shares memory between a the swap
+device and the rest of the system. It is generally used to provide a
+fast access '/tmp' directory, one that uses memory that is otherwise
+unused. This filesystem is available in SunOS 4.x and 5.x.
+
+ XXX: THIS FILESYSTEM IS NOT IMPLEMENTED YET!
+
+
+File: am-utils.info, Node: User ID Mapping Filesystem, Next: Program Filesystem, Prev: Shared Memory+Swap Filesystem, Up: Filesystem Types
+
+5.14 User ID Mapping Filesystem ('umapfs')
+==========================================
+
+The "umapfs" ('type:=umapfs') filesystem maps User IDs of file
+ownership, and is available from 4.4BSD.
+
+ XXX: THIS FILESYSTEM IS NOT IMPLEMENTED YET!
+
+
+File: am-utils.info, Node: Program Filesystem, Next: Symbolic Link Filesystem, Prev: User ID Mapping Filesystem, Up: Filesystem Types
+
+5.15 Program Filesystem ('program')
+===================================
+
+The "program" ('type:=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 'rvdmount' and
+'rvdunmount'.
+
+Both of the following options must be specified:
+
+'mount'
+ the program which will perform the mount.
+
+'unmount'
+'umount'
+ the program which will perform the unmount. For convenience, you
+ may use either 'unmount' or 'umount' but not both. If neither is
+ defined, Amd will default to 'umount ${fs}' (the actual unmount
+ program pathname will be automatically determined at the time GNU
+ 'configure' runs.)
+
+ 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, Amd splits the string on whitespace to create an array of
+substrings. Single quotes ''' can be used to quote whitespace if that
+is required in an argument. There is no way to escape or change the
+single quote character.
+
+ To run e.g. the program 'rvdmount' with a host name and filesystem
+as arguments, it would be specified by
+'fs:=${autodir}${path};type:=program;mount:="/etc/rvdmount rvdmount
+fserver ${fs}";unmount:="/etc/rdvumount rvdumount ${fs}"'.
+
+ 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, "including argument zero". The
+array is exactly the same as the array passed to the execv() system call
+(man execv for details). The split string must have at least two
+elements. The programs are directly executed by Amd, not via a shell.
+Therefore, if a script is to be used as a mount/umount program, it
+"must" begin with a '#!' interpreter specification.
+
+ Often, this program mount type is used for Samba mounts, where you
+need a double slash in pathnames. However, Amd normalizes sequences of
+slashes into one slash. Therefore, you must use an escaped slash,
+preceded by an escaped backslash. So to get a double slash in the mount
+command, you need the eight character sequence '\\\/\\\/' in your map.
+For example:
+
+ 'mount="/sbin/mount mount -r -t smbfs -o-N,-Ihostname
+\\\/\\\/guest@venus/mp3"'
+
+ If a filesystem type is to be heavily used, it may be worthwhile
+adding a new filesystem type into 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 Amd. Standard output is a
+duplicate of standard error. The value specified with the '-l' command
+line option has no effect on standard error.
+
+ Amd guarantees that the mountpoint will be created before calling the
+mount program, and that it will be removed after the umount program
+returns success.
+
+
+File: am-utils.info, Node: Symbolic Link Filesystem, Next: Symbolic Link Filesystem II, Prev: Program Filesystem, Up: Filesystem Types
+
+5.16 Symbolic Link Filesystem ('link')
+======================================
+
+Each filesystem type creates a symbolic link to point from the volume
+name to the physical mount point. The 'link' filesystem does the same
+without any other side effects. This allows any part of the machines
+name space to be accessed via Amd.
+
+ One common use for the symlink filesystem is '/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.
+
+The following option must be defined:
+
+'fs'
+ The value of FS option specifies the destination of the link, as
+ modified by the SUBLINK option. If SUBLINK is non-null, it is
+ appended to '${fs}''/' and the resulting string is used as the
+ target.
+
+ The 'link' filesystem can be thought of as identical to the 'ufs'
+filesystem but without actually mounting anything.
+
+ An example entry might be:
+
+ jsp host==charm;type:=link;fs:=/home/charm;sublink:=jsp
+ which would return a symbolic link pointing to '/home/charm/jsp'.
+
+
+File: am-utils.info, Node: Symbolic Link Filesystem II, Next: NFS-Link Filesystem, Prev: Symbolic Link Filesystem, Up: Filesystem Types
+
+5.17 Symbolic Link Filesystem II ('linkx')
+==========================================
+
+The "linkx" ('type:=linkx') filesystem type is identical to 'link' with
+the exception that the target of the link must exist. Existence is
+checked with the lstat(2) system call.
+
+ The 'linkx' filesystem type is particularly useful for wildcard map
+entries. In this case, a list of possible targets can be given and Amd
+will choose the first one which exists on the local machine.
+
+
+File: am-utils.info, Node: NFS-Link Filesystem, Next: Automount Filesystem, Prev: Symbolic Link Filesystem II, Up: Filesystem Types
+
+5.18 NFS-Link Filesystem ('nfsl')
+=================================
+
+The "nfsl" ('type:=nfsl') filesystem type is a combination of two
+others: 'link' and 'nfs'. If the local host name is equal to the value
+of '${rhost}' _and_ the target pathname listed in '${fs}' exists, 'nfsl'
+will behave exactly as 'type:=link', and refer to the target as a
+symbolic link. If the local host name is not equal to the value of
+'${rhost}', or if the target of the link does not exist, Amd will treat
+it as 'type:=nfs', and will mount a remote pathname for it.
+
+ The 'nfsl' filesystem type is particularly useful as a shorthand for
+the more cumbersome and yet one of the most popular Amd entries. For
+example, you can simplify all map entries that look like:
+
+ zing -fs:=/n/shekel/u/zing \
+ host!=shekel;type:=nfs;rhost:=shekel;rfs:=${fs} \
+ host==shekel;type:=link
+
+ or
+
+ zing -fs:=/n/shekel/u/zing \
+ exists(${fs});type:=link \
+ !exists(${fs});type:=nfs;rhost:=shekel;rfs:=${fs}
+
+ into a shorter form
+
+ zing type:=nfsl;fs:=/n/shekel/u/zing;rhost:=shekel;rfs:=${fs}
+
+ Not just does it make the maps smaller and simpler, but it avoids
+possible mistakes that often happen when forgetting to set up the two
+entries (one for 'type:=nfs' and the other for 'type:=link') necessary
+to perform transparent mounts of existing or remote mounts.
+
+
+File: am-utils.info, Node: Automount Filesystem, Next: Direct Automount Filesystem, Prev: NFS-Link Filesystem, Up: Filesystem Types
+
+5.19 Automount Filesystem ('auto')
+==================================
+
+The "auto" ('type:=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:
+
+'cache'
+ specifies whether the data in this mount-map should be cached. The
+ default value is '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 'all', the entire map is enumerated
+ when the mount point is created.
+
+ If the cache option specifies 'inc', caching is done incrementally
+ as and when data is required. Some map types do not support cache
+ mode 'all', in which case 'inc' is used whenever 'all' is
+ requested.
+
+ Caching can be entirely disabled by using cache mode 'none'.
+
+ If the cache option specifies '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 'inc', which
+ can be selected by specifying 'mapdefault'.
+
+ The cache mode for a mount map can only be selected on the command
+ line. Starting Amd with the command:
+
+ amd /homes hesiod.homes -cache:=inc
+
+ will cause '/homes' to be automounted using the "Hesiod" name
+ server with local incremental caching of all successfully resolved
+ names.
+
+ All cached data is forgotten whenever Amd receives a 'SIGHUP'
+ signal and, if cache 'all' mode was selected, the cache will be
+ reloaded. This can be used to inform Amd that a map has been
+ updated. In addition, whenever a cache lookup fails and 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
+ 'SIGHUP' had been received.
+
+ An additional option ('sync') may be specified to force Amd to
+ check the map's modify time whenever a cached entry is being used.
+ For example, an incremental, synchronized cache would be created by
+ the following command:
+
+ amd /homes hesiod.homes -cache:=inc,sync
+
+'fs'
+ specifies the name of the mount map to use for the new mount point.
+
+ Arguably this should have been specified with the '${rfs}' option
+ but we are now stuck with it due to historical accident.
+
+'pref'
+ alters the name that is looked up in the mount map. If '${pref}',
+ the "prefix", is non-null then it is prepended to the name
+ requested by the kernel "before" the map is searched. The default
+ prefix is the prefix of the parent map (if any) with name of the
+ auto node appended to it. That means if you want no prefix you
+ must say so in the map: 'pref:=null'.
+
+'opts'
+ Normally, 'auto' style maps are not browsable even if you turn on
+ directory browsability (*note browsable_dirs Parameter::). To
+ enable browsing entries in 'auto' maps, specify 'opts:=browsable'
+ or 'opts:=fullybrowsable' in the description of this map.
+
+ The server 'dylan.doc.ic.ac.uk' has two user disks: '/dev/dsk/2s0'
+and '/dev/dsk/5s0'. These are accessed as '/home/dylan/dk2' and
+'/home/dylan/dk5' respectively. Since '/home' is already an automount
+point, this naming is achieved with the following map entries:
+
+ dylan type:=auto;fs:=${map};pref:=${key}/
+ dylan/dk2 type:=ufs;dev:=/dev/dsk/2s0
+ dylan/dk5 type:=ufs;dev:=/dev/dsk/5s0
+
+
+File: am-utils.info, Node: Direct Automount Filesystem, Next: Union Filesystem, Prev: Automount Filesystem, Up: Filesystem Types
+
+5.20 Direct Automount Filesystem ('direct')
+===========================================
+
+The "direct" ('type:=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. *Note Automount
+Filesystem::, for a list of required options.
+
+ Direct automount points are created by specifying the 'direct'
+filesystem type on the command line:
+
+ amd ... /usr/man auto.direct -type:=direct
+
+ where 'auto.direct' would contain an entry such as:
+
+ usr/man -type:=nfs;rfs:=/usr/man \
+ rhost:=man-server1 rhost:=man-server2
+
+ In this example, 'man-server1' and '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 '/'.
+
+ Note that the implementation of the traditional "direct" filesystem
+is essentially a hack (pretending that the root of an NFS filesystem is
+a symlink) and many modern operating systems get very unhappy about it.
+For example, Linux kernel 2.4+ completely disallows it, and Solaris 2.8
+fails to unmount it when Amd shuts down. Therefore, the use of the
+traditional "direct" filesystem is strongly discouraged; it is only
+semi-supported, at best.
+
+ The autofs implementations that permit direct mounts are fully
+supported, however. That currently includes all versions of Solaris.
+Linux autofs does NOT support direct mounts at all.
+
+
+File: am-utils.info, Node: Union Filesystem, Next: Error Filesystem, Prev: Direct Automount Filesystem, Up: Filesystem Types
+
+5.21 Union Filesystem ('union')
+===============================
+
+The "union" ('type:=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 '/tmp' and '/var/tmp' were to be merged into a
+new directory called '/mtmp', with files in '/var/tmp' taking
+precedence. The following command could be used to achieve this effect:
+
+ amd ... /mtmp union:/tmp:/var/tmp -type:=union
+
+ Currently, the unioned directories must _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 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 Amd
+is started, and are not kept up-to-date with respect to the underlying
+directories. Similarly, if a link is removed, for example with the 'rm'
+command, it will be lost forever.
+
+
+File: am-utils.info, Node: Error Filesystem, Next: Top-level Filesystem, Prev: Union Filesystem, Up: Filesystem Types
+
+5.22 Error Filesystem ('error')
+===============================
+
+The "error" ('type:=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.
+
+
+File: am-utils.info, Node: Top-level Filesystem, Next: Root Filesystem, Prev: Error Filesystem, Up: Filesystem Types
+
+5.23 Top-level Filesystem ('toplvl')
+====================================
+
+The "toplvl" ('type:=toplvl') filesystems is derived from the 'auto'
+filesystem and is used to mount the top-level automount nodes. Requests
+of this type are automatically generated from the command line
+arguments.
+
+
+File: am-utils.info, Node: Root Filesystem, Next: Inheritance Filesystem, Prev: Top-level Filesystem, Up: Filesystem Types
+
+5.24 Root Filesystem ('root')
+=============================
+
+The "root" ('type:=root') filesystem type acts as an internal
+placeholder onto which Amd can pin 'toplvl' mounts. Only one node of
+this type need ever exist and one is created automatically during
+startup. The effect of having more than one root node is undefined.
+
+ The root filesystem is not directly accessible.
+
+
+File: am-utils.info, Node: Inheritance Filesystem, Prev: Root Filesystem, Up: Filesystem Types
+
+5.25 Inheritance Filesystem ('inherit')
+=======================================
+
+The "inheritance" ('type:=inherit') filesystem is not directly
+accessible. Instead, internal mount nodes of this type are
+automatically generated when 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 Amd then instead of attempting to mount it, Amd simulates
+the mount and "inherits" the filesystem. This allows a new version of
+Amd to be installed on a live system simply by killing the old daemon
+with 'SIGTERM' and starting the new one.
+
+ This filesystem type is not generally visible externally, but it is
+possible that the output from 'amq -m' may list 'inherit' as the
+filesystem type. This happens when an inherit operation cannot be
+completed for some reason, usually because a fileserver is down.
+
+
+File: am-utils.info, Node: Amd Configuration File, Next: Run-time Administration, Prev: Filesystem Types, Up: Top
+
+6 Amd Configuration File
+************************
+
+The 'amd.conf' file is the configuration file for Amd, as part of the
+am-utils suite. This file contains runtime configuration information
+for the Amd automounter program.
+
+* Menu:
+
+* File Format::
+* The Global Section::
+* Regular Map Sections::
+* Common Parameters::
+* Global Parameters::
+* Regular Map Parameters::
+* amd.conf Examples::
+
+
+File: am-utils.info, Node: File Format, Next: The Global Section, Prev: Amd Configuration File, Up: Amd Configuration File
+
+6.1 File Format
+===============
+
+The 'amd.conf' file consists of sections and parameters. A section
+begins with the name of the section in square brackets '[]' and
+continues until the next section begins or the end of the file is
+reached. Sections contain parameters of the form 'name = value'.
+
+ The file is line-based -- that is, each newline-terminated line
+represents either a comment, a section name or a parameter. No
+line-continuation syntax is available.
+
+ Section names, parameter names and their values are case sensitive.
+
+ Only the first equals sign in a parameter is significant. Whitespace
+before or after the first equals sign is discarded. Leading, trailing
+and internal whitespace in section and parameter names is irrelevant.
+Leading and trailing whitespace in a parameter value is discarded.
+Internal whitespace within a parameter value is not allowed, unless the
+whole parameter value is quoted with double quotes as in 'name = "some
+value"'.
+
+ Any line beginning with a pound sign '#' is ignored, as are lines
+containing only whitespace.
+
+ The values following the equals sign in parameters are all either a
+string (no quotes needed if string does not include spaces) or a
+boolean, which may be given as 'yes'/'no'. Case is significant in all
+values. Some items such as cache timeouts are numeric.
+
+
+File: am-utils.info, Node: The Global Section, Next: Regular Map Sections, Prev: File Format, Up: Amd Configuration File
+
+6.2 The Global Section
+======================
+
+The global section must be specified as '[global]'. Parameters in this
+section either apply to Amd as a whole, or to all other regular map
+sections which follow. There should be only one global section defined
+in one configuration file.
+
+ It is highly recommended that this section be specified first in the
+configuration file. If it is not, then regular map sections which
+precede it will not use global values defined later.
+
+
+File: am-utils.info, Node: Regular Map Sections, Next: Common Parameters, Prev: The Global Section, Up: Amd Configuration File
+
+6.3 Regular Map Sections
+========================
+
+Parameters in regular (non-global) sections apply to a single map entry.
+For example, if the map section '[/homes]' is defined, then all
+parameters following it will be applied to the '/homes' Amd-managed
+mount point.
+
+
+File: am-utils.info, Node: Common Parameters, Next: Global Parameters, Prev: Regular Map Sections, Up: Amd Configuration File
+
+6.4 Common Parameters
+=====================
+
+These parameters can be specified either in the global or a map-specific
+section. Entries specified in a map-specific section override the
+default value or one defined in the global section. If such a common
+parameter is specified only in the global section, it is applicable to
+all regular map sections that follow.
+
+* Menu:
+
+* autofs_use_lofs Parameter::
+* browsable_dirs Parameter::
+* map_defaults Parameter::
+* map_options Parameter::
+* map_type Parameter::
+* mount_type Parameter::
+* search_path Parameter::
+* selectors_in_defaults Parameter::
+* sun_map_syntax Parameter::
+
+
+File: am-utils.info, Node: autofs_use_lofs Parameter, Next: browsable_dirs Parameter, Prev: Common Parameters, Up: Common Parameters
+
+6.4.1 autofs_use_lofs Parameter
+-------------------------------
+
+(type=string, default='yes'). When set to 'yes', Amd's autofs code will
+use lofs-type (loopback) mounts for 'type:=link' mounts, as well as
+several other cases that require local references. This has the
+advantage that Amd does not use a secondary mount point and users do not
+see external pathnames (the infamous '/bin/pwd' problem, where it
+reports a different path than the user chdir'ed into). One of the
+disadvantages of using this option is that the autofs code is relatively
+new and the in-place mounts have not been throughly tested.
+
+ If this option is set to 'no', then Amd's autofs code will use
+symlinks instead of lofs-type mounts for local references. This has the
+advantage of using simpler (more stable) code, but at the expense of
+negating one of autofs's big advantages: the hiding of Amd's internal
+paths. Note that symlinks are not supported in all autofs
+implementations, especially those derived from Solaris Autofs v1. Also,
+on Solaris 2.6 and newer, autofs symlinks are not cached, resulting in
+repeated up-call requests to Amd.
+
+
+File: am-utils.info, Node: browsable_dirs Parameter, Next: map_defaults Parameter, Prev: autofs_use_lofs Parameter, Up: Common Parameters
+
+6.4.2 browsable_dirs Parameter
+------------------------------
+
+(type=string, default='no'). If 'yes', then Amd's top-level mount
+points will be browsable to readdir(3) calls. This means you could run
+for example ls(1) and see what keys are available to mount in that
+directory. Not all entries are made visible to readdir(3): the
+'/defaults' entry, wildcard entries, and those with a '/' in them are
+not included. If you specify 'full' to this option, all but the
+'/defaults' entry will be visible. Note that if you run a command which
+will attempt to stat(2) the entries, such as often done by 'ls -l' or
+'ls -F', Amd will attempt to mount every entry in that map. This is
+often called a "mount storm".
+
+ Note that mount storms are mostly avoided by using autofs mounts
+('mount_type = autofs').
+
+
+File: am-utils.info, Node: map_defaults Parameter, Next: map_options Parameter, Prev: browsable_dirs Parameter, Up: Common Parameters
+
+6.4.3 map_defaults Parameter
+----------------------------
+
+(type=string, default to empty). This option sets a string to be used
+as the map's '/defaults' entry, overriding any '/defaults' specified in
+the map. This allows local users to override a given map's defaults
+without modifying maps globally (which is impossible in sites where the
+maps are managed by a different administrative group).
+
+
+File: am-utils.info, Node: map_options Parameter, Next: map_type Parameter, Prev: map_defaults Parameter, Up: Common Parameters
+
+6.4.4 map_options Parameter
+---------------------------
+
+(type=string, default no options). This option is the same as
+specifying map options on the command line to Amd, such as 'cache:=all'.
+
+
+File: am-utils.info, Node: map_type Parameter, Next: mount_type Parameter, Prev: map_options Parameter, Up: Common Parameters
+
+6.4.5 map_type Parameter
+------------------------
+
+(type=string, default search all map types). If specified, Amd will
+initialize the map only for the type given. This is useful to avoid the
+default map search type used by Amd which takes longer and can have
+undesired side-effects such as initializing NIS even if not used.
+Possible values are
+
+'file'
+ plain files
+'hesiod'
+ Hesiod name service from MIT
+'ldap'
+ Lightweight Directory Access Protocol
+'ndbm'
+ (New) dbm style hash files
+'nis'
+ Network Information Services (version 2)
+'nisplus'
+ Network Information Services Plus (version 3)
+'passwd'
+ local password files
+'union'
+ union maps
+
+
+File: am-utils.info, Node: mount_type Parameter, Next: search_path Parameter, Prev: map_type Parameter, Up: Common Parameters
+
+6.4.6 mount_type Parameter
+--------------------------
+
+(type=string, default='nfs'). All Amd mount types default to NFS. That
+is, Amd is an NFS server on the map mount points, for the local host it
+is running on. If 'autofs' is specified, Amd will be an autofs server
+for those mount points.
+
+
+File: am-utils.info, Node: search_path Parameter, Next: selectors_in_defaults Parameter, Prev: mount_type Parameter, Up: Common Parameters
+
+6.4.7 search_path Parameter
+---------------------------
+
+(type=string, default no search path). This provides a
+(colon-delimited) search path for file maps. Using a search path, sites
+can allow for local map customizations and overrides, and can
+distributed maps in several locations as needed.
+
+
+File: am-utils.info, Node: selectors_in_defaults Parameter, Next: sun_map_syntax Parameter, Prev: search_path Parameter, Up: Common Parameters
+
+6.4.8 selectors_in_defaults Parameter
+-------------------------------------
+
+(type=boolean, default='no'). If 'yes', then the '/defaults' entry of
+maps will search for and process any selectors before setting defaults
+for all other keys in that map. Useful when you want to set different
+options for a complete map based on some parameters. For example, you
+may want to better the NFS performance over slow slip-based networks as
+follows:
+
+ /defaults \
+ wire==slip-net;opts:=intr,rsize=1024,wsize=1024 \
+ wire!=slip-net;opts:=intr,rsize=8192,wsize=8192
+
+ Deprecated form: selectors_on_default.
+
+
+File: am-utils.info, Node: sun_map_syntax Parameter, Prev: selectors_in_defaults Parameter, Up: Common Parameters
+
+6.4.9 sun_map_syntax Parameter
+------------------------------
+
+(type=boolean, default='no'). If 'yes', then Amd will parse the map
+according to the Sun Automount syntax.
+
+
+File: am-utils.info, Node: Global Parameters, Next: Regular Map Parameters, Prev: Common Parameters, Up: Amd Configuration File
+
+6.5 Global Parameters
+=====================
+
+The following parameters are applicable to the '[global]' section only.
+
+* Menu:
+
+* arch Parameter::
+* auto_attrcache Parameter::
+* auto_dir Parameter::
+* cache_duration Parameter::
+* cluster Parameter::
+* debug_mtab_file Parameter::
+* debug_options Parameter::
+* dismount_interval Parameter::
+* domain_strip Parameter::
+* exec_map_timeout Parameter::
+* forced_unmounts Parameter::
+* full_os Parameter::
+* fully_qualified_hosts Parameter::
+* hesiod_base Parameter::
+* karch Parameter::
+* ldap_base Parameter::
+* ldap_cache_maxmem Parameter::
+* ldap_cache_seconds Parameter::
+* ldap_hostports Parameter::
+* ldap_proto_version Parameter::
+* local_domain Parameter::
+* localhost_address Parameter::
+* log_file Parameter::
+* log_options Parameter::
+* map_reload_interval Parameter::
+* nfs_allow_any_interface Parameter::
+* nfs_allow_insecure_port Parameter::
+* nfs_proto Parameter::
+* nfs_retransmit_counter Parameter::
+* nfs_retransmit_counter_udp Parameter::
+* nfs_retransmit_counter_tcp Parameter::
+* nfs_retransmit_counter_toplvl Parameter::
+* nfs_retry_interval Parameter::
+* nfs_retry_interval_udp Parameter::
+* nfs_retry_interval_tcp Parameter::
+* nfs_retry_interval_toplvl Parameter::
+* nfs_vers Parameter::
+* nis_domain Parameter::
+* normalize_hostnames Parameter::
+* normalize_slashes Parameter::
+* os Parameter::
+* osver Parameter::
+* pid_file Parameter::
+* plock Parameter::
+* portmap_program Parameter::
+* preferred_amq_port Parameter::
+* print_pid Parameter::
+* print_version Parameter::
+* restart_mounts Parameter::
+* show_statfs_entries Parameter::
+* truncate_log Parameter::
+* unmount_on_exit Parameter::
+* use_tcpwrappers Parameter::
+* vendor Parameter::
+
+
+File: am-utils.info, Node: arch Parameter, Next: auto_attrcache Parameter, Prev: Global Parameters, Up: Global Parameters
+
+6.5.1 arch Parameter
+--------------------
+
+(type=string, default to compiled in value). Same as the '-A' option to
+Amd. Allows you to override the value of the arch Amd variable.
+
+
+File: am-utils.info, Node: auto_attrcache Parameter, Next: auto_dir Parameter, Prev: arch Parameter, Up: Global Parameters
+
+6.5.2 auto_attrcache Parameter
+------------------------------
+
+(type=numeric, default=0). Specify in seconds (or units of 0.1 seconds,
+depending on the OS), what is the (kernel-side) NFS attribute cache
+timeout for Amd's own automount points. A value of 0 is supposed to
+turn off attribute caching, meaning that Amd will be consulted via a
+kernel-RPC each time someone stat()'s the mount point (which could be
+abused as a denial-of-service attack).
+
+ _WARNING_: Amd depends on being able to turn off the NFS attribute
+cache of the client OS. If it cannot be turned off, then users may get
+ESTALE errors or symlinks that point to the wrong places. This is more
+likely under heavy use of Amd, for example if your system is
+experiencing frequent map changes or frequent mounts/unmounts.
+Therefore, under normal circumstances, this parameter should remain set
+to 0, to ensure that the attribute cache is indeed off.
+
+ Unfortunately, some kernels (e.g., certain BSDs) don't have a way to
+turn off the NFS attribute cache. Setting this parameter to 0 is
+supposed to turn off attribute caching entirely, but unfortunately it
+does not; instead, the attribute cache is set to some internal
+hard-coded default (usually anywhere from 5-30 seconds). If you suspect
+that your OS doesn't have a reliable way of turning off the attribute
+cache, then it is better to set this parameter to the smallest possible
+non-zero value (set 'auto_attrcache=1' in your 'amd.conf'). This will
+not eliminate the problem, but reduce the risk window somewhat. The
+best solutions are (1) to use Amd in Autofs mode, if it's supported in
+your OS, and (2) talk to your OS vendor to support a true 'noac' flag.
+See the README.attrcache
+(http://www.am-utils.org/docs/am-utils/attrcache.txt) document for more
+details.
+
+ If you are able to turn off the attribute cache on your OS, alas,
+Amd's performance may degrade (when not using Autofs) because every
+traversal of an automounter-controlled pathname will result in a lookup
+request from the kernel to Amd. Under heavy loads, for example when
+using recursive tools like 'find', 'rdist', or 'rsync', this performance
+degradation can be noticeable. There are two possible solutions that
+some administrators have chosen to improve performance:
+
+ 1. First, you can turn off unmounting using the 'nounmount' mount
+ option. This will ensure that no Amd symlink could ever change,
+ thereby the kernel's attribute cache and Amd will always be in
+ sync. However, this method will cause the number of mounts to keep
+ growing, even if some are no longer in use; this has the
+ disadvantage that your system could be more susceptible to hangs if
+ even one of those accumulating mounts hangs due to a downed server.
+
+ 2. Second, you can turn on attribute caching carefully by setting a
+ small automounter attribute cache value (say, one second), and a
+ relatively large dismount interval (say, one hour). (*Note
+ dismount_interval Parameter::.) For example, you can set this in
+ your 'amd.conf':
+
+ [global]
+ auto_attrcache = 1
+ dismount_interval = 3600
+
+ This has the benefit of using the kernel's attribute cache and thus
+ improving performance. The disadvantage with this option is that
+ the window of vulnerability is not eliminated entirely: it is only
+ made smaller.
+
+
+File: am-utils.info, Node: auto_dir Parameter, Next: cache_duration Parameter, Prev: auto_attrcache Parameter, Up: Global Parameters
+
+6.5.3 auto_dir Parameter
+------------------------
+
+(type=string, default='/a'). Same as the '-a' option to Amd. This sets
+the private directory where Amd will create sub-directories for its real
+mount points.
+
+
+File: am-utils.info, Node: cache_duration Parameter, Next: cluster Parameter, Prev: auto_dir Parameter, Up: Global Parameters
+
+6.5.4 cache_duration Parameter
+------------------------------
+
+(type=numeric, default=300). Same as the '-c' option to Amd. Sets the
+duration in seconds that looked-up or mounted map entries remain in the
+cache.
+
+
+File: am-utils.info, Node: cluster Parameter, Next: debug_mtab_file Parameter, Prev: cache_duration Parameter, Up: Global Parameters
+
+6.5.5 cluster Parameter
+-----------------------
+
+(type=string, default no cluster). Same as the '-C' option to Amd.
+Specifies the alternate HP-UX cluster to use.
+
+
+File: am-utils.info, Node: debug_mtab_file Parameter, Next: debug_options Parameter, Prev: cluster Parameter, Up: Global Parameters
+
+6.5.6 debug_mtab_file Parameter
+-------------------------------
+
+(type=string, default="/tmp/mtab"). Path to mtab file that is used by
+Amd to store a list of mounted file systems during debug-mtab mode.
+This option only applies to systems that store mtab information on disk.
+
+
+File: am-utils.info, Node: debug_options Parameter, Next: dismount_interval Parameter, Prev: debug_mtab_file Parameter, Up: Global Parameters
+
+6.5.7 debug_options Parameter
+-----------------------------
+
+(type=string, default no debug options). Same as the '-D' option to
+Amd. Specify any debugging options for Amd. Works only if am-utils was
+configured for debugging using the '--enable-debug' option. The
+additional 'mem' option can be turned on via '--enable-debug=mem'.
+Otherwise debugging options are ignored. Options are comma delimited,
+and can be preceded by the string 'no' to negate their meaning. You can
+get the list of supported debugging and logging options by running 'amd
+-H'. Possible values those listed for the -D option. *Note -D
+Option::.
+
+
+File: am-utils.info, Node: dismount_interval Parameter, Next: domain_strip Parameter, Prev: debug_options Parameter, Up: Global Parameters
+
+6.5.8 dismount_interval Parameter
+---------------------------------
+
+(type=numeric, default=120). Same as the '-w' option to Amd. Specify
+in seconds, the time between attempts to dismount file systems that have
+exceeded their cached times.
+
+
+File: am-utils.info, Node: domain_strip Parameter, Next: exec_map_timeout Parameter, Prev: dismount_interval Parameter, Up: Global Parameters
+
+6.5.9 domain_strip Parameter
+----------------------------
+
+(type=boolean, default='yes'). If 'yes', then the domain name part
+referred to by '${rhost}' is stripped off. This is useful to keep logs
+and smaller. If 'no', then the domain name part is left changed. This
+is useful when using multiple domains with the same maps (as you may
+have hosts whose domain-stripped name is identical).
+
+
+File: am-utils.info, Node: exec_map_timeout Parameter, Next: forced_unmounts Parameter, Prev: domain_strip Parameter, Up: Global Parameters
+
+6.5.10 exec_map_timeout Parameter
+---------------------------------
+
+(type=numeric, default=10). The timeout in seconds that Amd will wait
+for an executable map program before an answer is returned from that
+program (or script). This value should be set to as small as possible
+while still allowing normal replies to be returned before the timer
+expires, because during the time that the executable map program is
+queried, Amd is essentially waiting and is thus not responding to any
+other queries. *Note Executable maps::.
+
+
+File: am-utils.info, Node: forced_unmounts Parameter, Next: full_os Parameter, Prev: exec_map_timeout Parameter, Up: Global Parameters
+
+6.5.11 forced_unmounts Parameter
+--------------------------------
+
+(type=boolean, default='no'). Sometimes, mount points are hung due to
+unrecoverable conditions, such as when NFS servers migrate, change their
+IP address, are down permanently, or due to hardware failures, and more.
+In this case, attempting to unmount an existing mount point, or even
+just to stat(2) it, results in one of three fatal errors: EIO, ESTALE,
+or EBUSY. At that point, Amd can do little to recover that hung point
+(in fact, the OS cannot automatically recover either). For that reason,
+some OSs support special kinds of forced unmounts, which must be used
+very carefully: they will force an unmount immediately (or lazily on
+Linux), which could result in application data loss. However, that may
+be the only way to recover the entire host (without rebooting). Once a
+hung mount point is forced out, Amd can then re-mount a replacement one
+(if available), bringing a mostly-hung system back to operation and
+avoiding a potentially costly reboot.
+
+ If the 'forced_unmounts' option is set to 'yes', and the client OS
+supports forced or lazy unmounts, then Amd will attempt to use them if
+it gets any of the three serious error conditions listed above. Note
+that Amd will force the unmount of mount points that returned EBUSY only
+for 'type:=toplvl' mounts (*note Top-level Filesystem::): that is, Amd's
+own mount points. This is useful to recover from a previously hung Amd,
+and to ensure that an existing Amd can shutdown cleanly even if some
+processes are keeping its mount points busy (i.e., when a user's shell
+process uses 'cd' to set its CWD to Amd's own mount point).
+
+ If this option is set to 'no' (the default), then Amd will not
+attempt this special recovery procedure.
+
+
+File: am-utils.info, Node: full_os Parameter, Next: fully_qualified_hosts Parameter, Prev: forced_unmounts Parameter, Up: Global Parameters
+
+6.5.12 full_os Parameter
+------------------------
+
+(type=string, default to compiled in value). The full name of the
+operating system, along with its version. Allows you to override the
+compiled-in full name and version of the operating system. Useful when
+the compiled-in name is not desired. For example, the full operating
+system name on linux comes up as 'linux', but you can override it to
+'linux-2.2.5'.
+
+
+File: am-utils.info, Node: fully_qualified_hosts Parameter, Next: hesiod_base Parameter, Prev: full_os Parameter, Up: Global Parameters
+
+6.5.13 fully_qualified_hosts Parameter
+--------------------------------------
+
+(type=string, default='no'). If 'yes', Amd will perform RPC
+authentication using fully-qualified host names. This is necessary for
+some systems, and especially when performing cross-domain mounting. For
+this function to work, the Amd variable '${hostd}' is used, requiring
+that '${domain}' not be null.
+
+
+File: am-utils.info, Node: hesiod_base Parameter, Next: karch Parameter, Prev: fully_qualified_hosts Parameter, Up: Global Parameters
+
+6.5.14 hesiod_base Parameter
+----------------------------
+
+(type=string, default='automount'). Specify the base name for hesiod
+maps.
+
+
+File: am-utils.info, Node: karch Parameter, Next: ldap_base Parameter, Prev: hesiod_base Parameter, Up: Global Parameters
+
+6.5.15 karch Parameter
+----------------------
+
+(type=string, default to karch of the system). Same as the '-k' option
+to Amd. Allows you to override the kernel-architecture of your system.
+Useful for example on Sun (Sparc) machines, where you can build one Amd
+binary, and run it on multiple machines, yet you want each one to get
+the correct karch variable set (for example, sun4c, sun4m, sun4u, etc.)
+Note that if not specified, Amd will use uname(2) to figure out the
+kernel architecture of the machine.
+
+
+File: am-utils.info, Node: ldap_base Parameter, Next: ldap_cache_maxmem Parameter, Prev: karch Parameter, Up: Global Parameters
+
+6.5.16 ldap_base Parameter
+--------------------------
+
+(type=string, default not set). Specify the base name for LDAP. This
+often includes LDAP-specific values such as country and organization.
+
+
+File: am-utils.info, Node: ldap_cache_maxmem Parameter, Next: ldap_cache_seconds Parameter, Prev: ldap_base Parameter, Up: Global Parameters
+
+6.5.17 ldap_cache_maxmem Parameter
+----------------------------------
+
+(type=numeric, default=131072). Specify the maximum memory Amd should
+use to cache LDAP entries.
+
+
+File: am-utils.info, Node: ldap_cache_seconds Parameter, Next: ldap_hostports Parameter, Prev: ldap_cache_maxmem Parameter, Up: Global Parameters
+
+6.5.18 ldap_cache_seconds Parameter
+-----------------------------------
+
+(type=numeric, default=0). Specify the number of seconds to keep
+entries in the cache.
+
+
+File: am-utils.info, Node: ldap_hostports Parameter, Next: ldap_proto_version Parameter, Prev: ldap_cache_seconds Parameter, Up: Global Parameters
+
+6.5.19 ldap_hostports Parameter
+-------------------------------
+
+(type=string, default not set). Specify the LDAP host and port values.
+
+
+File: am-utils.info, Node: ldap_proto_version Parameter, Next: local_domain Parameter, Prev: ldap_hostports Parameter, Up: Global Parameters
+
+6.5.20 ldap_proto_version Parameter
+-----------------------------------
+
+(type=numeric, default=2). Specify the LDAP protocol version to use.
+With a value of 3 will use LDAPv3 protocol.
+
+
+File: am-utils.info, Node: local_domain Parameter, Next: localhost_address Parameter, Prev: ldap_proto_version Parameter, Up: Global Parameters
+
+6.5.21 local_domain Parameter
+-----------------------------
+
+(type=string, default no sub-domain). Same as the '-d' option to Amd.
+Specify the local domain name. If this option is not given the domain
+name is determined from the hostname, by removing the first component of
+the fully-qualified host name.
+
+
+File: am-utils.info, Node: localhost_address Parameter, Next: log_file Parameter, Prev: local_domain Parameter, Up: Global Parameters
+
+6.5.22 localhost_address Parameter
+----------------------------------
+
+(type=string, default to localhost or 127.0.0.1). Specify the name or
+IP address for Amd to use when connecting the sockets for the local NFS
+server and the RPC server. This defaults to 127.0.0.1 or whatever the
+host reports as its local address. This parameter is useful on hosts
+with multiple addresses where you want to force Amd to connect to a
+specific address.
+
+
+File: am-utils.info, Node: log_file Parameter, Next: log_options Parameter, Prev: localhost_address Parameter, Up: Global Parameters
+
+6.5.23 log_file Parameter
+-------------------------
+
+(type=string, default='stderr'). Same as the '-l' option to Amd.
+Specify a file name to log Amd events to. If the string '/dev/stderr'
+is specified, Amd will send its events to the standard error file
+descriptor.
+
+ If the string 'syslog' is given, Amd will record its events with the
+system logger syslogd(8). If your system supports syslog facilities,
+then the default facility used is 'LOG_DAEMON'.
+
+ When using syslog, if you wish to change the facility, append its
+name to the option name, delimited by a single colon. For example, if
+it is the string 'syslog:local7' then Amd will log messages via
+syslog(3) using the 'LOG_LOCAL7' facility. If the facility name
+specified is not recognized, Amd will default to 'LOG_DAEMON'. Note:
+while you can use any syslog facility available on your system, it is
+generally a bad idea to use those reserved for other services such as
+'kern', 'lpr', 'cron', etc.
+
+
+File: am-utils.info, Node: log_options Parameter, Next: map_reload_interval Parameter, Prev: log_file Parameter, Up: Global Parameters
+
+6.5.24 log_options Parameter
+----------------------------
+
+(type=string, default="defaults"). Same as the '-x' option to Amd.
+Specify any logging options for Amd. Options are comma delimited, and
+can be preceded by the string 'no' to negate their meaning. The 'debug'
+logging option is only available if am-utils was configured with
+'--enable-debug'. You can get the list of supported debugging options
+by running 'amd -H'. Possible values are:
+
+'all'
+ all messages
+'defaults'
+ an alias for "fatal,error,user,warning,info"
+'debug'
+ debug messages
+'error'
+ non-fatal system errors (cannot be turned off)
+'fatal'
+ fatal errors (cannot be turned off)
+'info'
+ information
+'map'
+ map errors
+'stats'
+ additional statistical information
+'user'
+ non-fatal user errors
+'warn'
+ warnings
+'warning'
+ warnings
+
+
+File: am-utils.info, Node: map_reload_interval Parameter, Next: nfs_allow_any_interface Parameter, Prev: log_options Parameter, Up: Global Parameters
+
+6.5.25 map_reload_interval Parameter
+------------------------------------
+
+(type=numeric, default=3600). The number of seconds that Amd will wait
+before it checks to see if any maps have changed at their source (NIS
+servers, LDAP servers, files, etc.). Amd will reload only those maps
+that have changed.
+
+
+File: am-utils.info, Node: nfs_allow_any_interface Parameter, Next: nfs_allow_insecure_port Parameter, Prev: map_reload_interval Parameter, Up: Global Parameters
+
+6.5.26 nfs_allow_any_interface Parameter
+----------------------------------------
+
+(type=string, default='no'). Normally Amd accepts local NFS packets
+only from 127.0.0.1. If this parameter is set to 'yes', then amd will
+accept local NFS packets from any local interface; this is useful on
+hosts that may have multiple interfaces where the system is forced to
+send all outgoing packets (even those bound to the same host) via an
+address other than 127.0.0.1.
+
+
+File: am-utils.info, Node: nfs_allow_insecure_port Parameter, Next: nfs_proto Parameter, Prev: nfs_allow_any_interface Parameter, Up: Global Parameters
+
+6.5.27 nfs_allow_insecure_port Parameter
+----------------------------------------
+
+(type=string, default='no'). Normally Amd will refuse requests coming
+from unprivileged ports (i.e., ports >= 1024 on Unix systems), so that
+only privileged users and the kernel can send NFS requests to it.
+However, some kernels (certain versions of Darwin, MacOS X, and Linux)
+have bugs that cause them to use unprivileged ports in certain
+situations, which causes Amd to stop dead in its tracks. This parameter
+allows Amd to operate normally even on such systems, at the expense of a
+slight decrease in the security of its operations. If you see messages
+like "ignoring request from foo:1234, port not reserved" in your Amd
+log, try enabling this parameter and give it another go.
+
+
+File: am-utils.info, Node: nfs_proto Parameter, Next: nfs_retransmit_counter Parameter, Prev: nfs_allow_insecure_port Parameter, Up: Global Parameters
+
+6.5.28 nfs_proto Parameter
+--------------------------
+
+(type=string, default to trying version tcp then udp). By default, Amd
+tries 'tcp' and then 'udp'. This option forces the overall NFS protocol
+used to TCP or UDP. It overrides what is in the Amd maps, and is useful
+when Amd is compiled with TCP support in NFSv2/NFSv3 that may not be
+stable. With this option you can turn off the complete usage of TCP for
+NFS dynamically (without having to recompile Amd), and use UDP only,
+until such time as TCP support is desired again.
+
+
+File: am-utils.info, Node: nfs_retransmit_counter Parameter, Next: nfs_retransmit_counter_udp Parameter, Prev: nfs_proto Parameter, Up: Global Parameters
+
+6.5.29 nfs_retransmit_counter Parameter
+---------------------------------------
+
+(type=numeric, default=11). Same as the retransmit part of the '-t'
+timeout.retransmit option to Amd. Specifies the number of NFS
+retransmissions that the kernel will use to communicate with Amd using
+either UDP or TCP mounts. *Note -t Option::.
+
+
+File: am-utils.info, Node: nfs_retransmit_counter_udp Parameter, Next: nfs_retransmit_counter_tcp Parameter, Prev: nfs_retransmit_counter Parameter, Up: Global Parameters
+
+6.5.30 nfs_retransmit_counter_udp Parameter
+-------------------------------------------
+
+(type=numeric, default=11). Same as the nfs_retransmit_counter
+parameter, but applied globally only to UDP mounts. *Note
+nfs_retransmit_counter Parameter::.
+
+
+File: am-utils.info, Node: nfs_retransmit_counter_tcp Parameter, Next: nfs_retransmit_counter_toplvl Parameter, Prev: nfs_retransmit_counter_udp Parameter, Up: Global Parameters
+
+6.5.31 nfs_retransmit_counter_tcp Parameter
+-------------------------------------------
+
+(type=numeric, default=11). Same as the nfs_retransmit_counter
+parameter, but applied globally only to TCP mounts. *Note
+nfs_retransmit_counter Parameter::.
+
+
+File: am-utils.info, Node: nfs_retransmit_counter_toplvl Parameter, Next: nfs_retry_interval Parameter, Prev: nfs_retransmit_counter_tcp Parameter, Up: Global Parameters
+
+6.5.32 nfs_retransmit_counter_toplvl Parameter
+----------------------------------------------
+
+(type=numeric, default=11). Same as the nfs_retransmit_counter
+parameter, applied only for Amd's top-level UDP mounts. On some systems
+it is useful to set this differently than the OS default, so as to
+better tune Amd's responsiveness under heavy scheduler loads. *Note
+nfs_retransmit_counter Parameter::.
+
+
+File: am-utils.info, Node: nfs_retry_interval Parameter, Next: nfs_retry_interval_udp Parameter, Prev: nfs_retransmit_counter_toplvl Parameter, Up: Global Parameters
+
+6.5.33 nfs_retry_interval Parameter
+-----------------------------------
+
+(type=numeric, default=8). Same as the timeout part of the '-t'
+timeout.retransmit option to Amd. Specifies the NFS timeout interval,
+in _tenths_ of seconds, between NFS/RPC retries (for UDP or TCP). This
+is the value that the kernel will use to communicate with Amd. *Note -t
+Option::.
+
+ Amd relies on the kernel RPC retransmit mechanism to trigger mount
+retries. The values of the nfs_retransmit_counter and the
+nfs_retry_interval parameters change the overall retry interval. Too
+long an interval gives poor interactive response; too short an interval
+causes excessive retries.
+
+
+File: am-utils.info, Node: nfs_retry_interval_udp Parameter, Next: nfs_retry_interval_tcp Parameter, Prev: nfs_retry_interval Parameter, Up: Global Parameters
+
+6.5.34 nfs_retry_interval_udp Parameter
+---------------------------------------
+
+(type=numeric, default=8). Same as the nfs_retry_interval parameter,
+but applied globally only to UDP mounts. *Note nfs_retry_interval
+Parameter::.
+
+
+File: am-utils.info, Node: nfs_retry_interval_tcp Parameter, Next: nfs_retry_interval_toplvl Parameter, Prev: nfs_retry_interval_udp Parameter, Up: Global Parameters
+
+6.5.35 nfs_retry_interval_tcp Parameter
+---------------------------------------
+
+(type=numeric, default=8). Same as the nfs_retry_interval parameter,
+but applied globally only to TCP mounts. *Note nfs_retry_interval
+Parameter::.
+
+
+File: am-utils.info, Node: nfs_retry_interval_toplvl Parameter, Next: nfs_vers Parameter, Prev: nfs_retry_interval_tcp Parameter, Up: Global Parameters
+
+6.5.36 nfs_retry_interval_toplvl Parameter
+------------------------------------------
+
+(type=numeric, default=8). Same as the nfs_retry_interval parameter,
+applied only for Amd's top-level UDP mounts. On some systems it is
+useful to set this differently than the OS default, so as to better tune
+Amd's responsiveness under heavy scheduler loads. *Note
+nfs_retry_interval Parameter::.
+
+
+File: am-utils.info, Node: nfs_vers Parameter, Next: nis_domain Parameter, Prev: nfs_retry_interval_toplvl Parameter, Up: Global Parameters
+
+6.5.37 nfs_vers Parameter
+-------------------------
+
+(type=numeric, default to trying version 3 then 2). By default, Amd
+tries version 3 and then version 2. This option forces the overall NFS
+protocol used to version 3 or 2. It overrides what is in the Amd maps,
+and is useful when Amd is compiled with NFSv3 support that may not be
+stable. With this option you can turn off the complete usage of NFSv3
+dynamically (without having to recompile Amd), and use NFSv2 only, until
+such time as NFSv3 support is desired again.
+
+
+File: am-utils.info, Node: nis_domain Parameter, Next: normalize_hostnames Parameter, Prev: nfs_vers Parameter, Up: Global Parameters
+
+6.5.38 nis_domain Parameter
+---------------------------
+
+(type=string, default to local NIS domain name). Same as the '-y'
+option to Amd. Specify an alternative NIS domain from which to fetch
+the NIS maps. The default is the system domain name. This option is
+ignored if NIS support is not available.
+
+
+File: am-utils.info, Node: normalize_hostnames Parameter, Next: normalize_slashes Parameter, Prev: nis_domain Parameter, Up: Global Parameters
+
+6.5.39 normalize_hostnames Parameter
+------------------------------------
+
+(type=boolean, default='no'). Same as the '-n' option to Amd. If
+'yes', then the name referred to by '${rhost}' is normalized relative to
+the host database before being used. The effect is to translate aliases
+into "official" names.
+
+
+File: am-utils.info, Node: normalize_slashes Parameter, Next: os Parameter, Prev: normalize_hostnames Parameter, Up: Global Parameters
+
+6.5.40 normalize_slashes Parameter
+----------------------------------
+
+(type=boolean, default='yes'). If 'yes' then amd will condense all
+multiple '/' (slash) characters into one and remove all trailing
+slashes. If 'no', then amd will not touch strings that may contain
+repeated or trailing slashes. The latter is sometimes useful with SMB
+mounts, which often require multiple slash characters in pathnames.
+
+
+File: am-utils.info, Node: os Parameter, Next: osver Parameter, Prev: normalize_slashes Parameter, Up: Global Parameters
+
+6.5.41 os Parameter
+-------------------
+
+(type=string, default to compiled in value). Same as the '-O' option to
+Amd. Allows you to override the compiled-in name of the operating
+system. Useful when the built-in name is not desired for backward
+compatibility reasons. For example, if the built-in name is 'sunos5',
+you can override it to 'sos5', and use older maps which were written
+with the latter in mind.
+
+
+File: am-utils.info, Node: osver Parameter, Next: pid_file Parameter, Prev: os Parameter, Up: Global Parameters
+
+6.5.42 osver Parameter
+----------------------
+
+(type=string, default to compiled in value). Same as the '-o' option to
+Amd. Allows you to override the compiled-in version number of the
+operating system. Useful when the built-in version is not desired for
+backward compatibility reasons. For example, if the build in version is
+'2.5.1', you can override it to '5.5.1', and use older maps that were
+written with the latter in mind.
+
+
+File: am-utils.info, Node: pid_file Parameter, Next: plock Parameter, Prev: osver Parameter, Up: Global Parameters
+
+6.5.43 pid_file Parameter
+-------------------------
+
+(type=string, default='/dev/stdout'). Specify a file to store the
+process ID of the running daemon into. If not specified, Amd will print
+its process id onto the standard output. Useful for killing Amd after
+it had run. Note that the PID of a running Amd can also be retrieved
+via Amq (*note Amq -p option::).
+
+ This file is used only if the 'print_pid' option is on (*note
+print_pid Parameter::).
+
+
+File: am-utils.info, Node: plock Parameter, Next: portmap_program Parameter, Prev: pid_file Parameter, Up: Global Parameters
+
+6.5.44 plock Parameter
+----------------------
+
+(type=boolean, default='yes'). Same as the '-S' option to Amd. If
+'yes', lock the running executable pages of Amd into memory. To improve
+Amd's performance, systems that support the plock(3) or mlockall(2) call
+can lock the Amd process into memory. This way there is less chance the
+operating system will schedule, page out, and swap the Amd process as
+needed. This improves Amd's performance, at the cost of reserving the
+memory used by the Amd process (making it unavailable for other
+processes).
+
+
+File: am-utils.info, Node: portmap_program Parameter, Next: preferred_amq_port Parameter, Prev: plock Parameter, Up: Global Parameters
+
+6.5.45 portmap_program Parameter
+--------------------------------
+
+(type=numeric, default=300019). Specify an alternate Port-mapper RPC
+program number, other than the official number. This is useful when
+running multiple Amd processes. For example, you can run another Amd in
+"test" mode, without affecting the primary Amd process in any way. For
+safety reasons, the alternate program numbers that can be specified must
+be in the range 300019-300029, inclusive. Amq has an option '-P' which
+can be used to specify an alternate program number of an Amd to contact.
+In this way, amq can fully control any number of Amd processes running
+on the same host.
+
+
+File: am-utils.info, Node: preferred_amq_port Parameter, Next: print_pid Parameter, Prev: portmap_program Parameter, Up: Global Parameters
+
+6.5.46 preferred_amq_port Parameter
+-----------------------------------
+
+(type=numeric, default=0). Specify an alternate Port-mapper RPC port
+number for Amd's Amq service. This is used for both UDP and TCP.
+Setting this value to 0 (or not defining it) will cause Amd to select an
+arbitrary port number. Setting the Amq RPC service port to a specific
+number is useful in firewalled or NAT'ed environments, where you need to
+know which port Amd will listen on.
+
+
+File: am-utils.info, Node: print_pid Parameter, Next: print_version Parameter, Prev: preferred_amq_port Parameter, Up: Global Parameters
+
+6.5.47 print_pid Parameter
+--------------------------
+
+(type=boolean, default='no'). Same as the '-p' option to Amd. If
+'yes', Amd will print its process ID upon starting.
+
+
+File: am-utils.info, Node: print_version Parameter, Next: restart_mounts Parameter, Prev: print_pid Parameter, Up: Global Parameters
+
+6.5.48 print_version Parameter
+------------------------------
+
+(type=boolean, default='no'). Same as the '-v' option to Amd, but the
+version prints and Amd continues to run. If 'yes', Amd will print its
+version information string, which includes some configuration and
+compilation values.
+
+
+File: am-utils.info, Node: restart_mounts Parameter, Next: show_statfs_entries Parameter, Prev: print_version Parameter, Up: Global Parameters
+
+6.5.49 restart_mounts Parameter
+-------------------------------
+
+(type=boolean, default='no'). Same as the '-r' option to Amd. If 'yes'
+Amd will scan the mount table to determine which file systems are
+currently mounted. Whenever one of these would have been auto-mounted,
+Amd inherits it.
+
+
+File: am-utils.info, Node: show_statfs_entries Parameter, Next: truncate_log Parameter, Prev: restart_mounts Parameter, Up: Global Parameters
+
+6.5.50 show_statfs_entries Parameter
+------------------------------------
+
+(type=boolean), default='no'). If 'yes', then all maps which are
+browsable will also show the number of entries (keys) they have when
+df(1) runs. (This is accomplished by returning non-zero values to the
+statfs(2) system call).
+
+
+File: am-utils.info, Node: truncate_log Parameter, Next: unmount_on_exit Parameter, Prev: show_statfs_entries Parameter, Up: Global Parameters
+
+6.5.51 truncate_log Parameter
+-----------------------------
+
+(type=boolean), default='no'). If 'yes', then Amd will truncate the log
+file (if it's a regular file) on startup. This could be useful when
+conducting extensive testing on Amd maps (or Amd itself) and you don't
+want to see log data from a previous run in the same file.
+
+
+File: am-utils.info, Node: unmount_on_exit Parameter, Next: use_tcpwrappers Parameter, Prev: truncate_log Parameter, Up: Global Parameters
+
+6.5.52 unmount_on_exit Parameter
+--------------------------------
+
+(type=boolean, default='no'). If 'yes', then Amd will attempt to
+unmount all file systems which it knows about. Normally it leaves all
+(esp. NFS) mounted file systems intact. Note that Amd does not know
+about file systems mounted before it starts up, unless the
+'restart_mounts' option is used (*note restart_mounts Parameter::).
+
+
+File: am-utils.info, Node: use_tcpwrappers Parameter, Next: vendor Parameter, Prev: unmount_on_exit Parameter, Up: Global Parameters
+
+6.5.53 use_tcpwrappers Parameter
+--------------------------------
+
+(type=boolean), default='yes'). If 'yes', then amd will use the
+tcpwrappers (tcpd/librwap) library (if available) to control access to
+Amd via the '/etc/hosts.allow' and '/etc/hosts.deny' files. Amd will
+verify that the host running Amq is authorized to connect. The 'amd'
+service name must used in the '/etc/hosts.allow' and '/etc/hosts.deny'
+files. For example, to allow only localhost to connect to Amd, add this
+line to '/etc/hosts.allow':
+
+ amd: localhost
+
+ and this line to '/etc/hosts.deny':
+
+ amd: ALL
+
+ Consult the man pages for hosts_access(5) for more information on
+using the tcpwrappers access-control library.
+
+ Note that in particular, you should not configure your 'hosts.allow'
+file to spawn a command for Amd: that will cause Amd to not be able to
+'waitpid' on the child process ID of any background un/mount that Amd
+issued, resulting in a confused Amd that does not know what happened to
+those background un/mount requests.
+
+
+File: am-utils.info, Node: vendor Parameter, Prev: use_tcpwrappers Parameter, Up: Global Parameters
+
+6.5.54 vendor Parameter
+-----------------------
+
+(type=string, default to compiled in value). The name of the vendor of
+the operating system. Overrides the compiled-in vendor name. Useful
+when the compiled-in name is not desired. For example, most Intel based
+systems set the vendor name to 'unknown', but you can set it to
+'redhat'.
+
+
+File: am-utils.info, Node: Regular Map Parameters, Next: amd.conf Examples, Prev: Global Parameters, Up: Amd Configuration File
+
+6.6 Regular Map Parameters
+==========================
+
+The following parameters are applicable only to regular map sections.
+
+* Menu:
+
+* map_name Parameter::
+* tag Parameter::
+
+
+File: am-utils.info, Node: map_name Parameter, Next: tag Parameter, Prev: Regular Map Parameters, Up: Regular Map Parameters
+
+6.6.1 map_name Parameter
+------------------------
+
+(type=string, must be specified). Name of the map where the keys are
+located.
+
+
+File: am-utils.info, Node: tag Parameter, Prev: map_name Parameter, Up: Regular Map Parameters
+
+6.6.2 tag Parameter
+-------------------
+
+(type=string, default no tag). Each map entry in the configuration file
+can be tagged. If no tag is specified, that map section will always be
+processed by Amd. If it is specified, then Amd will process the map if
+the '-T' option was given to Amd, and the value given to that
+command-line option matches that in the map section.
+
+
+File: am-utils.info, Node: amd.conf Examples, Prev: Regular Map Parameters, Up: Amd Configuration File
+
+6.7 amd.conf Examples
+=====================
+
+The following is the actual 'amd.conf' file I used at the Computer
+Science Department of Columbia University.
+
+ # GLOBAL OPTIONS SECTION
+ [ global ]
+ normalize_hostnames = no
+ print_pid = no
+ #pid_file = /var/run/amd.pid
+ restart_mounts = yes
+ #unmount_on_exit = yes
+ auto_dir = /n
+ log_file = /var/log/amd
+ log_options = all
+ #debug_options = defaults
+ plock = no
+ selectors_in_defaults = yes
+ # config.guess picks up "sunos5" and I don't want to edit my maps yet
+ os = sos5
+ # if you print_version after setting up "os", it will show it.
+ print_version = no
+ map_type = file
+ search_path = /etc/amdmaps:/usr/lib/amd:/usr/local/AMD/lib
+ browsable_dirs = yes
+ fully_qualified_hosts = no
+
+ # DEFINE AN AMD MOUNT POINT
+ [ /u ]
+ map_name = amd.u
+
+ [ /proj ]
+ map_name = amd.proj
+
+ [ /src ]
+ map_name = amd.src
+
+ [ /misc ]
+ map_name = amd.misc
+
+ [ /import ]
+ map_name = amd.import
+
+ [ /tftpboot/.amd ]
+ tag = tftpboot
+ map_name = amd.tftpboot
+
+
+File: am-utils.info, Node: Run-time Administration, Next: FSinfo, Prev: Amd Configuration File, Up: Top
+
+7 Run-time Administration
+*************************
+
+* Menu:
+
+* Starting Amd::
+* Stopping Amd::
+* Restarting Amd::
+* Controlling Amd::
+
+
+File: am-utils.info, Node: Starting Amd, Next: Stopping Amd, Prev: Run-time Administration, Up: Run-time Administration
+
+7.1 Starting Amd
+================
+
+Amd is best started from '/etc/rc.local' on BSD systems, or from the
+appropriate start-level script in '/etc/init.d' on System V systems.
+
+ if [ -f /usr/local/sbin/ctl-amd ]; then
+ /usr/local/sbin/ctl-amd start; (echo -n ' amd') > /dev/console
+ fi
+
+The shell script, 'ctl-amd' is used to start, stop, or restart Amd. It
+is a relatively generic script. All options you want to set should not
+be made in this script, but rather updated in the 'amd.conf' file.
+*Note Amd Configuration File::.
+
+ If you do not wish to use an Amd configuration file, you may start
+Amd manually. For example, getting the map entries via NIS:
+
+ amd -r -l /var/log/amd `ypcat -k auto.master`
+
+
+File: am-utils.info, Node: Stopping Amd, Next: Restarting Amd, Prev: Starting Amd, Up: Run-time Administration
+
+7.2 Stopping Amd
+================
+
+Amd stops in response to two signals.
+
+'SIGTERM'
+ causes the top-level automount points to be unmounted and then Amd
+ to exit. Any automounted filesystems are left mounted. They can
+ be recovered by restarting Amd with the '-r' command line option.
+
+'SIGINT'
+ causes Amd to attempt to unmount any filesystems which it has
+ automounted, in addition to the actions of 'SIGTERM'. This signal
+ is primarily used for debugging.
+
+ Actions taken for other signals are undefined.
+
+ The easiest and safest way to stop Amd, without having to find its
+process ID by hand, is to use the 'ctl-amd' script, as with:
+
+ ctl-amd stop
+
+
+File: am-utils.info, Node: Restarting Amd, Next: Controlling Amd, Prev: Stopping Amd, Up: Run-time Administration
+
+7.3 Restarting Amd
+==================
+
+Before Amd can be started, it is vital to ensure that no other Amd
+processes are managing any of the mount points, and that the previous
+process(es) have terminated cleanly. When a terminating signal is set
+to Amd, the automounter does _not_ terminate right then. Rather, it
+starts by unmounting all of its managed mount mounts in the background,
+and then terminates. It usually takes a few seconds for this process to
+happen, but it can take an arbitrarily longer time. If two or more Amd
+processes attempt to manage the same mount point, it usually will result
+in a system lockup.
+
+ The easiest and safest way to restart Amd, without having to find its
+process ID by hand, sending it the 'SIGTERM' signal, waiting for Amd to
+die cleanly, and verifying so, is to use the 'ctl-amd' script, as with:
+
+ ctl-amd restart
+
+ The script will locate the process ID of Amd, kill it, and wait for
+it to die cleanly before starting a new instance of the automounter.
+'ctl-amd' will wait for a total of 30 seconds for Amd to die, and will
+check once every 5 seconds if it had.
+
+
+File: am-utils.info, Node: Controlling Amd, Prev: Restarting Amd, Up: Run-time Administration
+
+7.4 Controlling Amd
+===================
+
+It is sometimes desirable or necessary to exercise external control over
+some of Amd's internal state. To support this requirement, Amd
+implements an RPC interface which is used by the "Amq" program. A
+variety of information is available.
+
+ 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 behavior.
+* Amq -f option:: Flushing the map cache.
+* Amq -h option:: Controlling a non-local host.
+* Amq -H option:: Print help message.
+* Amq -l option:: Controlling the log file.
+* Amq -m option:: Obtaining mount statistics.
+* Amq -p option:: Getting Amd's process ID.
+* Amq -P option:: Contacting alternate Amd processes.
+* Amq -q option:: Suppress synchronous unmounting errors.
+* Amq -s option:: Obtaining global statistics.
+* Amq -T option:: Use TCP transport.
+* Amq -U option:: Use UDP transport.
+* Amq -u option:: Forcing volumes to time out.
+* Amq -v option:: Version information.
+* Amq -w option:: Print Amd current working directory.
+* Other Amq options:: Three other special options.
+
+
+File: am-utils.info, Node: Amq default, Next: Amq -f option, Prev: Controlling Amd, Up: Controlling Amd
+
+7.4.1 Amq default information
+-----------------------------
+
+With no arguments, "Amq" obtains a brief list of all existing mounts
+created by Amd. This is different from the list displayed by df(1)
+since the latter only includes system mount points.
+
+The output from this option includes the following information:
+
+ * the automount point,
+ * the filesystem type,
+ * the mount map or mount information,
+ * the internal, or system mount point.
+
+For 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
+
+If an argument is given then statistics for that volume name will be
+output. For 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
+
+'What'
+ the volume name.
+
+'Uid'
+ ignored.
+
+'Getattr'
+ the count of NFS "getattr" requests on this node. This should only
+ be non-zero for directory nodes.
+
+'Lookup'
+ the count of NFS "lookup" requests on this node. This should only
+ be non-zero for directory nodes.
+
+'RdDir'
+ the count of NFS "readdir" requests on this node. This should only
+ be non-zero for directory nodes.
+
+'RdLnk'
+ the count of NFS "readlink" requests on this node. This should be
+ zero for directory nodes.
+
+'Statfs'
+ the count of NFS "statfs" requests on this node. This should only
+ be non-zero for top-level automount points.
+
+'Mounted@'
+ the date and time the volume name was first referenced.
+
+
+File: am-utils.info, Node: Amq -f option, Next: Amq -h option, Prev: Amq default, Up: Controlling Amd
+
+7.4.2 Amq '-f' option
+---------------------
+
+The '-f' option causes Amd to flush the internal mount map cache. This
+is useful for example in Hesiod maps since Amd will not automatically
+notice when they have been updated. The map cache can also be
+synchronized with the map source by using the 'sync' option (*note
+Automount Filesystem::).
+
+
+File: am-utils.info, Node: Amq -h option, Next: Amq -H option, Prev: Amq -f option, Up: Controlling Amd
+
+7.4.3 Amq '-h' option
+---------------------
+
+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 Amd will be
+running. To query Amd on another host the '-h' option should be used.
+
+
+File: am-utils.info, Node: Amq -H option, Next: Amq -l option, Prev: Amq -h option, Up: Controlling Amd
+
+7.4.4 Amq '-H' option
+---------------------
+
+Print a brief help and usage string.
+
+
+File: am-utils.info, Node: Amq -l option, Next: Amq -m option, Prev: Amq -H option, Up: Controlling Amd
+
+7.4.5 Amq '-l' option
+---------------------
+
+Tell Amd to use log_file as the log file name. For security reasons,
+this _must_ be the same log file which Amd used when started. This
+option is therefore only useful to refresh Amd's open file handle on the
+log file, so that it can be rotated and compressed via daily cron jobs.
+
+
+File: am-utils.info, Node: Amq -m option, Next: Amq -p option, Prev: Amq -l option, Up: Controlling Amd
+
+7.4.6 Amq '-m' option
+---------------------
+
+The '-m' option displays similar information about mounted filesystems,
+rather than automount points. The output includes the following
+information:
+
+ * the mount information,
+ * the mount point,
+ * the filesystem type,
+ * the number of references to this filesystem,
+ * the server hostname,
+ * the state of the file server,
+ * any error which has occurred.
+
+ For 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
+
+ When the reference count is zero the filesystem is not mounted but
+the mount point and server information is still being maintained by Amd.
+
+
+File: am-utils.info, Node: Amq -p option, Next: Amq -P option, Prev: Amq -m option, Up: Controlling Amd
+
+7.4.7 Amq '-p' option
+---------------------
+
+Return the process ID of the remote or locally running Amd. Useful when
+you need to send a signal to the local Amd process, and would rather not
+have to search through the process table. This option is used in the
+'ctl-amd' script.
+
+
+File: am-utils.info, Node: Amq -P option, Next: Amq -q option, Prev: Amq -p option, Up: Controlling Amd
+
+7.4.8 Amq '-P' option
+---------------------
+
+Contact an alternate running Amd that had registered itself on a
+different RPC PROGRAM_NUMBER and apply all other operations to that
+instance of the automounter. This is useful when you run multiple
+copies of Amd, and need to manage each one separately. If not
+specified, Amq will use the default program number for Amd, 300019. For
+security reasons, the only alternate program numbers Amd can use range
+from 300019 to 300029, inclusive.
+
+ For example, to kill an alternate running Amd:
+
+ kill `amq -p -P 300020`
+
+
+File: am-utils.info, Node: Amq -q option, Next: Amq -s option, Prev: Amq -P option, Up: Controlling Amd
+
+7.4.9 Amq '-q' option
+---------------------
+
+Suppress any error messages produced when a synchronous unmount fails.
+See *note Amq -u option::.
+
+
+File: am-utils.info, Node: Amq -s option, Next: Amq -T option, Prev: Amq -q option, Up: Controlling Amd
+
+7.4.10 Amq '-s' option
+----------------------
+
+The '-s' option displays global statistics. If any other options are
+specified or any filesystems named then this option is ignored. For
+example:
+
+ requests stale mount mount unmount
+ deferred fhandles ok failed failed
+ 1054 1 487 290 7017
+
+'Deferred requests'
+ are those for which an immediate reply could not be constructed.
+ For example, this would happen if a background mount was required.
+
+'Stale filehandles'
+ counts the number of times the kernel passes a stale filehandle to
+ Amd. Large numbers indicate problems.
+
+'Mount ok'
+ counts the number of automounts which were successful.
+
+'Mount failed'
+ counts the number of automounts which failed.
+
+'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.
+
+
+File: am-utils.info, Node: Amq -T option, Next: Amq -U option, Prev: Amq -s option, Up: Controlling Amd
+
+7.4.11 Amq '-T' option
+----------------------
+
+The '-T' option causes the Amq to contact Amd using the TCP transport
+only (connection oriented). Normally, Amq will use TCP first, and if
+that failed, will try UDP.
+
+
+File: am-utils.info, Node: Amq -U option, Next: Amq -u option, Prev: Amq -T option, Up: Controlling Amd
+
+7.4.12 Amq '-U' option
+----------------------
+
+The '-U' option causes the Amq to contact Amd using the UDP transport
+only (connectionless). Normally, Amq will use TCP first, and if that
+failed, will try UDP.
+
+
+File: am-utils.info, Node: Amq -u option, Next: Amq -v option, Prev: Amq -U option, Up: Controlling Amd
+
+7.4.13 Amq '-u' option
+----------------------
+
+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. If '-u' is repeated,
+then Amd will attempt to unmount the filesystem synchronously. This
+makes things like
+
+ amq -uu /t/cd0d && eject cd0
+
+work as expected. Any error messages this might produce can be
+suppressed with the '-q' option. See *note Amq -q option::.
+
+
+File: am-utils.info, Node: Amq -v option, Next: Amq -w option, Prev: Amq -u option, Up: Controlling Amd
+
+7.4.14 Amq '-v' option
+----------------------
+
+The '-v' option displays the version of Amd in a similar way to Amd's
+'-v' option.
+
+
+File: am-utils.info, Node: Amq -w option, Next: Other Amq options, Prev: Amq -v option, Up: Controlling Amd
+
+7.4.15 Amq '-w' option
+----------------------
+
+The '-w' option translates a full pathname as returned by getpwd(3) into
+a short Amd pathname that goes through its mount points. This option
+requires that Amd is running.
+
+
+File: am-utils.info, Node: Other Amq options, Prev: Amq -w option, Up: Controlling Amd
+
+7.4.16 Other Amq options
+------------------------
+
+Two other operations are implemented. These modify the state of Amd as
+a whole, rather than any particular filesystem. The '-x' and '-D'
+options have exactly the same effect as Amd's corresponding command line
+options.
+
+ When Amd receives the '-x' flag, it disallows turning off the 'fatal'
+or 'error' flags. Both are on by default. They are mandatory so that
+Amd could report important errors, including errors relating to turning
+flags on/off.
+
+
+File: am-utils.info, Node: FSinfo, Next: Hlfsd, Prev: Run-time Administration, Up: Top
+
+8 FSinfo
+********
+
+XXX: this chapter should be reviewed by someone knowledgeable with
+fsinfo.
+
+* 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::
+
+
+File: am-utils.info, Node: FSinfo Overview, Next: Using FSinfo, Prev: FSinfo, Up: FSinfo
+
+8.1 FSinfo overview
+===================
+
+FSinfo is a filesystem management tool. It has been designed to work
+with Amd to help system administrators keep track of the ever increasing
+filesystem namespace under their control.
+
+ The purpose of 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
+Amd maps which can be used among the set of hosts described in the input
+data.
+
+ 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. 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 '/etc/fstab', '/etc/exports', Amd
+mount maps and '/etc/bootparams'.
+
+
+File: am-utils.info, Node: Using FSinfo, Next: FSinfo Grammar, Prev: FSinfo Overview, Up: FSinfo
+
+8.2 Using FSinfo
+================
+
+The basic strategy when using 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:
+
+ * Hostname
+ * List of all filesystems and, optionally, their mount points.
+ * Names of volumes stored on each filesystem.
+ * NFS export information for each volume.
+ * The list of static filesystem mounts.
+
+ The following information can also be entered into the same
+configuration files so that all data can be kept in one place.
+
+ * List of network interfaces
+ * IP address of each interface
+ * Hardware address of each interface
+ * Dumpset to which each filesystem belongs
+ * and more ...
+
+ To generate Amd mount maps, the automount tree must also be defined
+(*note FSinfo automount definitions::). This will have been designed at
+the time the volume names were allocated. Some volume names will not be
+automounted, so FSinfo needs an explicit list of which volumes should be
+automounted.
+
+ Hostnames are required at several places in the 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 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.
+
+
+File: am-utils.info, Node: FSinfo Grammar, Next: FSinfo host definitions, Prev: Using FSinfo, Up: FSinfo
+
+8.3 FSinfo grammar
+==================
+
+FSinfo has a relatively simple grammar. Distinct syntactic constructs
+exist for each of the different types of data, though they share a
+common flavor. Several conventions are used in the grammar fragments
+below.
+
+ The notation, list(xxx), indicates a list of zero or more xxx's. The
+notation, opt(xxx), indicates zero or one xxx. Items in double quotes,
+eg "host", represent input tokens. Items in angle brackets, eg
+<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 "\" 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.
+
+ fsinfo : list(fsinfo_attr) ;
+
+ fsinfo_attr : host | automount ;
+
+* Menu:
+
+* FSinfo host definitions::
+* FSinfo automount definitions::
+
+
+File: am-utils.info, Node: FSinfo host definitions, Next: FSinfo host attributes, Prev: FSinfo Grammar, Up: FSinfo
+
+8.4 FSinfo host definitions
+===========================
+
+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.
+
+ host : "host" host_data list(filesystem) list(mount) ;
+
+ 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 "host data".
+
+ All the disks the machine has should then be described in the "list
+of filesystems". When describing disks, you can specify what "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 "list of mounts" specifies all the filesystems that should be
+statically mounted on the machine.
+
+* Menu:
+
+* FSinfo host attributes::
+* FSinfo filesystems::
+* FSinfo static mounts::
+
+
+File: am-utils.info, Node: FSinfo host attributes, Next: FSinfo filesystems, Prev: FSinfo host definitions, Up: FSinfo host definitions
+
+8.5 FSinfo host attributes
+==========================
+
+The host data, "host_data", always includes the "hostname". In
+addition, several other host attributes can be given.
+
+ host_data : <HOSTNAME>
+ | "{" list(host_attrs) "}" <HOSTNAME>
+ ;
+
+ host_attrs : host_attr "=" <STRING>
+ | netif
+ ;
+
+ host_attr : "config"
+ | "arch"
+ | "os"
+ | "cluster"
+ ;
+
+ The "hostname" is, typically, the fully qualified hostname of the
+machine.
+
+ Examples:
+
+ host dylan.doc.ic.ac.uk
+
+ host {
+ os = hpux
+ arch = hp300
+ } dougal.doc.ic.ac.uk
+
+ The options that can be given as host attributes are shown below.
+
+* Menu:
+
+* FSinfo netif Option:: FSinfo host netif.
+* FSinfo config Option:: FSinfo host config.
+* FSinfo arch Option:: FSinfo host arch.
+* FSinfo os Option:: FSinfo host os.
+* FSinfo cluster Option:: FSinfo host cluster.
+
+
+File: am-utils.info, Node: FSinfo netif Option, Next: FSinfo config Option, Up: FSinfo host attributes
+
+8.5.1 netif Option
+------------------
+
+This defines the set of network interfaces configured on the machine.
+The interface attributes collected by 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.
+
+ netif : "netif" <STRING> "{" list(netif_attrs) "}" ;
+
+ netif_attrs : netif_attr "=" <STRING> ;
+
+ netif_attr : "inaddr" | "netmask" | "hwaddr" ;
+
+ Examples:
+
+ netif ie0 {
+ inaddr = 129.31.81.37
+ netmask = 0xfffffe00
+ hwaddr = "08:00:20:01:a6:a5"
+ }
+
+ netif ec0 { }
+
+
+File: am-utils.info, Node: FSinfo config Option, Next: FSinfo arch Option, Prev: FSinfo netif Option, Up: FSinfo host attributes
+
+8.5.2 config Option
+-------------------
+
+This option allows you to specify configuration variables for the
+startup scripts ('rc' scripts). A simple string should immediately
+follow the keyword.
+
+ Example:
+
+ config "NFS_SERVER=true"
+ config "ZEPHYR=true"
+
+ This option is currently unsupported.
+
+
+File: am-utils.info, Node: FSinfo arch Option, Next: FSinfo os Option, Prev: FSinfo config Option, Up: FSinfo host attributes
+
+8.5.3 arch Option
+-----------------
+
+This defines the architecture of the machine. For example:
+
+ arch = hp300
+
+ This is intended to be of use when building architecture specific
+mountmaps, however, the option is currently unsupported.
+
+
+File: am-utils.info, Node: FSinfo os Option, Next: FSinfo cluster Option, Prev: FSinfo arch Option, Up: FSinfo host attributes
+
+8.5.4 os Option
+---------------
+
+This defines the operating system type of the host. For example:
+
+ os = hpux
+
+ This information is used when creating the 'fstab' files, for example
+in choosing which format to use for the 'fstab' entries within the file.
+
+
+File: am-utils.info, Node: FSinfo cluster Option, Prev: FSinfo os Option, Up: FSinfo host attributes
+
+8.5.5 cluster Option
+--------------------
+
+This is used for specifying in which cluster the machine belongs. For
+example:
+
+ cluster = "theory"
+
+ The cluster is intended to be used when generating the automount
+maps, although it is currently unsupported.
+
+
+File: am-utils.info, Node: FSinfo filesystems, Next: FSinfo static mounts, Prev: FSinfo host attributes, Up: FSinfo host definitions
+
+8.6 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 'fsck' pass number which are needed to generate 'fstab'
+entries.
+
+ filesystem : "fs" <DEVICE> "{" list(fs_data) "}" ;
+
+ fs_data : fs_data_attr "=" <STRING>
+ | mount
+ ;
+
+ fs_data_attr
+ : "fstype" | "opts" | "passno"
+ | "freq" | "dumpset" | "log"
+ ;
+
+ Here, <DEVICE> is the device name of the disk (for example,
+'/dev/dsk/2s0'). The device name is used for building the mount maps
+and for the 'fstab' file. The attributes that can be specified are
+shown in the following section.
+
+ The FSinfo configuration file for 'dylan.doc.ic.ac.uk' is listed
+below.
+
+ 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
+ }
+ }
+
+* Menu:
+
+* FSinfo fstype Option:: FSinfo filesystems fstype.
+* FSinfo opts Option:: FSinfo filesystems opts.
+* FSinfo passno Option:: FSinfo filesystems passno.
+* FSinfo freq Option:: FSinfo filesystems freq.
+* FSinfo mount Option:: FSinfo filesystems mount.
+* FSinfo dumpset Option:: FSinfo filesystems dumpset.
+* FSinfo log Option:: FSinfo filesystems log.
+
+
+File: am-utils.info, Node: FSinfo fstype Option, Next: FSinfo opts Option, Up: FSinfo filesystems
+
+8.6.1 fstype Option
+-------------------
+
+This specifies the type of filesystem being declared and will be placed
+into the 'fstab' file as is. The value of this option will be handed to
+'mount' as the filesystem type--it should have such values as '4.2',
+'nfs' or 'swap'. The value is not examined for correctness.
+
+ There is one special case. If the filesystem type is specified as
+'export' then the filesystem information will not be added to the host's
+'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 FSinfo.
+
+ Example:
+
+ fstype = swap
+
+
+File: am-utils.info, Node: FSinfo opts Option, Next: FSinfo passno Option, Prev: FSinfo fstype Option, Up: FSinfo filesystems
+
+8.6.2 opts Option
+-----------------
+
+This defines any options that should be given to mount(8) in the 'fstab'
+file. For example:
+
+ opts = rw,nosuid,grpid
+
+
+File: am-utils.info, Node: FSinfo passno Option, Next: FSinfo freq Option, Prev: FSinfo opts Option, Up: FSinfo filesystems
+
+8.6.3 passno Option
+-------------------
+
+This defines the fsck(8) pass number in which to check the filesystem.
+This value will be placed into the 'fstab' file.
+
+ Example:
+
+ passno = 1
+
+
+File: am-utils.info, Node: FSinfo freq Option, Next: FSinfo mount Option, Prev: FSinfo passno Option, Up: FSinfo filesystems
+
+8.6.4 freq Option
+-----------------
+
+This defines the interval (in days) between dumps. The value is placed
+as is into the 'fstab' file.
+
+ Example:
+
+ freq = 3
+
+
+File: am-utils.info, Node: FSinfo mount Option, Next: FSinfo dumpset Option, Prev: FSinfo freq Option, Up: FSinfo filesystems
+
+8.6.5 mount Option
+------------------
+
+This defines the mountpoint at which to place the filesystem. If the
+mountpoint of the filesystem is specified as '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 'exportfs',
+'volname' and 'sel'.
+
+ The format is:
+
+ mount : "mount" vol_tree ;
+
+ vol_tree : list(vol_tree_attr) ;
+
+ vol_tree_attr
+ : <STRING> "{" list(vol_tree_info) vol_tree "}" ;
+
+ vol_tree_info
+ : "exportfs" <EXPORT-DATA>
+ | "volname" <VOLNAME>
+ | "sel" <SELECTOR-LIST>
+ ;
+
+ Example:
+
+ mount default {
+ exportfs "dylan dougal florence zebedee"
+ volname /vol/andrew
+ }
+
+ In the above example, the filesystem currently being declared will
+have an entry placed into the 'exports' file allowing the filesystem to
+be exported to the machines 'dylan', 'dougal', 'florence' and 'zebedee'.
+The volume name by which the filesystem will be referred to remotely, is
+'/vol/andrew'. By declaring the mountpoint to be 'default', the
+filesystem will be mounted on the local machine in the automounter tree,
+where Amd will automatically inherit the mount as '/vol/andrew'.
+
+'exportfs'
+ a string defining which machines the filesystem may be exported to.
+ This is copied, as is, into the 'exports' file--no sanity checking
+ is performed on this string.
+
+'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.
+
+'sel'
+ a string which is placed into the automounter maps as a selector
+ for the filesystem.
+
+
+File: am-utils.info, Node: FSinfo dumpset Option, Next: FSinfo log Option, Prev: FSinfo mount Option, Up: FSinfo filesystems
+
+8.6.6 dumpset Option
+--------------------
+
+This provides support for Imperial College's local file backup tools and
+is not documented further here.
+
+
+File: am-utils.info, Node: FSinfo log Option, Prev: FSinfo dumpset Option, Up: FSinfo filesystems
+
+8.6.7 log Option
+----------------
+
+Specifies the log device for the current filesystem. This is ignored if
+not required by the particular filesystem type.
+
+
+File: am-utils.info, Node: FSinfo static mounts, Next: FSinfo automount definitions, Prev: FSinfo filesystems, Up: FSinfo host definitions
+
+8.7 FSinfo static mounts
+========================
+
+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 'fs' declarations. In this case the 'mount' declaration is used
+to determine from where its filesystems will be mounted. In addition to
+being added to the 'fstab' file, this information can also be used to
+generate a suitable 'bootparams' file.
+
+ mount : "mount" <VOLNAME> list(localinfo) ;
+
+ localinfo : localinfo_attr <STRING> ;
+
+ localinfo_attr
+ : "as"
+ | "from"
+ | "fstype"
+ | "opts"
+ ;
+
+ 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:
+'from MACHINE'
+ mount the filesystem from the machine with the hostname of
+ "machine".
+
+'as MOUNTPOINT'
+ mount the filesystem locally as the name given, in case this is
+ different from the advertised volume name of the filesystem.
+
+'opts OPTIONS'
+ native mount(8) options.
+
+'fstype TYPE'
+ type of filesystem to be mounted.
+
+ An example:
+
+ mount /export/exec/hp300/local as /usr/local
+
+ If the mountpoint specified is either '/' or 'swap', the machine will
+be considered to be booting off the net and this will be noted for use
+in generating a 'bootparams' file for the host which owns the
+filesystems.
+
+
+File: am-utils.info, Node: FSinfo automount definitions, Next: FSinfo Command Line Options, Prev: FSinfo static mounts, Up: FSinfo
+
+8.8 Defining an Amd Mount Map in FSinfo
+=======================================
+
+The maps used by Amd can be constructed from FSinfo by defining all the
+automount trees. 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
+'automount' declaration is needed for each Amd automount point. FSinfo
+determines whether the automount point is "direct" (*note Direct
+Automount Filesystem::) or "indirect" (*note Top-level Filesystem::).
+Direct automount points are distinguished by the fact that there is no
+underlying "automount_tree".
+
+ automount : "automount" opt(auto_opts) automount_tree ;
+
+ auto_opts : "opts" <MOUNT-OPTIONS> ;
+
+ automount_tree
+ : list(automount_attr)
+ ;
+
+ automount_attr
+ : <STRING> "=" <VOLNAME>
+ | <STRING> "->" <SYMLINK>
+ | <STRING> "{" automount_tree "}"
+ ;
+
+ If <MOUNT-OPTIONS> is given, then it is the string to be placed in
+the maps for Amd for the 'opts' option.
+
+ A "map" is typically a tree of filesystems, for example '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 '/vol', the
+following map would be defined:
+
+ automount /vol { }
+
+ Within a tree, the only items that can appear are more maps. For
+example:
+
+ automount /vol {
+ andrew { }
+ X11 { }
+ }
+
+ In this case, FSinfo will look for volumes named '/vol/andrew' and
+'/vol/X11' and a map entry will be generated for each. If the volumes
+are defined more than once, then FSinfo will generate a series of
+alternate entries for them in the maps.
+
+ Instead of a tree, either a link (NAME '->' DESTINATION) or a
+reference can be specified (NAME '=' DESTINATION). A link creates a
+symbolic link to the string specified, without further processing the
+entry. A reference will examine the destination filesystem and optimize
+the reference. For example, to create an entry for 'njw' in the
+'/homes' map, either of the two forms can be used:
+
+ automount /homes {
+ njw -> /home/dylan/njw
+ }
+
+ or
+
+ automount /homes {
+ njw = /home/dylan/njw
+ }
+
+ In the first example, when '/homes/njw' is referenced from Amd, a
+link will be created leading to '/home/dylan/njw' and the automounter
+will be referenced a second time to resolve this filename. The map
+entry would be:
+
+ njw type:=link;fs:=/home/dylan/njw
+
+ In the second example, the destination directory is analyzed and
+found to be in the filesystem '/home/dylan' which has previously been
+defined in the maps. Hence the map entry will look like:
+
+ njw rhost:=dylan;rfs:=/home/dylan;sublink:=njw
+
+ Creating only one symbolic link, and one access to Amd.
+
+
+File: am-utils.info, Node: FSinfo Command Line Options, Next: FSinfo errors, Prev: FSinfo automount definitions, Up: FSinfo
+
+8.9 FSinfo Command Line Options
+===============================
+
+FSinfo is started from the command line by using the command:
+
+ fsinfo [options] files ...
+
+ The input to 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 'bootparams' file are in the latter class. To put the
+output into a subdirectory simply put a '/' at the end of the prefix,
+making sure that the directory has already been made before running
+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.
+
+
+File: am-utils.info, Node: -a FSinfo Option, Next: -b FSinfo Option, Prev: FSinfo Command Line Options, Up: FSinfo Command Line Options
+
+8.9.1 '-a' AUTODIR
+------------------
+
+Specifies the directory name in which to place the automounter's
+mountpoints. This defaults to '/a'. Some sites have the autodir set to
+be '/amd', and this would be achieved by:
+
+ fsinfo -a /amd ...
+
+
+File: am-utils.info, Node: -b FSinfo Option, Next: -d FSinfo Option, Prev: -a FSinfo Option, Up: FSinfo Command Line Options
+
+8.9.2 '-b' BOOTPARAMS
+---------------------
+
+This specifies the prefix for the 'bootparams' filename. If it is not
+given, then the file will not be generated. The 'bootparams' file will
+be constructed for the destination machine and will be placed into a
+file named '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 'bootparams' file in the directory
+'generic', the following would be used:
+
+ fsinfo -b generic/ ...
+
+
+File: am-utils.info, Node: -d FSinfo Option, Next: -e FSinfo Option, Prev: -b FSinfo Option, Up: FSinfo Command Line Options
+
+8.9.3 '-d' DUMPSETS
+-------------------
+
+This specifies the prefix for the '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 'dumpsets',
+prefixed by this string. The 'dumpsets' file is for use by Imperial
+College's local backup system.
+
+ For example, to create a 'dumpsets' file in the directory 'generic',
+then you would use the following:
+
+ fsinfo -d generic/ ...
+
+
+File: am-utils.info, Node: -e FSinfo Option, Next: -f FSinfo Option, Prev: -d FSinfo Option, Up: FSinfo Command Line Options
+
+8.9.4 '-e' EXPORTFS
+-------------------
+
+Defines the prefix for the '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 '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
+'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 'exports' files for each diskfull machine and
+place them into the directory 'exports':
+
+ fsinfo -e exports/ ...
+
+
+File: am-utils.info, Node: -f FSinfo Option, Next: -h FSinfo Option, Prev: -e FSinfo Option, Up: FSinfo Command Line Options
+
+8.9.5 '-f' FSTAB
+----------------
+
+This defines the prefix for the 'fstab' files. The files will only be
+created if this prefix is defined. For each machine defined in the
+configuration files, a '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 'fstabs':
+
+ fsinfo -f fstabs/ ...
+
+
+File: am-utils.info, Node: -h FSinfo Option, Next: -m FSinfo Option, Prev: -f FSinfo Option, Up: FSinfo Command Line Options
+
+8.9.6 '-h' HOSTNAME
+-------------------
+
+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
+gethostname(2).
+
+ Example:
+
+ fsinfo -h dylan.doc.ic.ac.uk ...
+
+
+File: am-utils.info, Node: -m FSinfo Option, Next: -q FSinfo Option, Prev: -h FSinfo Option, Up: FSinfo Command Line Options
+
+8.9.7 '-m' MOUNT-MAPS
+---------------------
+
+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 'automaps':
+
+ fsinfo -m automaps/ ...
+
+
+File: am-utils.info, Node: -q FSinfo Option, Next: -v FSinfo Option, Prev: -m FSinfo Option, Up: FSinfo Command Line Options
+
+8.9.8 '-q'
+----------
+
+Selects quiet mode. FSinfo suppress the "running commentary" and only
+outputs any error messages which are generated.
+
+
+File: am-utils.info, Node: -v FSinfo Option, Next: -D-FSinfo Option, Prev: -q FSinfo Option, Up: FSinfo Command Line Options
+
+8.9.9 '-v'
+----------
+
+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 'stdout' on a line starting with a '#' character.
+
+
+File: am-utils.info, Node: -D-FSinfo Option, Next: -I FSinfo Option, Prev: -v FSinfo Option, Up: FSinfo Command Line Options
+
+8.9.10 '-D' NAME[=defn]
+-----------------------
+
+Defines a symbol "name" for the preprocessor when reading the
+configuration files. Equivalent to '#define' directive.
+
+
+File: am-utils.info, Node: -I FSinfo Option, Next: -U FSinfo Option, Prev: -D-FSinfo Option, Up: FSinfo Command Line Options
+
+8.9.11 '-I' DIRECTORY
+---------------------
+
+This option is passed into the preprocessor for the configuration files.
+It specifies directories in which to find include files
+
+
+File: am-utils.info, Node: -U FSinfo Option, Prev: -I FSinfo Option, Up: FSinfo Command Line Options
+
+8.9.12 '-U' NAME
+----------------
+
+Removes any initial definition of the symbol "name". Inverse of the
+'-D' option.
+
+
+File: am-utils.info, Node: FSinfo errors, Prev: FSinfo Command Line Options, Up: FSinfo
+
+8.10 Errors produced by FSinfo
+==============================
+
+The following table documents the errors and warnings which FSinfo may
+produce.
+
+" expected
+ Occurs if an unescaped newline is found in a quoted string.
+
+ambiguous mount: 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.
+
+can't open FILENAME for writing
+ Occurs if any errors are encountered when opening an output file.
+
+cannot determine localname since volname 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, FSinfo
+ cannot calculate a mountpoint, as the desired pathname would be
+ ambiguous.
+
+DEVICE has duplicate exportfs data
+ Produced if the 'exportfs' option is used multiple times within the
+ same branch of a filesystem definition. For example, if you
+ attempt to set the 'exportfs' data at different levels of the
+ mountpoint directory tree.
+
+dump frequency for HOST:DEVICE is non-zero
+ Occurs if DEVICE has its 'fstype' declared to be 'swap' or 'export'
+ and the 'dump' option is set to a value greater than zero. Swap
+ devices should not be dumped.
+
+duplicate host HOSTNAME!
+ If a host has more than one definition.
+
+end of file within comment
+ A comment was unterminated before the end of one of the
+ configuration files.
+
+FILENAME: cannot open for reading
+ If a file specified on the command line as containing configuration
+ data could not be opened.
+
+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.
+
+fs field "FIELD-NAME" already set
+ Occurs when multiple definitions are given for one of the
+ attributes of a host's filesystem.
+
+host field "FIELD-NAME" already set
+ If duplicate definitions are given for any of the fields with a
+ host definition.
+
+HOST: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.
+
+HOST:DEVICE has no mount point
+ Occurs if the 'mount' option is not specified for a host's
+ filesystem.
+
+HOST:DEVICE needs field "FIELD-NAME"
+ Occurs when a filesystem is missing a required field. FIELD-NAME
+ could be one of 'fstype', 'opts', 'passno' or 'mount'.
+
+HOST:mount field specified for swap partition
+ Occurs if a mountpoint is given for a filesystem whose type is
+ declared to be 'swap'.
+
+malformed IP dotted quad: ADDRESS
+ If the Internet address of an interface is incorrectly specified.
+ An Internet address definition is handled to inet_addr(3N) to see
+ if it can cope. If not, then this message will be displayed.
+
+malformed netmask: 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 NETMASK value.
+
+mount field "FIELD-NAME" already set
+ Occurs when a static mount has multiple definitions of the same
+ field.
+
+mount tree field "FIELD-NAME" already set
+ Occurs when the FIELD-NAME is defined more than once during the
+ definition of a filesystems mountpoint.
+
+netif field FIELD-NAME already set
+ Occurs if you attempt to define an attribute of an interface more
+ than once.
+
+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.
+
+no disk mounts on HOSTNAME
+ If there are no static mounts, nor local disk mounts specified for
+ a machine, this message will be displayed.
+
+no volname given for HOST:DEVICE
+ Occurs when a filesystem is defined to be mounted on 'default', but
+ no volume name is given for the file system, then the mountpoint
+ cannot be determined.
+
+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.
+
+pass number for HOST:DEVICE is non-zero
+ Occurs if DEVICE has its 'fstype' declared to be 'swap' or 'export'
+ and the fsck(8) pass number is set. Swap devices should not be
+ fsck'd. *Note FSinfo fstype Option::.
+
+sub-directory DIRECTORY of DIRECTORY-TREE starts with '/'
+ Within the filesystem specification for a host, if an element
+ DIRECTORY of the mountpoint begins with a '/' and it is not the
+ start of the tree.
+
+sub-directory of DIRECTORY-TREE is named "default"
+ 'default' is a keyword used to specify if a mountpoint should be
+ automatically calculated by FSinfo. If you attempt to specify a
+ directory name as this, it will use the filename of 'default' but
+ will produce this warning.
+
+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.
+
+unknown directory attribute
+ If an unknown keyword is found while reading the definition of a
+ host's filesystem mount option.
+
+unknown filesystem attribute
+ Occurs if an unrecognized keyword is used when defining a host's
+ filesystems.
+
+unknown host attribute
+ Occurs if an unrecognized keyword is used when defining a host.
+
+unknown mount attribute
+ Occurs if an unrecognized keyword is found while parsing the list
+ of static mounts.
+
+unknown volname VOLUME automounted [ on name ]
+ Occurs if VOLUME is used in a definition of an automount map but
+ the volume name has not been declared during the host filesystem
+ definitions.
+
+volname 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.
+
+volname VOLUME not exported from MACHINE
+ Occurs if you attempt to mount the volume VOLUME from a machine
+ which has not declared itself to have such a filesystem available.
+
+
+File: am-utils.info, Node: Hlfsd, Next: Assorted Tools, Prev: FSinfo, Up: Top
+
+9 Hlfsd
+*******
+
+Hlfsd is a daemon which implements a filesystem containing a symbolic
+link to subdirectory within a user's home directory, depending on the
+user which accessed that link. It was primarily designed to redirect
+incoming mail to users' home directories, so that it can be read from
+anywhere. It was designed and implemented by Erez Zadok
+(http://www.cs.sunysb.edu/~ezk) and Alexander Dupuy <dupuy AT
+cs.columbia.edu>, at the Computer Science Department
+(http://www.cs.columbia.edu/) of Columbia University
+(http://www.columbia.edu/). A paper
+(http://www.fsl.cs.sunysb.edu/docs/hlfsd/hlfsd.html) on Hlfsd was
+presented at the Usenix LISA VII conference in 1993.
+
+ Hlfsd operates by mounting itself as an NFS server for the directory
+containing linkname, which defaults to '/hlfs/home'. Lookups within
+that directory are handled by Hlfsd, which uses the password map to
+determine how to resolve the lookup. The directory will be created if
+it doesn't already exist. The symbolic link will be to the accessing
+user's home directory, with subdir appended to it. If not specified,
+subdir defaults to '.hlfsdir'. This directory will also be created if
+it does not already exist.
+
+ A 'SIGTERM' sent to Hlfsd will cause it to shutdown. A 'SIGHUP' will
+flush the internal caches, and reload the password map. It will also
+close and reopen the log file, to enable the original log file to be
+removed or rotated. A 'SIGUSR1' will cause it to dump its internal
+table of user IDs and home directories to the file '/tmp/hlfsddump'.
+
+* Menu:
+
+* Introduction to Hlfsd::
+* Background to Mail Delivery::
+* Using Hlfsd::
+
+
+File: am-utils.info, Node: Introduction to Hlfsd, Next: Background to Mail Delivery, Prev: Hlfsd, Up: Hlfsd
+
+9.1 Introduction to Hlfsd
+=========================
+
+Electronic mail has become one of the major applications for many
+computer networks, and use of this service is expected to increase over
+time, as networks proliferate and become faster. Providing a convenient
+environment for users to read, compose, and send electronic mail has
+become a requirement for systems administrators (SAs).
+
+ Widely used methods for handling mail usually require users to be
+logged into a designated "home" machine, where their mailbox files
+reside. Only on that one machine can they read newly arrived mail.
+Since users have to be logged into that system to read their mail, they
+often find it convenient to run all of their other processes on that
+system as well, including memory and CPU-intensive jobs. For example,
+in our department, we have allocated and configured several
+multi-processor servers to handle such demanding CPU/memory
+applications, but these were underutilized, in large part due to the
+inconvenience of not being able to read mail on those machines. (No
+home directories were located on these designated CPU-servers, since we
+did not want NFS service for users' home directories to have to compete
+with CPU-intensive jobs. At the same time, we discouraged users from
+running demanding applications on their home machines.)
+
+ Many different solutions have been proposed to allow users to read
+their mail on any host. However, all of these solutions fail in one or
+more of several ways:
+
+ * they introduce new single points of failure
+
+ * they require using different mail transfer agents (MTAs) or user
+ agents (UAs)
+
+ * they do not solve the problem for all cases, i.e. the solution is
+ only partially successful for a particular environment.
+
+ We have designed a simple filesystem, called the "Home-Link File
+System", to provide the ability to deliver mail to users' home
+directories, without modification to mail-related applications. We have
+endeavored to make it as stable as possible. Of great importance to us
+was to make sure the HLFS daemon, 'hlfsd' , would not hang under any
+circumstances, and would take the next-best action when faced with
+problems. Compared to alternative methods, Hlfsd is a stable, more
+general solution, and easier to install/use. In fact, in some ways, we
+have even managed to improve the reliability and security of mail
+service.
+
+ Our server implements a small filesystem containing a symbolic link
+to a subdirectory of the invoking user's home directory, and named
+symbolic links to users' mailbox files.
+
+ The Hlfsd server finds out the UID of the process that is accessing
+its mount point, and resolves the pathname component 'home' as a
+symbolic link to a subdirectory within the home directory given by the
+UID's entry in the password file. If the GID of the process that
+attempts to access a mailbox file is a special one (called HLFS_GID),
+then the server maps the name of the _next_ pathname component directly
+to the user's mailbox. This is necessary so that access to a mailbox
+file by users other than the owner can succeed. The server has safety
+features in case of failures such as hung filesystems or home directory
+filesystems that are inaccessible or full.
+
+ On most of our machines, mail gets delivered to the directory
+'/var/spool/mail'. Many programs, including UAs, depend on that path.
+Hlfsd creates a directory '/mail', and mounts itself on top of that
+directory. Hlfsd implements the path name component called 'home',
+pointing to a subdirectory of the user's home directory. We have made
+'/var/spool/mail' a symbolic link to '/mail/home', so that accessing
+'/var/spool/mail' actually causes access to a subdirectory within a
+user's home directory.
+
+ The following table shows an example of how resolving the pathname
+'/var/mail/NAME' to '/users/ezk/.mailspool/NAME' proceeds.
+
+Resolving Component Pathname left to resolve Value if symbolic link
+
+/ var/mail/NAME
+
+var/ mail/NAME
+
+mail@ /mail/home/NAME mail@ -> /mail/home
+
+/ mail/home/NAME
+
+mail/ home/NAME
+
+home@ NAME home@ ->
+ /users/ezk/.mailspool
+
+/ users/ezk/.mailspool/NAME
+
+users/ ezk/.mailspool/NAME
+
+ezk/ .mailspool/NAME
+
+.mailspool/ NAME
+
+NAME
+
+
+File: am-utils.info, Node: Background to Mail Delivery, Next: Using Hlfsd, Prev: Introduction to Hlfsd, Up: Hlfsd
+
+9.2 Background to Mail Delivery
+===============================
+
+This section provides an in-depth discussion of why available methods
+for delivering mail to home directories are not as good as the one used
+by Hlfsd.
+
+* Menu:
+
+* Single-Host Mail Spool Directory::
+* Centralized Mail Spool Directory::
+* Distributed Mail Spool Service::
+* Why Deliver Into the Home Directory?::
+
+
+File: am-utils.info, Node: Single-Host Mail Spool Directory, Next: Centralized Mail Spool Directory, Prev: Background to Mail Delivery, Up: Background to Mail Delivery
+
+9.2.1 Single-Host Mail Spool Directory
+--------------------------------------
+
+The most common method for mail delivery is for mail to be appended to a
+mailbox file in a standard spool directory on the designated "mail home"
+machine of the user. The greatest advantage of this method is that it
+is the default method most vendors provide with their systems, thus very
+little (if any) configuration is required on the SA's part. All they
+need to set up are mail aliases directing mail to the host on which the
+user's mailbox file is assigned. (Otherwise, mail is delivered locally,
+and users find mailboxes on many machines.)
+
+ As users become more sophisticated, and aided by windowing systems,
+they find themselves logging in on multiple hosts at once, performing
+several tasks concurrently. They ask to be able to read their mail on
+any host on the network, not just the one designated as their "mail
+home".
+
+
+File: am-utils.info, Node: Centralized Mail Spool Directory, Next: Distributed Mail Spool Service, Prev: Single-Host Mail Spool Directory, Up: Background to Mail Delivery
+
+9.2.2 Centralized Mail Spool Directory
+--------------------------------------
+
+A popular method for providing mail readability from any host is to have
+all mail delivered to a mail spool directory on a designated
+"mail-server" which is exported via NFS to all of the hosts on the
+network. Configuring such a system is relatively easy. On most
+systems, the bulk of the work is a one-time addition to one or two
+configuration files in '/etc'. The file-server's spool directory is
+then hard-mounted across every machine on the local network. In small
+environments with only a handful of hosts this can be an acceptable
+solution. In our department, with a couple of hundred active hosts and
+thousands of mail messages processed daily, this was deemed completely
+unacceptable, as it introduced several types of problems:
+
+Scalability and Performance
+
+ As more and more machines get added to the network, more mail
+ traffic has to go over NFS to and from the mail-server. Users like
+ to run mail-watchers, and read their mail often. The stress on the
+ shared infrastructure increases with every user and host added;
+ loads on the mail server would most certainly be high since all
+ mail delivery goes through that one machine.(1) This leads to
+ lower reliability and performance. To reduce the number of
+ concurrent connections between clients and the server host, some
+ SAs have resorted to automounting the mail-spool directory. But
+ this solution only makes things worse: since users often run mail
+ watchers, and many popular applications such as 'trn', 'emacs',
+ 'csh' or 'ksh' check periodically for new mail, the automounted
+ directory would be effectively permanently mounted. If it gets
+ unmounted automatically by the automounter program, it is most
+ likely to get mounted shortly afterwards, consuming more I/O
+ resources by the constant cycle of mount and umount calls.
+
+Reliability
+
+ The mail-server host and its network connectivity must be very
+ reliable. Worse, since the spool directory has to be
+ hard-mounted,(2) many processes which access the spool directory
+ (various shells, 'login', 'emacs', etc.) would be hung as long as
+ connectivity to the mail-server is severed. To improve
+ reliability, SAs may choose to backup the mail-server's spool
+ partition several times a day. This may make things worse since
+ reading or delivering mail while backups are in progress may cause
+ backups to be inconsistent; more backups consume more backup-media
+ resources, and increase the load on the mail-server host.
+
+ ---------- Footnotes ----------
+
+ (1) Delivery via NFS-mounted filesystems may require usage of
+'rpc.lockd' and 'rpc.statd' to provide distributed file-locking, both of
+which are widely regarded as unstable and unreliable. Furthermore, this
+will degrade performance, as local processes as well as remote 'nfsd'
+processes are kept busy.
+
+ (2) No SA in their right minds would soft-mount read/write partitions
+-- the chances for data loss are too great.
+
+
+File: am-utils.info, Node: Distributed Mail Spool Service, Next: Why Deliver Into the Home Directory?, Prev: Centralized Mail Spool Directory, Up: Background to Mail Delivery
+
+9.2.3 Distributed Mail Spool Service
+------------------------------------
+
+Despite the existence of a few systems that support delivery to users'
+home directories, mail delivery to home directories hasn't caught on.
+We believe the main reason is that there are too many programs that
+"know" where mailbox files reside. Besides the obvious (the delivery
+program '/bin/mail' and mail readers like '/usr/ucb/Mail', 'mush', 'mm',
+etc.), other programs that know mailbox location are login, from, almost
+every shell, 'xbiff', 'xmailbox', and even some programs not directly
+related to mail, such as 'emacs' and 'trn'. Although some of these
+programs can be configured to look in different directories with the use
+of environment variables and other resources, many of them cannot. The
+overall porting work is significant.
+
+ Other methods that have yet to catch on require the use of a special
+mail-reading server, such as IMAP or POP. The main disadvantage of these
+systems is that UAs need to be modified to use these services -- a long
+and involved task. That is why they are not popular at this time.
+
+ Several other ideas have been proposed and even used in various
+environments. None of them is robust. They are mostly very
+specialized, inflexible, and do not extend to the general case. Some of
+the ideas are plain bad, potentially leading to lost or corrupt mail:
+
+automounters
+
+ Using an automounter such as Amd to provide a set of symbolic links
+ from the normal spool directory to user home directories is not
+ sufficient. UAs rename, unlink, and recreate the mailbox as a
+ regular file, therefore it must be a real file, not a symbolic
+ link. Furthermore, it must reside in a real directory which is
+ writable by the UAs and MTAs. This method may also require
+ populating '/var/spool/mail' with symbolic links and making sure
+ they are updated. Making Amd manage that directory directly fails,
+ since many various lock files need to be managed as well. Also,
+ Amd does not provide all of the NFS operations which are required
+ to write mail such as write, create, remove, and unlink.
+
+'$MAIL'
+
+ Setting this variable to an automounted directory pointing to the
+ user's mail spool host only solves the problem for those programs
+ which know and use '$MAIL'. Many programs don't, therefore this
+ solution is partial and of limited flexibility. Also, it requires
+ the SAs or the users to set it themselves -- an added level of
+ inconvenience and possible failures.
+
+/bin/mail
+
+ Using a different mail delivery agent could be the solution. One
+ such example is 'hdmail'. However, 'hdmail' still requires
+ modifying all UAs, the MTA's configuration, installing new daemons,
+ and changing login scripts. This makes the system less upgradable
+ or compatible with others, and adds one more complicated system for
+ SAs to deal with. It is not a complete solution because it still
+ requires each user have their '$MAIL' variable setup correctly, and
+ that every program use this variable.
+
+
+File: am-utils.info, Node: Why Deliver Into the Home Directory?, Prev: Distributed Mail Spool Service, Up: Background to Mail Delivery
+
+9.2.4 Why Deliver Into the Home Directory?
+------------------------------------------
+
+There are several major reasons why SAs might want to deliver mail
+directly into the users' home directories:
+
+Location
+
+ Many mail readers need to move mail from the spool directory to the
+ user's home directory. It speeds up this operation if the two are
+ on the same filesystem. If for some reason the user's home
+ directory is inaccessible, it isn't that useful to be able to read
+ mail, since there is no place to move it to. In some cases, trying
+ to move mail to a non-existent or hung filesystem may result in
+ mail loss.
+
+Distribution
+
+ Having all mail spool directories spread among the many more
+ filesystems minimizes the chances that complete environments will
+ grind to a halt when a single server is down. It does increase the
+ chance that there will be someone who is not able to read their
+ mail when a machine is down, but that is usually preferred to
+ having no one be able to read their mail because a centralized mail
+ server is down. The problem of losing some mail due to the
+ (presumably) higher chances that a user's machine is down is
+ minimized in HLFS.
+
+Security
+
+ Delivering mail to users' home directories has another advantage --
+ enhanced security and privacy. Since a shared system mail spool
+ directory has to be world-readable and searchable, any user can see
+ whether other users have mail, when they last received new mail, or
+ when they last read their mail. Programs such as 'finger' display
+ this information, which some consider an infringement of privacy.
+ While it is possible to disable this feature of 'finger' so that
+ remote users cannot see a mailbox file's status, this doesn't
+ prevent local users from getting the information. Furthermore,
+ there are more programs which make use of this information. In
+ shared environments, disabling such programs has to be done on a
+ system-wide basis, but with mail delivered to users' home
+ directories, users less concerned with privacy who do want to let
+ others know when they last received or read mail can easily do so
+ using file protection bits.
+
+ In summary, delivering mail to home directories provides users the
+functionality sought, and also avoids most of the problems just
+discussed.
+
+
+File: am-utils.info, Node: Using Hlfsd, Prev: Background to Mail Delivery, Up: Hlfsd
+
+9.3 Using Hlfsd
+===============
+
+* Menu:
+
+* Controlling Hlfsd::
+* Hlfsd Options::
+* Hlfsd Files::
+
+
+File: am-utils.info, Node: Controlling Hlfsd, Next: Hlfsd Options, Prev: Using Hlfsd, Up: Using Hlfsd
+
+9.3.1 Controlling Hlfsd
+-----------------------
+
+Much the same way Amd is controlled by 'ctl-amd', so does Hlfsd get
+controlled by the 'ctl-hlfsd' script:
+
+ctl-hlfsd start
+ Start a new Hlfsd.
+
+ctl-hlfsd stop
+ Stop a running Hlfsd.
+
+ctl-hlfsd restart
+ Stop a running Hlfsd, wait for 10 seconds, and then start a new
+ one. It is hoped that within 10 seconds, the previously running
+ Hlfsd terminate properly; otherwise, starting a second one could
+ cause system lockup.
+
+ For example, on our systems, we start Hlfsd within 'ctl-hlfsd' as
+follows on Solaris 2 systems:
+
+ hlfsd -a /var/alt_mail -x all -l /var/log/hlfsd /mail/home .mailspool
+
+ The directory '/var/alt_mail' is a directory in the root partition
+where alternate mail will be delivered into, when it cannot be delivered
+into the user's home directory.
+
+ Normal mail gets delivered into '/var/mail', but on our systems, that
+is a symbolic link to '/mail/home'. '/mail' is managed by Hlfsd, which
+creates a dynamic symlink named 'home', pointing to the subdirectory
+'.mailspool' _within_ the accessing user's home directory. This results
+in mail which normally should go to '/var/mail/$USER', to go to
+'$HOME/.mailspool/$USER'.
+
+ Hlfsd does not create the '/var/mail' symlink. This needs to be
+created (manually) once on each host, by the system administrators, as
+follows:
+
+ mv /var/mail /var/alt_mail
+ ln -s /mail/home /var/mail
+
+ Hlfsd also responds to the following signals:
+
+ A 'SIGHUP' signal sent to Hlfsd will force it to reload the password
+map immediately.
+
+ A 'SIGUSR1' signal sent to Hlfsd will cause it to dump its internal
+password map to the file '/usr/tmp/hlfsd.dump.XXXXXX', where 'XXXXXX'
+will be replaced by a random string generated by mktemp(3) or (the more
+secure) mkstemp(3).
+
+
+File: am-utils.info, Node: Hlfsd Options, Next: Hlfsd Files, Prev: Controlling Hlfsd, Up: Using Hlfsd
+
+9.3.2 Hlfsd Options
+-------------------
+
+-a ALT_DIR
+ Alternate directory. The name of the directory to which the
+ symbolic link returned by Hlfsd will point, if it cannot access the
+ home directory of the user. This defaults to '/var/hlfs'. This
+ directory will be created if it doesn't exist. It is expected that
+ either users will read these files, or the system administrators
+ will run a script to resend this "lost mail" to its owner.
+
+-c CACHE-INTERVAL
+ Caching interval. Hlfsd will cache the validity of home
+ directories for this interval, in seconds. Entries which have been
+ verified within the last CACHE-INTERVAL seconds will not be
+ verified again, since the operation could be expensive, and the
+ entries are most likely still valid. After the interval has
+ expired, Hlfsd will re-verify the validity of the user's home
+ directory, and reset the cache time-counter. The default value for
+ CACHE-INTERVAL is 300 seconds (5 minutes).
+
+-f
+ Force fast startup. This option tells Hlfsd to skip startup-time
+ consistency checks such as existence of mount directory, alternate
+ spool directory, symlink to be hidden under the mount directory,
+ their permissions and validity.
+
+-g GROUP
+ Set the special group HLFS_GID to GROUP. Programs such as
+ '/usr/ucb/from' or '/usr/sbin/in.comsat', which access the
+ mailboxes of other users, must be setgid 'HLFS_GID' to work
+ properly. The default group is 'hlfs'. If no group is provided,
+ and there is no group 'hlfs', this feature is disabled.
+
+-h
+ Help. Print a brief help message, and exit.
+
+-i RELOAD-INTERVAL
+ Map-reloading interval. Each RELOAD-INTERVAL seconds, Hlfsd will
+ reload the password map. Hlfsd needs the password map for the UIDs
+ and home directory pathnames. Hlfsd schedules a 'SIGALRM' to
+ reload the password maps. A 'SIGHUP' sent to Hlfsd will force it
+ to reload the maps immediately. The default value for
+ RELOAD-INTERVAL is 900 seconds (15 minutes.)
+
+-l LOGFILE
+ Specify a log file to which Hlfsd will record events. If LOGFILE
+ is the string 'syslog' then the log messages will be sent to the
+ system log daemon by syslog(3), using the 'LOG_DAEMON' facility.
+ This is also the default.
+
+-n
+ No verify. Hlfsd will not verify the validity of the symbolic link
+ it will be returning, or that the user's home directory contains
+ sufficient disk-space for spooling. This can speed up Hlfsd at the
+ cost of possibly returning symbolic links to home directories which
+ are not currently accessible or are full. By default, Hlfsd
+ validates the symbolic-link in the background. The '-n' option
+ overrides the meaning of the '-c' option, since no caching is
+ necessary.
+
+-o MOUNT-OPTIONS
+ Mount options which Hlfsd will use to mount itself on top of
+ DIRNAME. By default, MOUNT-OPTIONS is set to 'ro'. If the system
+ supports symbolic-link caching, default options are set to
+ 'ro,nocache'.
+
+-p
+ Print PID. Outputs the process-id of Hlfsd to standard output where
+ it can be saved into a file.
+
+-v
+ Version. Displays version information to standard error.
+
+-x LOG-OPTIONS
+ Specify run-time logging options. The options are a comma
+ separated list chosen from: 'fatal', 'error', 'user', 'warn',
+ 'info', 'map', 'stats', 'all'.
+
+-C
+ Force Hlfsd to run on systems that cannot turn off the NFS
+ attribute-cache. Use of this option on those systems is
+ discouraged, as it may result in loss or misdelivery of mail. The
+ option is ignored on systems that can turn off the attribute-cache.
+
+-D LOG-OPTIONS
+ Select from a variety of debugging options. Prefixing an option
+ with the string 'no' reverses the effect of that option. Options
+ are cumulative. The most useful option is 'all'. Since this
+ option is only used for debugging other options are not documented
+ here. A fuller description is available in the program source.
+
+-P PASSWORD-FILE
+ Read the user-name, user-id, and home directory information from
+ the file PASSWORD-FILE. Normally, Hlfsd will use getpwent(3) to
+ read the password database. This option allows you to override the
+ default database, and is useful if you want to map users' mail
+ files to a directory other than their home directory. Only the
+ username, uid, and home-directory fields of the file PASSWORD-FILE
+ are read and checked. All other fields are ignored. The file
+ PASSWORD-FILE must otherwise be compliant with Unix Version 7
+ colon-delimited format passwd(4).
+
+
+File: am-utils.info, Node: Hlfsd Files, Prev: Hlfsd Options, Up: Using Hlfsd
+
+9.3.3 Hlfsd Files
+-----------------
+
+The following files are used by Hlfsd:
+
+'/hlfs'
+ directory under which Hlfsd mounts itself and manages the symbolic
+ link 'home'.
+
+'.hlfsdir'
+ default sub-directory in the user's home directory, to which the
+ 'home' symbolic link returned by Hlfsd points.
+
+'/var/hlfs'
+ directory to which 'home' symbolic link returned by Hlfsd points if
+ it is unable to verify the that user's home directory is
+ accessible.
+
+'/usr/tmp/hlfsd.dump.XXXXXX'
+ file to which Hlfsd will dump its internal password map when it
+ receives the 'SIGUSR1' signal. 'XXXXXX' will be replaced by a
+ random string generated by mktemp(3) or (the more secure)
+ mkstemp(3).
+
+ For discussion on other files used by Hlfsd, see *Note lostaltmail::,
+and *note lostaltmail.conf-sample::.
+
+
+File: am-utils.info, Node: Assorted Tools, Next: Examples, Prev: Hlfsd, Up: Top
+
+10 Assorted Tools
+*****************
+
+The following are additional utilities and scripts included with
+am-utils, and get installed.
+
+* Menu:
+
+* am-eject::
+* amd.conf-sample::
+* amd2ldif::
+* amd2sun::
+* automount2amd::
+* ctl-amd::
+* ctl-hlfsd::
+* fix-amd-map::
+* fixmount::
+* fixrmtab::
+* lostaltmail::
+* lostaltmail.conf-sample::
+* mk-amd-map::
+* pawd::
+* redhat-ctl-amd::
+* wait4amd::
+* wait4amd2die::
+* wire-test::
+
+
+File: am-utils.info, Node: am-eject, Next: amd.conf-sample, Prev: Assorted Tools, Up: Assorted Tools
+
+10.1 am-eject
+=============
+
+A shell script unmounts a floppy or CD-ROM that is automounted, and then
+attempts to eject the removable device.
+
+
+File: am-utils.info, Node: amd.conf-sample, Next: amd2ldif, Prev: am-eject, Up: Assorted Tools
+
+10.2 amd.conf-sample
+====================
+
+A sample Amd configuration file. *Note Amd Configuration File::.
+
+
+File: am-utils.info, Node: amd2ldif, Next: amd2sun, Prev: amd.conf-sample, Up: Assorted Tools
+
+10.3 amd2ldif
+=============
+
+A script to convert Amd maps to LDAP input files. Use it as follows:
+
+ amd2ldif mapname base < amd.mapfile > mapfile.ldif
+
+
+File: am-utils.info, Node: amd2sun, Next: automount2amd, Prev: amd2ldif, Up: Assorted Tools
+
+10.4 amd2sun
+============
+
+A script to convert Amd maps to Sun Automounter maps. Use it as follows
+
+ amd2sun < amd.mapfile > auto_mapfile
+
+
+File: am-utils.info, Node: automount2amd, Next: ctl-amd, Prev: amd2sun, Up: Assorted Tools
+
+10.5 automount2amd
+==================
+
+A script to convert old Sun Automounter maps to Amd maps.
+
+ Say you have the Sun automount file auto.foo, with these two lines:
+ home earth:/home
+ moon -ro,intr server:/proj/images
+ Running
+ automount2amd auto.foo > amd.foo
+
+ will produce the Amd map amd.foo with this content:
+
+ # generated by automount2amd on Sat Aug 14 17:59:32 US/Eastern 1999
+
+ /defaults \\
+ type:=nfs;opts:=rw,grpid,nosuid,utimeout=600
+
+ home \
+ host==earth;type:=link;fs:=/home \\
+ rhost:=earth;rfs:=/home
+
+ moon \
+ -addopts:=ro,intr \\
+ host==server;type:=link;fs:=/proj/images \\
+ rhost:=server;rfs:=/proj/images
+
+ This perl script will use the following /default entry
+ type:=nfs;opts:=rw,grpid,nosuid,utimeout=600
+ If you wish to override that, define the $DEFAULTS environment
+variable, or modify the script.
+
+ If you wish to generate Amd maps using the hostd (*note hostd
+Selector Variable::) Amd map syntax, then define the environment
+variable $DOMAIN or modify the script.
+
+ Note that automount2amd does not understand the syntax in newer Sun
+Automount maps, those used with autofs.
+
+
+File: am-utils.info, Node: ctl-amd, Next: ctl-hlfsd, Prev: automount2amd, Up: Assorted Tools
+
+10.6 ctl-amd
+============
+
+A script to start, stop, or restart Amd. Use it as follows:
+
+ctl-amd start
+ Start a new Amd process.
+ctl-amd stop
+ Stop the running Amd.
+ctl-amd restart
+ Stop the running Amd (if any), safely wait for it to terminate, and
+ then start a new process -- only if the previous one died cleanly.
+
+ *Note Run-time Administration::, for more details.
+
+
+File: am-utils.info, Node: ctl-hlfsd, Next: fix-amd-map, Prev: ctl-amd, Up: Assorted Tools
+
+10.7 ctl-hlfsd
+==============
+
+A script for controlling Hlfsd, much the same way 'ctl-amd' controls
+Amd. Use it as follows:
+
+ctl-hlfsd start
+ Start a new Hlfsd process.
+ctl-hlfsd stop
+ Stop the running Hlfsd.
+ctl-hlfsd restart
+ Stop the running Hlfsd (if any), wait for 10 seconds for it to
+ terminate, and then start a new process -- only if the previous one
+ died cleanly.
+
+ *Note Hlfsd::, for more details.
+
+
+File: am-utils.info, Node: fix-amd-map, Next: fixmount, Prev: ctl-hlfsd, Up: Assorted Tools
+
+10.8 fix-amd-map
+================
+
+Am-utils changed some of the syntax and default values of some
+variables. For example, the default value for '${os}' for Solaris 2.x
+(aka SunOS 5.x) systems used to be 'sos5', it is now more automatically
+generated from 'config.guess' and its value is 'sunos5'.
+
+ This script converts older Amd maps to new ones. Use it as follows:
+
+ fix-amd-map < old.map > new.map
+
+
+File: am-utils.info, Node: fixmount, Next: fixrmtab, Prev: fix-amd-map, Up: Assorted Tools
+
+10.9 fixmount
+=============
+
+'fixmount' is a variant of showmount(8) that can delete bogus mount
+entries in remote mountd(8) daemons. This is useful to cleanup
+otherwise ever-accumulating "junk". Use it for example:
+
+ fixmount -r host
+
+ See the online manual page for 'fixmount' for more details of its
+usage.
+
+
+File: am-utils.info, Node: fixrmtab, Next: lostaltmail, Prev: fixmount, Up: Assorted Tools
+
+10.10 fixrmtab
+==============
+
+A script to invalidate '/etc/rmtab' entries for hosts named. Also
+restart mountd for changes to take effect. Use it for example:
+
+ fixrmtab host1 host2 ...
+
+
+File: am-utils.info, Node: lostaltmail, Next: lostaltmail.conf-sample, Prev: fixrmtab, Up: Assorted Tools
+
+10.11 lostaltmail
+=================
+
+A script used with Hlfsd to resend any "lost" mail. Hlfsd redirects
+mail which cannot be written into the user's home directory to an
+alternate directory. This is useful to continue delivering mail, even
+if the user's file system was unavailable, full, or over quota. But,
+the mail which gets delivered to the alternate directory needs to be
+resent to its respective users. This is what the 'lostaltmail' script
+does.
+
+ Use it as follows:
+
+ lostaltmail
+
+ This script needs a configuration file 'lostaltmail.conf' set up with
+the right parameters to properly work. *Note Hlfsd::, for more details.
+
+
+File: am-utils.info, Node: lostaltmail.conf-sample, Next: mk-amd-map, Prev: lostaltmail, Up: Assorted Tools
+
+10.12 lostaltmail.conf-sample
+=============================
+
+This is a text file with configuration parameters needed for the
+'lostaltmail' script. The script includes comments explaining each of
+the configuration variables. See it for more information. Also *note
+Hlfsd:: for general information.
+
+
+File: am-utils.info, Node: mk-amd-map, Next: pawd, Prev: lostaltmail.conf-sample, Up: Assorted Tools
+
+10.13 mk-amd-map
+================
+
+This program converts a normal Amd map file into an ndbm database with
+the same prefix as the named file. Use it as follows:
+
+ mk-amd-map mapname
+
+
+File: am-utils.info, Node: pawd, Next: redhat-ctl-amd, Prev: mk-amd-map, Up: Assorted Tools
+
+10.14 pawd
+==========
+
+Pawd is used to print the current working directory, adjusted to reflect
+proper paths that can be reused to go through the automounter for the
+shortest possible path. In particular, the path printed back does not
+include any of Amd's local mount points. Using them is unsafe, because
+Amd may unmount managed file systems from the mount points, and thus
+including them in paths may not always find the files within.
+
+ Without any arguments, Pawd will print the automounter adjusted
+current working directory. With any number of arguments, it will print
+the adjusted path of each one of the arguments.
+
+
+File: am-utils.info, Node: redhat-ctl-amd, Next: wait4amd, Prev: pawd, Up: Assorted Tools
+
+10.15 redhat-ctl-amd
+====================
+
+This script is similar to ctl-amd (*note ctl-amd::) but is intended for
+Red Hat Linux systems. You can safely copy redhat-ctl-amd onto
+'/etc/rc.d/init.d/amd'. The script supplied by Am-utils is usually
+better than the one provided by Red Hat, because the Red Hat script does
+not correctly kill Amd processes: it is too quick to kill the wrong
+processes, leaving stale or hung mount points behind.
+
+
+File: am-utils.info, Node: wait4amd, Next: wait4amd2die, Prev: redhat-ctl-amd, Up: Assorted Tools
+
+10.16 wait4amd
+==============
+
+A script to wait for Amd to start on a particular host before performing
+an arbitrary command. The command is executed repeatedly, with 1 second
+intervals in between. You may interrupt the script using '^C' (or
+whatever keyboard sequence your terminal's 'intr' function is bound to).
+
+ Examples:
+
+wait4amd saturn amq -p -h saturn
+ When Amd is up on host 'saturn', get the process ID of that running
+ Amd.
+wait4amd pluto rlogin pluto
+ Remote login to host 'pluto' when Amd is up on that host. It is
+ generally necessary to wait for Amd to properly start and
+ initialize on a remote host before logging in to it, because
+ otherwise user home directories may not be accessible across the
+ network.
+wait4amd pluto
+ A short-hand version of the previous command, since the most useful
+ reason for this script is to login to a remote host. I use it very
+ often when testing out new versions of Amd, and need to reboot hung
+ hosts.
+
+
+File: am-utils.info, Node: wait4amd2die, Next: wire-test, Prev: wait4amd, Up: Assorted Tools
+
+10.17 wait4amd2die
+==================
+
+This script is used internally by 'ctl-amd' when used to restart Amd.
+It waits for Amd to terminate. If it detected that Amd terminated
+cleanly, this script will return an exist status of zero. Otherwise, it
+will return a non-zero exit status.
+
+ The script tests for Amd's existence once every 5 seconds, six times,
+for a total of 30 seconds. It will return a zero exist status as soon
+as it detects that Amd dies.
+
+
+File: am-utils.info, Node: wire-test, Prev: wait4amd2die, Up: Assorted Tools
+
+10.18 wire-test
+===============
+
+A simple program to test if some of the most basic networking functions
+in am-util's library 'libamu' work. It also tests the combination of
+NFS protocol and version number that are supported from the current
+host, to a remote one.
+
+ For example, in this test a machine which only supports NFS Version 2
+is contacting a remote host that can support the same version, but using
+both UDP and TCP. If no host name is specified, 'wire-test' will try
+'localhost'.
+
+ $ wire-test moisil
+ Network name is "mcl-lab-net.cs.columbia.edu"
+ Network number is "128.59.13"
+ Network name is "old-net.cs.columbia.edu"
+ Network number is "128.59.16"
+ My IP address is 0x7f000001.
+ NFS Version and protocol tests to host "moisil"...
+ testing vers=2, proto="udp" -> found version 2.
+ testing vers=3, proto="udp" -> failed!
+ testing vers=2, proto="tcp" -> found version 2.
+ testing vers=3, proto="tcp" -> failed!
+
+
+File: am-utils.info, Node: Examples, Next: Internals, Prev: Assorted Tools, Up: Top
+
+11 Examples
+***********
+
+* Menu:
+
+* User Filesystems::
+* Home Directories::
+* Architecture Sharing::
+* Wildcard Names::
+* rwho servers::
+* /vol::
+* /defaults with selectors::
+* /tftpboot in a chroot-ed environment::
+
+
+File: am-utils.info, Node: User Filesystems, Next: Home Directories, Prev: Examples, Up: Examples
+
+11.1 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
+/home/machine.
+
+ Typically, the '/etc/fstab' file contained a long list of entries
+such as:
+
+ machine:/home/machine /home/machine nfs ...
+
+ 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, '/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 minimizing 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 'localhost' which is used for users such as the
+operator ('opr') who have a home directory on most machine as
+'/home/localhost/opr'.
+
+ /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}
+ ...
+
+ 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. Amd is
+started with the following command
+
+ amd /home amd.home
+
+ Note that when mounting a remote filesystem, the "automounted" mount
+point is referenced, so that the filesystem will be mounted if it is not
+yet (at the time the remote 'mountd' obtains the file handle).
+
+
+File: am-utils.info, Node: Home Directories, Next: Architecture Sharing, Prev: User Filesystems, Up: Examples
+
+11.2 Home Directories
+=====================
+
+One convention for home directories is to locate them in '/homes' so
+user 'jsp''s home directory is '/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:
+
+ amd /homes amd.homes
+
+ where the map 'amd.homes' contained the entries:
+
+ /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
+
+ Whenever a login name is accessed in '/homes' a symbolic link appears
+pointing to the real location of that user's home directory. In this
+example, '/homes/jsp' would appear to be a symbolic link pointing to
+'/home/charm/jsp'. Of course, '/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 '/homes' map. The
+required map is simple, but long, and its creation is best automated.
+The entry for 'jsp' could be:
+
+ jsp -sublink:=${key};rfs:=/home/charm \
+ host==charm;type:=ufs;dev:=/dev/xd0g \
+ host!=charm;type:=nfs;rhost:=charm
+
+ This map can become quite big if it contains a large number of
+entries. By combining two other features of Amd it can be greatly
+simplified.
+
+ First the UFS partitions should be mounted under the control of
+'/etc/fstab', taking care that they are mounted in the same place that
+Amd would have automounted them. In most cases this would be something
+like '/a/"host"/home/"host"' and '/etc/fstab' on host 'charm' would have
+a line:
+
+ /dev/xy0g /a/charm/home/charm 4.2 rw,nosuid,grpid 1 5
+
+ The map can then be changed to:
+
+ /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
+
+ This map operates as usual on a remote machine (ie '${host}' not
+equal to '${rhost}'). On the machine where the filesystem is stored (ie
+'${host}' equal to '${rhost}'), Amd will construct a local filesystem
+mount point which corresponds to the name of the locally mounted UFS
+partition. If Amd is started with the '-r' option then instead of
+attempting an NFS mount, Amd will simply inherit the UFS mount (*note
+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.
+
+
+File: am-utils.info, Node: Architecture Sharing, Next: Wildcard Names, Prev: Home Directories, Up: Examples
+
+11.3 Architecture Sharing
+=========================
+
+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 'fserver' in the example):
+
+ local/tex
+ local/tex/fonts
+ local/tex/lib
+ local/tex/bin
+ local/tex/bin/sun3
+ local/tex/bin/sun4
+ local/tex/bin/hp9000
+ ...
+
+ In this example, the subdirectories of 'local/tex/bin' should be
+hidden when accessed via the automount point (conventionally '/vol'). A
+mount-map for '/vol' to achieve this would look like:
+
+ /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
+
+ When '/vol/tex/bin' is referenced, the current machine architecture
+is automatically appended to the path by the '${sublink}' variable.
+This means that users can have '/vol/tex/bin' in their 'PATH' without
+concern for architecture dependencies.
+
+
+File: am-utils.info, Node: Wildcard Names, Next: rwho servers, Prev: Architecture Sharing, Up: Examples
+
+11.4 Wildcard Names & Replicated Servers
+========================================
+
+By using the wildcard facility, Amd can "overlay" an existing directory
+with additional entries. The system files are usually mounted under
+'/usr'. If instead, Amd is mounted on '/usr', additional names can be
+overlayed to augment or replace names in the "master" '/usr'. A map to
+do this would have the form:
+
+ 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
+
+ Note that the assignment to '${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
+'/usr/local' or '/usr/share' to another automount point.
+
+ In this example, it is assumed that the '/usr' files are replicated
+on three fileservers: 'fserv1', 'fserv2' and 'fserv3'. For any
+references other than to 'local' and 'share' one of the servers is used
+and a symbolic link to ${autodir}/${rhost}/export/exec/${arch}/whatever
+is returned once an appropriate filesystem has been mounted.
+
+
+File: am-utils.info, Node: rwho servers, Next: /vol, Prev: Wildcard Names, Up: Examples
+
+11.5 'rwho' servers
+===================
+
+The '/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:
+
+ /defaults type:=nfs
+ usr/spool/rwho -byte==little;rfs:=/usr/spool/rwho \
+ rhost:=vaxA rhost:=vaxB \
+ || -rfs:=/usr/spool/rwho \
+ rhost:=sun4 rhost:=hp300
+
+
+File: am-utils.info, Node: /vol, Next: /defaults with selectors, Prev: rwho servers, Up: Examples
+
+11.6 '/vol'
+===========
+
+'/vol' is used as a catch-all for volumes which do not have other
+conventional names.
+
+ Below is part of the '/vol' map for the domain 'doc.ic.ac.uk'. The
+'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
+'/vol/r+d/{bin,ucb}' in their path.
+
+ The main tree resides on one host 'gould.doc.ic.ac.uk', which has
+different 'bin', 'etc', 'lib' and 'ucb' sub-directories for each machine
+architecture. For example, '/vol/r+d/bin' for a Sun-4 would be stored
+in the sub-directory 'bin/sun4' of the filesystem '/usr/r+d'. When it
+was accessed a symbolic link pointing to '/a/gould/usr/r+d/bin/sun4'
+would be returned.
+
+ /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
+
+
+File: am-utils.info, Node: /defaults with selectors, Next: /tftpboot in a chroot-ed environment, Prev: /vol, Up: Examples
+
+11.7 '/defaults' with selectors
+===============================
+
+It is sometimes useful to have different defaults for a given map. To
+achieve this, the '/defaults' entry must be able to process normal
+selectors. This feature is turned on by setting 'selectors_in_defaults
+= yes' in the 'amd.conf' file. *Note selectors_in_defaults Parameter::.
+
+ In this example, I set different default NFS mount options for hosts
+which are running over a slower network link. By setting a smaller size
+for the NFS read and write buffer sizes, you can greatly improve remote
+file service performance.
+
+ /defaults \
+ wire==slip-net;opts:=rw,intr,rsize=1024,wsize=1024,timeo=20,retrans=10 \
+ wire!=slip-net;opts:=rw,intr
+
+
+File: am-utils.info, Node: /tftpboot in a chroot-ed environment, Prev: /defaults with selectors, Up: Examples
+
+11.8 '/tftpboot' in a chroot-ed environment
+===========================================
+
+In this complex example, we attempt to run an Amd process _inside_ a
+chroot-ed environment. 'tftpd' (Trivial FTP) is used to trivially
+retrieve files used to boot X-Terminals, Network Printers, Network
+routers, diskless workstations, and other such devices. For security
+reasons, 'tftpd' (and also 'ftpd') processes are run using the chroot(2)
+system call. This provides an environment for these processes, where
+access to any files outside the directory where the chroot-ed process
+runs is denied.
+
+ For example, if you start 'tftpd' on your system with
+
+ chroot /tftpboot /usr/sbin/tftpd
+
+then the 'tftpd' process will not be able to access any files outside
+'/tftpboot'. This ensures that no one can retrieve files such as
+'/etc/passwd' and run password crackers on it.
+
+ Since the TFTP service works by broadcast, it is necessary to have at
+least one TFTP server running on each subnet. If you have lots of files
+that you need to make available for 'tftp', and many subnets, it could
+take significant amounts of disk space on each host serving them.
+
+ A solution we implemented at Columbia University was to have every
+host run 'tftpd', but have those servers retrieve the boot files from
+two replicated servers. Those replicated servers have special
+partitions dedicated to the many network boot files.
+
+ We start Amd as follows:
+
+ amd /tftpboot/.amd amd.tftpboot
+
+ That is, Amd is serving the directory '/tftpboot/.amd'. The 'tftp'
+server runs inside '/tftpboot' and is chroot-ed in that directory too.
+The 'amd.tftpboot' map looks like:
+
+ #
+ # Amd /tftpboot directory -> host map
+ #
+
+ /defaults opts:=nosuid,ro,intr,soft;fs:=/tftpboot/import;type:=nfs
+
+ tp host==lol;rfs:=/n/lol/import/tftpboot;type:=lofs \
+ host==ober;rfs:=/n/ober/misc/win/tftpboot;type:=lofs \
+ rhost:=ober;rfs:=/n/ober/misc/win/tftpboot \
+ rhost:=lol;rfs:=/n/lol/import/tftpboot
+
+ To help understand this example, I list a few of the file entries
+that are created inside '/tftpboot':
+
+ $ ls -la /tftpboot
+ dr-xr-xr-x 2 root 512 Aug 30 23:11 .amd
+ drwxrwsr-x 12 root 512 Aug 30 08:00 import
+ lrwxrwxrwx 1 root 33 Feb 27 1997 adminpr.cfg -> ./.amd/tp/hplj/adminpr.cfg
+ lrwxrwxrwx 1 root 22 Dec 5 1996 tekxp -> ./.amd/tp/xterms/tekxp
+ lrwxrwxrwx 1 root 1 Dec 5 1996 tftpboot -> .
+
+ Here is an explanation of each of the entries listed above:
+
+'.amd'
+ This is the Amd mount point. Note that you do not need to run a
+ separate Amd process for the TFTP service. The chroot(2) system
+ call only protects against file access, but the same process can
+ still serve files and directories inside and outside the chroot-ed
+ environment, because Amd itself was not run in chroot-ed mode.
+
+'import'
+ This is the mount point where Amd will mount the directories
+ containing the boot files. The map is designed so that remote
+ directories will be NFS mounted (even if they are already mounted
+ elsewhere), and local directories are loopback mounted (since they
+ are not accessible outside the chroot-ed '/tftpboot' directory).
+
+'adminpr.cfg'
+'tekxp'
+ Two manually created symbolic links to directories _inside_ the
+ Amd-managed directory. The crossing of the component 'tp' will
+ cause Amd to automount one of the remote replicas. Once crossed,
+ access to files inside proceeds as usual. The 'adminpr.cfg' is a
+ configuration file for an HP Laser-Jet 4si printer, and the 'tekxp'
+ is a directory for Tektronix X-Terminal boot files.
+
+'tftpboot'
+ This innocent looking symlink is important. Usually, when devices
+ boot via the TFTP service, they perform the 'get file' command to
+ retrieve FILE. However, some devices assume that 'tftpd' does not
+ run in a chroot-ed environment, but rather "unprotected", and thus
+ use a full pathname for files to retrieve, as in 'get
+ /tftpboot/file'. This symlink effectively strips out the leading
+ '/tftpboot/'.
+
+
+File: am-utils.info, Node: Internals, Next: Acknowledgments & Trademarks, Prev: Examples, Up: Top
+
+12 Internals
+************
+
+Note that there are more error and logging messages possible than are
+listed here. Most of them are self-explanatory. Refer to the program
+sources for more details on the rest.
+
+* Menu:
+
+* Log Messages::
+
+
+File: am-utils.info, Node: Log Messages, Prev: Internals, Up: Internals
+
+12.1 Log Messages
+=================
+
+In the following sections a brief explanation is given of some of the
+log messages made by Amd. Where the message is in 'typewriter' font, it
+corresponds exactly to the message produced by Amd. Words in "italic"
+are replaced by an appropriate string. Variables, '${var}', indicate
+that the value of the appropriate variable is output.
+
+ Log messages are either sent directly to a file, or logged via the
+syslog(3) mechanism. *Note log_file Parameter::. In either case,
+entries in the file are of the form:
+ date-string hostname amd[pid] message
+
+* Menu:
+
+* Fatal errors::
+* Info messages::
+
+
+File: am-utils.info, Node: Fatal errors, Next: Info messages, Prev: Log Messages, Up: Log Messages
+
+12.1.1 Fatal errors
+-------------------
+
+Amd attempts to deal with unusual events. Whenever it is not possible
+to deal with such an error, Amd will log an appropriate message and, if
+it cannot possibly continue, will either exit or abort. These messages
+are selected by '-x fatal' on the command line. When syslog(3) is being
+used, they are logged with level 'LOG_FATAL'. Even if Amd continues to
+operate it is likely to remain in a precarious state and should be
+restarted at the earliest opportunity.
+
+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 error
+ "should never happen".
+
+Can't bind to domain "NIS-domain"
+ A specific NIS domain was requested on the command line, but no
+ server for that domain is available on the local net.
+
+Can't determine IP address of this host (hostname)
+ When Amd starts it determines its own IP address. If this lookup
+ fails then Amd cannot continue. The hostname it looks up is that
+ obtained returned by gethostname(2) system call.
+
+Can't find root file handle for automount point
+ 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".
+
+Must be root to mount filesystems (euid = euid)
+ To prevent embarrassment, 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.
+
+No work to do - quitting
+ No automount points were given on the command line and so there is
+ no work to do.
+
+Out of memory
+ While attempting to malloc some memory, the memory space available
+ to Amd was exhausted. This is an unrecoverable error.
+
+Out of memory in realloc
+ While attempting to realloc some memory, the memory space available
+ to Amd was exhausted. This is an unrecoverable error.
+
+cannot create rpc/udp service
+ Either the NFS or AMQ endpoint could not be created.
+
+gethostname: description
+ The gethostname(2) system call failed during startup.
+
+host name is not set
+ The gethostname(2) system call returned a zero length host name.
+ This can happen if Amd is started in single user mode just after
+ booting the system.
+
+ifs_match called!
+ An internal error occurred while restarting a pre-mounted
+ filesystem. This error "should never happen".
+
+mount_afs: description
+ An error occurred while Amd was mounting itself.
+
+run_rpc failed
+ Somehow the main NFS server loop failed. This error "should never
+ happen".
+
+unable to free rpc arguments in amqprog_1
+ The incoming arguments to the AMQ server could not be free'ed.
+
+unable to free rpc arguments in nfs_program_1
+ The incoming arguments to the NFS server could not be free'ed.
+
+unable to register (AMQ_PROGRAM, AMQ_VERSION, udp)
+ The AMQ server could not be registered with the local portmapper or
+ the internal RPC dispatcher.
+
+unable to register (NFS_PROGRAM, NFS_VERSION, 0)
+ The NFS server could not be registered with the internal RPC
+ dispatcher.
+
+ XXX: This section needs to be updated
+
+
+File: am-utils.info, Node: Info messages, Prev: Fatal errors, Up: Log Messages
+
+12.1.2 Info messages
+--------------------
+
+Amd generates information messages to record state changes. These
+messages are selected by '-x info' on the command line. When syslog(3)
+is being used, they are logged with level 'LOG_INFO'.
+
+ The messages listed below can be generated and are in a format
+suitable for simple statistical analysis. "mount-info" is the string
+that is displayed by "Amq" in its mount information column and placed in
+the system mount table.
+
+"${path}" forcibly timed out
+ An automount point has been timed out by the Amq command.
+
+"${path}" has timed out
+ No access to the automount point has been made within the timeout
+ period.
+
+Filehandle denied for "${rhost}:${rfs}"
+ The mount daemon refused to return a file handle for the requested
+ filesystem.
+
+Filehandle error for "${rhost}:${rfs}": description
+ The mount daemon gave some other error for the requested
+ filesystem.
+
+Finishing with status exit-status
+ Amd is about to exit with the given exit status.
+
+Re-synchronizing cache for map ${map}
+ The named map has been modified and the internal cache is being
+ re-synchronized.
+
+file server ${rhost} is down - timeout of "${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.
+
+file server ${rhost} type nfs is down
+ An NFS file server that was previously up is now down.
+
+file server ${rhost} type nfs is up
+ An NFS file server that was previously down is now up.
+
+file server ${rhost} type nfs starts down
+ A new NFS file server has been referenced and is known to be down.
+
+file server ${rhost} type nfs starts up
+ A new NFS file server has been referenced and is known to be up.
+
+mount of "${path}" on ${fs} timed out
+ Attempts to mount a filesystem for the given automount point have
+ failed to complete within 30 seconds.
+
+mount-info mounted fstype ${type} on ${fs}
+ A new file system has been mounted.
+
+mount-info restarted fstype ${type} on ${fs}
+ Amd is using a pre-mounted filesystem to satisfy a mount request.
+
+mount-info unmounted fstype ${type} from ${fs}
+ A file system has been unmounted.
+
+mount-info unmounted fstype ${type} from ${fs} link ${fs}/${sublink}
+ A file system of which only a sub-directory was in use has been
+ unmounted.
+
+restarting mount-info on ${fs}
+ A pre-mounted file system has been noted.
+
+ XXX: This section needs to be updated
+
+
+File: am-utils.info, Node: Acknowledgments & Trademarks, Next: Index, Prev: Internals, Up: Top
+
+Acknowledgments & Trademarks
+****************************
+
+Many thanks to the Am-Utils Users mailing list through the months
+developing am-utils. These members have contributed to the discussions,
+ideas, code and documentation, and subjected their systems to alpha
+quality code. Special thanks go to those authors
+(http://www.am-utils.org/docs/am-utils/AUTHORS.txt) who have submitted
+patches, and especially to the maintainers:
+
+ * Erez Zadok (http://www.cs.sunysb.edu/~ezk)
+ * Ion Badulescu <ionut AT badula.org>
+ * Rainer Orth <ro AT techfak.uni-bielefeld.de>
+ * Nick Williams <nick.williams AT morganstanley.com>
+
+ Thanks to the Formal Methods Group at Imperial College for suffering
+patiently while Amd was being developed on their machines.
+
+ Thanks to the many people who have helped with the development of
+Amd, especially Piete Brooks at the Cambridge University Computing Lab
+for many hours of testing, experimentation and discussion.
+
+ Thanks to the older Amd Workers <amd-workers AT
+majordomo.glue.umd.edu> mailing list (now defunct) members for many
+suggestions and bug reports to Amd.
+
+ * DEC, VAX and Ultrix are registered trademarks of Digital Equipment
+ Corporation.
+ * AIX and IBM are registered trademarks of International Business
+ Machines Corporation.
+ * Sun, NFS and SunOS are registered trademarks of Sun Microsystems,
+ Inc.
+ * UNIX is a registered trademark in the USA and other countries,
+ exclusively licensed through X/Open Company, Ltd.
+ * All other registered trademarks are owned by their respective
+ owners.
+
+
+File: am-utils.info, Node: Index, Prev: Acknowledgments & Trademarks, Up: Top
+
+Index
+*****
+
+
+* Menu:
+
+* !exists, boolean mount selector: exists Selector Function.
+ (line 6)
+* !false, boolean mount selector: false Selector Function.
+ (line 6)
+* !in_network, boolean mount selector: in_network Selector Function.
+ (line 6)
+* !netgrp, boolean mount selector: netgrp Selector Function.
+ (line 6)
+* !netgrpd, boolean mount selector: netgrpd Selector Function.
+ (line 6)
+* !true, boolean mount selector: true Selector Function.
+ (line 6)
+* !xhost, boolean mount selector: xhost Selector Function.
+ (line 6)
+* /defaults with selectors: /defaults with selectors.
+ (line 6)
+* /etc/passwd maps: Password maps. (line 6)
+* /etc/rc.local additions: Starting Amd. (line 6)
+* /tftpboot in a chroot-ed environment: /tftpboot in a chroot-ed environment.
+ (line 6)
+* /vol: /vol. (line 6)
+* Additions to /etc/rc.local: Starting Amd. (line 6)
+* addopts, mount option: addopts Option. (line 6)
+* Aliased hostnames: -n Option. (line 6)
+* Alternate locations: Mounting a Volume. (line 6)
+* am-eject: am-eject. (line 6)
+* Am-utils book: AddInfo. (line 79)
+* Amd book: AddInfo. (line 79)
+* Amd command line options: Amd Command Line Options.
+ (line 6)
+* Amd configuration file: -F Option. (line 6)
+* Amd Configuration File: Amd Configuration File.
+ (line 6)
+* Amd configuration file; specifying name: -F Option. (line 6)
+* Amd's PID: Amq -p option. (line 6)
+* Amd's process ID: Amq -p option. (line 6)
+* amd.conf: Amd Configuration File.
+ (line 6)
+* amd.conf common parameters: Common Parameters. (line 6)
+* amd.conf examples: amd.conf Examples. (line 6)
+* amd.conf file: -F Option. (line 6)
+* amd.conf file format: File Format. (line 6)
+* amd.conf global parameters: Global Parameters. (line 6)
+* amd.conf global section: The Global Section. (line 6)
+* amd.conf regular map parameters: Regular Map Parameters.
+ (line 6)
+* amd.conf regular map sections: Regular Map Sections.
+ (line 6)
+* amd.conf-sample: amd.conf-sample. (line 6)
+* amd2ldif: amd2ldif. (line 6)
+* amd2sun: amd2sun. (line 6)
+* Amq command: Run-time Administration.
+ (line 6)
+* arch Parameter: arch Parameter. (line 6)
+* arch Selector Variable: arch Selector Variable.
+ (line 6)
+* arch, FSinfo host attribute: FSinfo arch Option. (line 6)
+* arch, mount selector: arch Selector Variable.
+ (line 6)
+* Architecture dependent volumes: Architecture Sharing.
+ (line 6)
+* Architecture sharing: Architecture Sharing.
+ (line 6)
+* Architecture specific mounts: rwho servers. (line 6)
+* Assorted Tools: Assorted Tools. (line 6)
+* Atomic NFS mounts: Network Filesystem Group.
+ (line 6)
+* auto, filesystem type: Automount Filesystem.
+ (line 6)
+* autodir Selector Variable: autodir Selector Variable.
+ (line 6)
+* autodir, mount selector: autodir Selector Variable.
+ (line 6)
+* autofs_use_lofs Parameter: autofs_use_lofs Parameter.
+ (line 6)
+* Automatic generation of user maps: Password maps. (line 6)
+* Automount directory: -a Option. (line 6)
+* Automount filesystem: Automount Filesystem.
+ (line 6)
+* automount2amd: automount2amd. (line 6)
+* Automounter book: AddInfo. (line 79)
+* Automounter configuration maps: Mount Maps. (line 6)
+* Automounter fundamentals: Fundamentals. (line 6)
+* auto_attrcache Parameter: auto_attrcache Parameter.
+ (line 6)
+* auto_dir Parameter: auto_dir Parameter. (line 6)
+* Background mounts: Mounting a Volume. (line 6)
+* Background to Mail Delivery: Background to Mail Delivery.
+ (line 6)
+* Binding names to filesystems: Volume Binding. (line 6)
+* book: AddInfo. (line 79)
+* bootparams, FSinfo prefix: -b FSinfo Option. (line 6)
+* browsable_dirs Parameter: browsable_dirs Parameter.
+ (line 6)
+* Bug reports: AddInfo. (line 9)
+* byte Selector Variable: byte Selector Variable.
+ (line 6)
+* byte, mount selector: byte Selector Variable.
+ (line 6)
+* Cache interval: -c Option. (line 6)
+* cache, mount map option: Automount Filesystem.
+ (line 15)
+* cachedir, mount option: Caching Filesystem. (line 13)
+* cachefs, filesystem type: Caching Filesystem. (line 6)
+* cache_duration Parameter: cache_duration Parameter.
+ (line 6)
+* Caching Filesystem: Caching Filesystem. (line 6)
+* Catch-all mount point: /vol. (line 6)
+* CD-ROM Filesystem: CD-ROM Filesystem. (line 6)
+* CD-ROM Filesystem <1>: UDF Filesystem. (line 6)
+* cdfs, filesystem type: CD-ROM Filesystem. (line 6)
+* Centralized Mail Spool Directory: Centralized Mail Spool Directory.
+ (line 6)
+* Changing the interval before a filesystem times out: -c Option.
+ (line 6)
+* chroot; /tftpboot example: /tftpboot in a chroot-ed environment.
+ (line 6)
+* Cluster names: -C Option. (line 6)
+* cluster Parameter: cluster Parameter. (line 6)
+* cluster Selector Variable: cluster Selector Variable.
+ (line 6)
+* cluster, FSinfo host attribute: FSinfo cluster Option.
+ (line 6)
+* cluster, mount selector: cluster Selector Variable.
+ (line 6)
+* CNAMEs: xhost Selector Function.
+ (line 6)
+* Command line options, Amd: Amd Command Line Options.
+ (line 6)
+* Command line options, FSinfo: FSinfo Command Line Options.
+ (line 6)
+* config, FSinfo host attribute: FSinfo config Option.
+ (line 6)
+* Configuration file; tags: -T Option. (line 6)
+* Configuration map types: Map Types. (line 6)
+* Controlling Amd: Controlling Amd. (line 6)
+* Controlling Hlfsd: Controlling Hlfsd. (line 6)
+* Creating a pid file: -p Option. (line 6)
+* ctl-amd: ctl-amd. (line 6)
+* ctl-amd <1>: Starting Amd. (line 6)
+* ctl-hlfsd: Controlling Hlfsd. (line 6)
+* ctl-hlfsd <1>: ctl-hlfsd. (line 6)
+* Debug options: -D Option. (line 6)
+* Debugging a new Amd configuration: Amq -P option. (line 6)
+* debugging hesiod resolver service: -D Option. (line 35)
+* Debugging options via Amq: Other Amq options. (line 6)
+* debug_mtab_file Parameter: debug_mtab_file Parameter.
+ (line 6)
+* debug_options Parameter: debug_options Parameter.
+ (line 6)
+* Defining a host, FSinfo: FSinfo host definitions.
+ (line 6)
+* Defining an Amd mount map, FSinfo: FSinfo automount definitions.
+ (line 6)
+* Defining host attributes, FSinfo: FSinfo host attributes.
+ (line 6)
+* delay, mount option: delay Option. (line 6)
+* Delaying mounts from specific locations: delay Option. (line 6)
+* Determining the map type: Map Types. (line 6)
+* dev, mount option: Unix Filesystem. (line 12)
+* dev, mount option <1>: CD-ROM Filesystem. (line 11)
+* dev, mount option <2>: UDF Filesystem. (line 11)
+* dev, mount option <3>: Floppy Filesystem. (line 11)
+* Direct automount filesystem: Direct Automount Filesystem.
+ (line 6)
+* direct, filesystem type: Direct Automount Filesystem.
+ (line 6)
+* Discovering version information: -v Option. (line 6)
+* Discovering what is going on at run-time: Controlling Amd. (line 6)
+* Disk filesystems: Unix Filesystem. (line 6)
+* dismount_interval Parameter: dismount_interval Parameter.
+ (line 6)
+* Displaying brief help: -H Option. (line 6)
+* Displaying brief help <1>: Amq -H option. (line 6)
+* Displaying the process id: -p Option. (line 6)
+* Distributed Mail Spool Service: Distributed Mail Spool Service.
+ (line 6)
+* dollar Selector Variable: dollar Selector Variable.
+ (line 6)
+* Domain name: -d Option. (line 6)
+* domain Selector Variable: domain Selector Variable.
+ (line 6)
+* Domain stripping: Variable Expansion. (line 6)
+* domain, mount selector: domain Selector Variable.
+ (line 6)
+* Domainname operators: Variable Expansion. (line 6)
+* domain_strip Parameter: domain_strip Parameter.
+ (line 6)
+* dumpset, FSinfo filesystems option: FSinfo dumpset Option.
+ (line 6)
+* dumpset, FSinfo prefix: -d FSinfo Option. (line 6)
+* Duplicated volumes: Volume Naming. (line 6)
+* EFS: Unix Filesystem. (line 6)
+* efs, filesystem type: Unix Filesystem. (line 6)
+* Environment variables: Variable Expansion. (line 6)
+* Error filesystem: Error Filesystem. (line 6)
+* error, filesystem type: Error Filesystem. (line 6)
+* Example of architecture specific mounts: rwho servers. (line 6)
+* Example of mounting home directories: Home Directories. (line 6)
+* Executable maps: Executable maps. (line 6)
+* exec_map_timeout Parameter: exec_map_timeout Parameter.
+ (line 6)
+* exists Selector Function: exists Selector Function.
+ (line 6)
+* exists, boolean mount selector: exists Selector Function.
+ (line 6)
+* export, FSinfo special fstype: FSinfo fstype Option.
+ (line 6)
+* exportfs, FSinfo mount option: FSinfo mount Option. (line 6)
+* exports, FSinfo prefix: -e FSinfo Option. (line 6)
+* false Selector Function: false Selector Function.
+ (line 6)
+* false, boolean mount selector: false Selector Function.
+ (line 6)
+* File map syntactic conventions: File maps. (line 6)
+* File maps: File maps. (line 6)
+* Fileserver: Filesystems and Volumes.
+ (line 6)
+* Filesystem: Filesystems and Volumes.
+ (line 6)
+* Filesystem info package: FSinfo. (line 6)
+* Filesystem type; auto: Automount Filesystem.
+ (line 6)
+* Filesystem type; cachefs: Caching Filesystem. (line 6)
+* Filesystem type; cdfs: CD-ROM Filesystem. (line 6)
+* Filesystem type; direct: Direct Automount Filesystem.
+ (line 6)
+* Filesystem type; efs: Unix Filesystem. (line 6)
+* Filesystem type; error: Error Filesystem. (line 6)
+* Filesystem type; host: Network Host Filesystem.
+ (line 6)
+* Filesystem type; inherit: Inheritance Filesystem.
+ (line 6)
+* Filesystem type; link: Symbolic Link Filesystem.
+ (line 6)
+* Filesystem type; linkx: Symbolic Link Filesystem II.
+ (line 6)
+* Filesystem type; lofs: Loopback Filesystem. (line 6)
+* Filesystem type; mfs: Memory/RAM Filesystem.
+ (line 6)
+* Filesystem type; nfs: Network Filesystem. (line 6)
+* Filesystem type; nfsl: NFS-Link Filesystem. (line 6)
+* Filesystem type; nfsx: Network Filesystem Group.
+ (line 6)
+* Filesystem type; nullfs: Null Filesystem. (line 6)
+* Filesystem type; pcfs: Floppy Filesystem. (line 6)
+* Filesystem type; program: Program Filesystem. (line 6)
+* Filesystem type; root: Root Filesystem. (line 6)
+* Filesystem type; tfs: Translucent Filesystem.
+ (line 6)
+* Filesystem type; tmpfs: Shared Memory+Swap Filesystem.
+ (line 6)
+* Filesystem type; toplvl: Top-level Filesystem.
+ (line 6)
+* Filesystem type; udf: UDF Filesystem. (line 6)
+* Filesystem type; ufs: Unix Filesystem. (line 6)
+* Filesystem type; umapfs: User ID Mapping Filesystem.
+ (line 6)
+* Filesystem type; union: Union Filesystem. (line 6)
+* Filesystem type; xfs: Unix Filesystem. (line 6)
+* Filesystem types: Filesystem Types. (line 6)
+* fix-amd-map: fix-amd-map. (line 6)
+* fixmount: fixmount. (line 6)
+* fixrmtab: fixrmtab. (line 6)
+* Flat file maps: File maps. (line 6)
+* Floppy Filesystem: Floppy Filesystem. (line 6)
+* Flushing the map cache: Amq -f option. (line 6)
+* forced_unmounts Parameter: forced_unmounts Parameter.
+ (line 6)
+* Forcing Amq to use a TCP transport: Amq -T option. (line 6)
+* Forcing Amq to use a UDP transport: Amq -U option. (line 6)
+* Forcing filesystem to time out: Amq -u option. (line 6)
+* freq, FSinfo filesystems option: FSinfo freq Option. (line 6)
+* fs, mount option: fs Option. (line 6)
+* FSinfo: FSinfo. (line 6)
+* FSinfo arch host attribute: FSinfo arch Option. (line 6)
+* FSinfo automount definitions: FSinfo automount definitions.
+ (line 6)
+* FSinfo cluster host attribute: FSinfo cluster Option.
+ (line 6)
+* FSinfo command line options: FSinfo Command Line Options.
+ (line 6)
+* FSinfo config host attribute: FSinfo config Option.
+ (line 6)
+* FSinfo dumpset filesystems option: FSinfo dumpset Option.
+ (line 6)
+* FSinfo error messages: FSinfo errors. (line 6)
+* FSinfo filesystems: FSinfo filesystems. (line 6)
+* FSinfo freq filesystems option: FSinfo freq Option. (line 6)
+* FSinfo fstype filesystems option: FSinfo fstype Option.
+ (line 6)
+* FSinfo grammar: FSinfo Grammar. (line 6)
+* FSinfo host attributes: FSinfo host attributes.
+ (line 6)
+* FSinfo host definitions: FSinfo host definitions.
+ (line 6)
+* FSinfo log filesystems option: FSinfo log Option. (line 6)
+* FSinfo mount filesystems option: FSinfo mount Option. (line 6)
+* FSinfo opts filesystems option: FSinfo opts Option. (line 6)
+* FSinfo os host attribute: FSinfo os Option. (line 6)
+* FSinfo overview: FSinfo Overview. (line 6)
+* FSinfo passno filesystems option: FSinfo passno Option.
+ (line 6)
+* FSinfo static mounts: FSinfo static mounts.
+ (line 6)
+* fstab, FSinfo prefix: -f FSinfo Option. (line 6)
+* fstype, FSinfo filesystems option: FSinfo fstype Option.
+ (line 6)
+* fully_qualified_hosts Parameter: fully_qualified_hosts Parameter.
+ (line 6)
+* full_os Parameter: full_os Parameter. (line 6)
+* full_os Selector Variable: full_os Selector Variable.
+ (line 6)
+* full_os, mount selector: full_os Selector Variable.
+ (line 6)
+* Generic volume name: /vol. (line 6)
+* Getting Additional Information: AddInfo. (line 5)
+* Getting real working directory: Amq -w option. (line 6)
+* gid Selector Variable: gid Selector Variable.
+ (line 6)
+* gid, mount selector: gid Selector Variable.
+ (line 6)
+* Global statistics: Amq -s option. (line 6)
+* Grammar, FSinfo: FSinfo Grammar. (line 6)
+* Help; showing from Amd: -H Option. (line 6)
+* Help; showing from Amq: Amq -H option. (line 6)
+* Hesiod maps: Hesiod maps. (line 6)
+* Hesiod; turning on RES_DEBUG: -D Option. (line 35)
+* hesiod_base Parameter: hesiod_base Parameter.
+ (line 6)
+* History: History. (line 6)
+* Hlfsd: Hlfsd. (line 6)
+* Hlfsd Files: Hlfsd Files. (line 6)
+* Hlfsd Options: Hlfsd Options. (line 6)
+* Hlfsd; background: Background to Mail Delivery.
+ (line 6)
+* Hlfsd; controlling: Controlling Hlfsd. (line 6)
+* Hlfsd; Files: Hlfsd Files. (line 6)
+* Hlfsd; introduction: Introduction to Hlfsd.
+ (line 6)
+* Hlfsd; Options: Hlfsd Options. (line 6)
+* Hlfsd; using: Using Hlfsd. (line 6)
+* Hlfsd; Why Deliver Into the Home Directory?: Why Deliver Into the Home Directory?.
+ (line 6)
+* Home directories: Home Directories. (line 6)
+* Home-Link Filesystem: Hlfsd. (line 6)
+* host Selector Variable: host Selector Variable.
+ (line 6)
+* host, filesystem type: Network Host Filesystem.
+ (line 6)
+* host, mount selector: host Selector Variable.
+ (line 6)
+* hostd Selector Variable: hostd Selector Variable.
+ (line 6)
+* hostd, mount selector: hostd Selector Variable.
+ (line 6)
+* Hostname normalization: -n Option. (line 6)
+* hostname, FSinfo command line option: -h FSinfo Option. (line 6)
+* How keys are looked up: Key Lookup. (line 6)
+* How locations are parsed: Location Format. (line 6)
+* How to access environment variables in maps: Variable Expansion.
+ (line 6)
+* How to discover your version of Amd: -v Option. (line 6)
+* How to mount a local disk: Unix Filesystem. (line 6)
+* How to mount a UFS filesystems: Unix Filesystem. (line 6)
+* How to mount all NFS exported filesystems: Network Host Filesystem.
+ (line 6)
+* How to mount an atomic group of NFS filesystems: Network Filesystem Group.
+ (line 6)
+* How to mount and NFS filesystem: Network Filesystem. (line 6)
+* How to reference an existing part of the local name space: Symbolic Link Filesystem II.
+ (line 6)
+* How to reference part of the local name space: Symbolic Link Filesystem.
+ (line 6)
+* How to select log messages: -x Option. (line 6)
+* How to set default map parameters: Map Defaults. (line 6)
+* How to set map cache parameters: Automount Filesystem.
+ (line 6)
+* How to start a direct automount point: Direct Automount Filesystem.
+ (line 6)
+* How to start an indirect automount point: Automount Filesystem.
+ (line 6)
+* How variables are expanded: Variable Expansion. (line 6)
+* inherit, filesystem type: Inheritance Filesystem.
+ (line 6)
+* Inheritance filesystem: Inheritance Filesystem.
+ (line 6)
+* Interval before a filesystem times out: -c Option. (line 6)
+* Introduction: Intro. (line 6)
+* Introduction to Hlfsd: Introduction to Hlfsd.
+ (line 6)
+* in_network Selector Function: in_network Selector Function.
+ (line 6)
+* in_network, boolean mount selector: in_network Selector Function.
+ (line 6)
+* karch Parameter: karch Parameter. (line 6)
+* karch Selector Variable: karch Selector Variable.
+ (line 6)
+* karch, mount selector: karch Selector Variable.
+ (line 6)
+* Keep-alives: Keep-alives. (line 6)
+* Key lookup: Key Lookup. (line 6)
+* key Selector Variable: key Selector Variable.
+ (line 6)
+* key, mount selector: key Selector Variable.
+ (line 6)
+* Killing and starting Amd: Restarting Amd. (line 6)
+* LDAP maps: LDAP maps. (line 6)
+* ldap_base Parameter: ldap_base Parameter. (line 6)
+* ldap_cache_maxmem Parameter: ldap_cache_maxmem Parameter.
+ (line 6)
+* ldap_cache_seconds Parameter: ldap_cache_seconds Parameter.
+ (line 6)
+* ldap_hostports Parameter: ldap_hostports Parameter.
+ (line 6)
+* ldap_proto_version Parameter: ldap_proto_version Parameter.
+ (line 6)
+* License Information: License. (line 6)
+* Lightweight Directory Access Protocol: LDAP maps. (line 6)
+* link, filesystem type: Symbolic Link Filesystem.
+ (line 6)
+* linkx, filesystem type: Symbolic Link Filesystem II.
+ (line 6)
+* Listing currently mounted filesystems: Controlling Amd. (line 6)
+* localhost_address Parameter: localhost_address Parameter.
+ (line 6)
+* local_domain Parameter: local_domain Parameter.
+ (line 6)
+* Location format: Location Format. (line 6)
+* Location lists: Mounting a Volume. (line 6)
+* locking executable pages in memory: -S Option. (line 6)
+* lofs, filesystem type: Loopback Filesystem. (line 6)
+* Log file, resetting: Amq -l option. (line 6)
+* Log filename: -l Option. (line 6)
+* Log message selection: -x Option. (line 6)
+* log, FSinfo filesystems option: FSinfo log Option. (line 6)
+* Logging options via Amq: Other Amq options. (line 6)
+* log_file Parameter: log_file Parameter. (line 6)
+* log_options Parameter: log_options Parameter.
+ (line 6)
+* Looking up keys: Key Lookup. (line 6)
+* Loopback Filesystem: Loopback Filesystem. (line 6)
+* lostaltmail: lostaltmail. (line 6)
+* lostaltmail.conf-sample: lostaltmail.conf-sample.
+ (line 6)
+* lostaltmail; configuration file: lostaltmail.conf-sample.
+ (line 6)
+* Mailing lists: AddInfo. (line 29)
+* Map cache options: Automount Filesystem.
+ (line 6)
+* Map cache synchronizing: Automount Filesystem.
+ (line 6)
+* Map cache types: Automount Filesystem.
+ (line 6)
+* Map cache, flushing: Amq -f option. (line 6)
+* Map defaults: Map Defaults. (line 6)
+* Map entry format: Location Format. (line 6)
+* Map lookup: Key Lookup. (line 6)
+* Map options: Map Options. (line 6)
+* map Selector Variable: map Selector Variable.
+ (line 6)
+* Map types: Map Types. (line 6)
+* map, mount selector: map Selector Variable.
+ (line 6)
+* maps, FSinfo command line option: -m FSinfo Option. (line 6)
+* map_defaults Parameter: map_defaults Parameter.
+ (line 6)
+* map_name Parameter: map_name Parameter. (line 6)
+* map_options Parameter: map_options Parameter.
+ (line 6)
+* map_reload_interval Parameter: map_reload_interval Parameter.
+ (line 6)
+* map_type Parameter: map_type Parameter. (line 6)
+* Memory/RAM Filesystem: Memory/RAM Filesystem.
+ (line 6)
+* mfs, filesystem type: Memory/RAM Filesystem.
+ (line 6)
+* mk-amd-map: mk-amd-map. (line 6)
+* mlockall; using: -S Option. (line 6)
+* Mount a filesystem under program control: Program Filesystem.
+ (line 6)
+* Mount flags; acdirmax: opts Option. (line 19)
+* Mount flags; acdirmin: opts Option. (line 22)
+* Mount flags; acregmax: opts Option. (line 25)
+* Mount flags; acregmin: opts Option. (line 28)
+* Mount flags; actimeo: opts Option. (line 31)
+* Mount flags; auto: opts Option. (line 34)
+* Mount flags; cache: opts Option. (line 38)
+* Mount flags; closesession: opts Option. (line 41)
+* Mount flags; compress: opts Option. (line 44)
+* Mount flags; defperm: opts Option. (line 47)
+* Mount flags; dev: opts Option. (line 51)
+* Mount flags; dirmask: opts Option. (line 54)
+* Mount flags; dumbtimr: opts Option. (line 60)
+* Mount flags; extatt: opts Option. (line 66)
+* Mount flags; fsid: opts Option. (line 69)
+* Mount flags; gens: opts Option. (line 72)
+* Mount flags; gmtoff: opts Option. (line 76)
+* Mount flags; group: opts Option. (line 81)
+* Mount flags; grpid: opts Option. (line 87)
+* Mount flags; ignore: opts Option. (line 35)
+* Mount flags; int: opts Option. (line 90)
+* Mount flags; intr: opts Option. (line 91)
+* Mount flags; lock: opts Option. (line 94)
+* Mount Flags; longname: opts Option. (line 97)
+* Mount Flags; longname <1>: opts Option. (line 249)
+* Mount flags; mask: opts Option. (line 100)
+* Mount flags; maxgroups: opts Option. (line 113)
+* Mount flags; multi: opts Option. (line 110)
+* Mount flags; nfsv3: opts Option. (line 116)
+* Mount flags; noac: opts Option. (line 119)
+* Mount flags; noauto: opts Option. (line 122)
+* Mount flags; nocache: opts Option. (line 127)
+* Mount flags; nocasetrans: opts Option. (line 130)
+* Mount flags; noconn: opts Option. (line 134)
+* Mount flags; nocto: opts Option. (line 137)
+* Mount flags; nodefperm: opts Option. (line 140)
+* Mount flags; nodev: opts Option. (line 144)
+* Mount flags; nodevs: opts Option. (line 145)
+* Mount flags; noexec: opts Option. (line 148)
+* Mount flags; noint: opts Option. (line 151)
+* Mount flags; nojoliet: opts Option. (line 154)
+* Mount flags; nolock: opts Option. (line 158)
+* Mount flags; nomnttab: opts Option. (line 161)
+* Mount flags; norrip: opts Option. (line 165)
+* Mount flags; nosub: opts Option. (line 169)
+* Mount flags; nosuid: opts Option. (line 172)
+* Mount flags; nounmount: opts Option. (line 291)
+* Mount flags; noversion: opts Option. (line 175)
+* Mount Flags; nowin95: opts Option. (line 179)
+* Mount flags; optionstr: opts Option. (line 182)
+* Mount flags; overlay: opts Option. (line 186)
+* Mount flags; pgthresh: opts Option. (line 189)
+* Mount flags; ping: opts Option. (line 297)
+* Mount flags; port: opts Option. (line 192)
+* Mount flags; posix: opts Option. (line 195)
+* Mount flags; private: opts Option. (line 198)
+* Mount flags; proplist: opts Option. (line 202)
+* Mount flags; proto: opts Option. (line 206)
+* Mount flags; public: opts Option. (line 318)
+* Mount flags; quota: opts Option. (line 209)
+* Mount flags; rdonly: opts Option. (line 212)
+* Mount flags; resvport: opts Option. (line 216)
+* Mount flags; retrans: opts Option. (line 223)
+* Mount flags; retry: opts Option. (line 228)
+* Mount flags; retry=N: opts Option. (line 327)
+* Mount flags; ro: opts Option. (line 213)
+* Mount flags; rrcaseins: opts Option. (line 231)
+* Mount flags; rrip: opts Option. (line 235)
+* Mount flags; rsize: opts Option. (line 239)
+* Mount flags; rw: opts Option. (line 243)
+* Mount Flags; sessionnr: opts Option. (line 246)
+* Mount flags; soft: opts Option. (line 252)
+* Mount flags; softlookup: opts Option. (line 330)
+* Mount flags; spongy: opts Option. (line 255)
+* Mount flags; suid: opts Option. (line 258)
+* Mount flags; symttl: opts Option. (line 261)
+* Mount flags; sync: opts Option. (line 264)
+* Mount flags; tcp: opts Option. (line 267)
+* Mount flags; timeo: opts Option. (line 271)
+* Mount flags; unmount: opts Option. (line 343)
+* Mount flags; user: opts Option. (line 275)
+* Mount flags; utimeout=N: opts Option. (line 352)
+* Mount flags; vers: opts Option. (line 281)
+* Mount flags; wsize: opts Option. (line 284)
+* Mount flags; xlatecookie: opts Option. (line 362)
+* Mount home directories: Home Directories. (line 6)
+* Mount information: Mount Maps. (line 6)
+* Mount map option; cache: Automount Filesystem.
+ (line 15)
+* Mount map types: Map Types. (line 6)
+* Mount maps: Mount Maps. (line 6)
+* Mount option; addopts: addopts Option. (line 6)
+* Mount option; cachedir: Caching Filesystem. (line 13)
+* Mount option; delay: delay Option. (line 6)
+* Mount option; dev: Unix Filesystem. (line 12)
+* Mount option; dev <1>: CD-ROM Filesystem. (line 11)
+* Mount option; dev <2>: UDF Filesystem. (line 11)
+* Mount option; dev <3>: Floppy Filesystem. (line 11)
+* Mount option; fs: fs Option. (line 6)
+* Mount option; mount: Program Filesystem. (line 14)
+* Mount option; opts: opts Option. (line 6)
+* Mount option; remopts: remopts Option. (line 6)
+* Mount option; rfs: Network Filesystem. (line 16)
+* Mount option; rfs <1>: Loopback Filesystem. (line 16)
+* Mount option; rhost: Network Filesystem. (line 10)
+* Mount option; sublink: sublink Option. (line 6)
+* Mount option; type: type Option. (line 6)
+* Mount option; umount: Program Filesystem. (line 17)
+* Mount option; unmount: Program Filesystem. (line 17)
+* Mount retries: Mounting a Volume. (line 6)
+* Mount selector; arch: arch Selector Variable.
+ (line 6)
+* Mount selector; autodir: autodir Selector Variable.
+ (line 6)
+* Mount selector; byte: byte Selector Variable.
+ (line 6)
+* Mount selector; cluster: cluster Selector Variable.
+ (line 6)
+* Mount selector; domain: domain Selector Variable.
+ (line 6)
+* Mount selector; exists: exists Selector Function.
+ (line 6)
+* Mount selector; false: false Selector Function.
+ (line 6)
+* Mount selector; full_os: full_os Selector Variable.
+ (line 6)
+* Mount selector; gid: gid Selector Variable.
+ (line 6)
+* Mount selector; host: host Selector Variable.
+ (line 6)
+* Mount selector; hostd: hostd Selector Variable.
+ (line 6)
+* Mount selector; in_network: in_network Selector Function.
+ (line 6)
+* Mount selector; karch: karch Selector Variable.
+ (line 6)
+* Mount selector; key: key Selector Variable.
+ (line 6)
+* Mount selector; map: map Selector Variable.
+ (line 6)
+* Mount selector; netgrp: netgrp Selector Function.
+ (line 6)
+* Mount selector; netgrpd: netgrpd Selector Function.
+ (line 6)
+* Mount selector; netnumber: netnumber Selector Variable.
+ (line 6)
+* Mount selector; network: network Selector Variable.
+ (line 6)
+* Mount selector; os: os Selector Variable.
+ (line 6)
+* Mount selector; osver: osver Selector Variable.
+ (line 6)
+* Mount selector; path: path Selector Variable.
+ (line 6)
+* Mount selector; true: true Selector Function.
+ (line 6)
+* Mount selector; uid: uid Selector Variable.
+ (line 6)
+* Mount selector; vendor: vendor Selector Variable.
+ (line 6)
+* Mount selector; wire: wire Selector Variable.
+ (line 6)
+* Mount selector; xhost: xhost Selector Function.
+ (line 6)
+* mount system call: opts Option. (line 6)
+* mount system call flags: opts Option. (line 6)
+* Mount types: Filesystem Types. (line 6)
+* mount, FSinfo filesystems option: FSinfo mount Option. (line 6)
+* mount, mount option: Program Filesystem. (line 14)
+* Mounting a local disk: Unix Filesystem. (line 6)
+* Mounting a remote part of the name space if target is missing: NFS-Link Filesystem.
+ (line 6)
+* Mounting a UFS filesystem: Unix Filesystem. (line 6)
+* Mounting a volume: Mounting a Volume. (line 6)
+* Mounting an atomic group of NFS filesystems: Network Filesystem Group.
+ (line 6)
+* Mounting an existing part of the local name space: Symbolic Link Filesystem II.
+ (line 6)
+* Mounting an NFS filesystem: Network Filesystem. (line 6)
+* Mounting entire export trees: Network Host Filesystem.
+ (line 6)
+* Mounting part of the local name space: Symbolic Link Filesystem.
+ (line 6)
+* Mounting user filesystems: User Filesystems. (line 6)
+* mount_type Parameter: mount_type Parameter.
+ (line 6)
+* Multiple Amd processes: Amq -P option. (line 6)
+* Multiple-threaded server: Non-blocking Operation.
+ (line 6)
+* Namespace: Volume Binding. (line 6)
+* ndbm maps: ndbm maps. (line 6)
+* netgrp Selector Function: netgrp Selector Function.
+ (line 6)
+* netgrp, boolean mount selector: netgrp Selector Function.
+ (line 6)
+* netgrpd Selector Function: netgrpd Selector Function.
+ (line 6)
+* netgrpd, boolean mount selector: netgrpd Selector Function.
+ (line 6)
+* netnumber Selector Variable: netnumber Selector Variable.
+ (line 6)
+* netnumber, mount selector: netnumber Selector Variable.
+ (line 6)
+* Network filesystem group: Network Filesystem Group.
+ (line 6)
+* Network host filesystem: Network Host Filesystem.
+ (line 6)
+* network Selector Variable: network Selector Variable.
+ (line 6)
+* network, mount selector: network Selector Variable.
+ (line 6)
+* Network-wide naming: Volume Naming. (line 6)
+* NFS: Network Filesystem. (line 6)
+* NFS ping: Keep-alives. (line 6)
+* NFS V.3 support: Supported Platforms. (line 6)
+* nfs, filesystem type: Network Filesystem. (line 6)
+* NFS-Link filesystem II: NFS-Link Filesystem. (line 6)
+* nfsl, filesystem type: NFS-Link Filesystem. (line 6)
+* nfsx, filesystem type: Network Filesystem Group.
+ (line 6)
+* nfs_allow_any_interface Parameter: nfs_allow_any_interface Parameter.
+ (line 6)
+* nfs_allow_insecure_port Parameter: nfs_allow_insecure_port Parameter.
+ (line 6)
+* nfs_proto Parameter: nfs_proto Parameter. (line 6)
+* nfs_retransmit_counter Parameter: nfs_retransmit_counter Parameter.
+ (line 6)
+* nfs_retransmit_counter Parameter <1>: nfs_retransmit_counter_udp Parameter.
+ (line 6)
+* nfs_retransmit_counter Parameter <2>: nfs_retransmit_counter_tcp Parameter.
+ (line 6)
+* nfs_retransmit_counter Parameter <3>: nfs_retransmit_counter_toplvl Parameter.
+ (line 6)
+* nfs_retransmit_counter_tcp Parameter: nfs_retransmit_counter_tcp Parameter.
+ (line 6)
+* nfs_retransmit_counter_toplvl Parameter: nfs_retransmit_counter_toplvl Parameter.
+ (line 6)
+* nfs_retransmit_counter_udp Parameter: nfs_retransmit_counter_udp Parameter.
+ (line 6)
+* nfs_retry_interval Parameter: nfs_retry_interval Parameter.
+ (line 6)
+* nfs_retry_interval Parameter <1>: nfs_retry_interval_udp Parameter.
+ (line 6)
+* nfs_retry_interval Parameter <2>: nfs_retry_interval_tcp Parameter.
+ (line 6)
+* nfs_retry_interval Parameter <3>: nfs_retry_interval_toplvl Parameter.
+ (line 6)
+* nfs_retry_interval_tcp Parameter: nfs_retry_interval_tcp Parameter.
+ (line 6)
+* nfs_retry_interval_toplvl Parameter: nfs_retry_interval_toplvl Parameter.
+ (line 6)
+* nfs_retry_interval_udp Parameter: nfs_retry_interval_udp Parameter.
+ (line 6)
+* nfs_vers Parameter: nfs_vers Parameter. (line 6)
+* NIS (YP) domain name: -y Option. (line 6)
+* NIS (YP) maps: NIS maps. (line 6)
+* NIS+ maps: NIS+ maps. (line 6)
+* nis_domain Parameter: nis_domain Parameter.
+ (line 6)
+* Nodes generated on a restart: Inheritance Filesystem.
+ (line 6)
+* Non-blocking operation: Non-blocking Operation.
+ (line 6)
+* normalize_hostnames Parameter: normalize_hostnames Parameter.
+ (line 6)
+* normalize_slashes Parameter: normalize_slashes Parameter.
+ (line 6)
+* Normalizing hostnames: -n Option. (line 6)
+* Null Filesystem: Null Filesystem. (line 6)
+* nullfs, filesystem type: Null Filesystem. (line 6)
+* Obtaining the source code: Distrib. (line 6)
+* Operating System name: -O Option. (line 6)
+* Operating System version: -o Option. (line 6)
+* Operational principles: Operational Principles.
+ (line 6)
+* opts, FSinfo filesystems option: FSinfo opts Option. (line 6)
+* opts, mount option: opts Option. (line 6)
+* os Parameter: os Parameter. (line 6)
+* os Selector Variable: os Selector Variable.
+ (line 6)
+* os, FSinfo host attribute: FSinfo os Option. (line 6)
+* os, mount selector: os Selector Variable.
+ (line 6)
+* osver Parameter: osver Parameter. (line 6)
+* osver Selector Variable: osver Selector Variable.
+ (line 6)
+* osver, mount selector: osver Selector Variable.
+ (line 6)
+* Overriding defaults on the command line: Amd Command Line Options.
+ (line 6)
+* Overriding or adding options to a mount: addopts Option. (line 6)
+* Overriding the default mount point: fs Option. (line 6)
+* Overriding the local domain name: -d Option. (line 6)
+* Overriding the NIS (YP) domain name: -y Option. (line 6)
+* Passing parameters to the mount system call: opts Option. (line 6)
+* passno, FSinfo filesystems option: FSinfo passno Option.
+ (line 6)
+* Password file maps: Password maps. (line 6)
+* path Selector Variable: path Selector Variable.
+ (line 6)
+* path, mount selector: path Selector Variable.
+ (line 6)
+* Pathname operators: Variable Expansion. (line 6)
+* pawd: pawd. (line 6)
+* pcfs, filesystem type: Floppy Filesystem. (line 6)
+* Picking up existing mounts: -r Option. (line 6)
+* pid file, creating with -p option: -p Option. (line 6)
+* PID; Amd: Amq -p option. (line 6)
+* pid_file Parameter: pid_file Parameter. (line 6)
+* plock Parameter: plock Parameter. (line 6)
+* plock; using: -S Option. (line 6)
+* portmap_program Parameter: portmap_program Parameter.
+ (line 6)
+* preferred_amq_port Parameter: preferred_amq_port Parameter.
+ (line 6)
+* Primary server: delay Option. (line 6)
+* print_pid Parameter: print_pid Parameter. (line 6)
+* print_version Parameter: print_version Parameter.
+ (line 6)
+* Process id: -p Option. (line 6)
+* process id of Amd daemon: -p Option. (line 6)
+* Process ID; Amd: Amq -p option. (line 6)
+* Program filesystem: Program Filesystem. (line 6)
+* program, filesystem type: Program Filesystem. (line 6)
+* Querying an alternate host: Amq -h option. (line 6)
+* quiet, FSinfo command line option: -q FSinfo Option. (line 6)
+* redhat-ctl-amd: redhat-ctl-amd. (line 6)
+* Referencing an existing part of the local name space: Symbolic Link Filesystem II.
+ (line 6)
+* Referencing an existing part of the name space if target exists: NFS-Link Filesystem.
+ (line 6)
+* Referencing part of the local name space: Symbolic Link Filesystem.
+ (line 6)
+* Regular expressions in maps: Automount Filesystem.
+ (line 6)
+* remopts, mount option: remopts Option. (line 6)
+* Replacement volumes: Volume Naming. (line 6)
+* Replicated volumes: Volume Naming. (line 6)
+* Resetting the Amd log file: Amq -l option. (line 6)
+* Resolving aliased hostnames: -n Option. (line 6)
+* Restarting Amd: Restarting Amd. (line 6)
+* Restarting existing mounts: -r Option. (line 6)
+* restart_mounts Parameter: restart_mounts Parameter.
+ (line 6)
+* rfs, mount option: Network Filesystem. (line 16)
+* rfs, mount option <1>: Loopback Filesystem. (line 16)
+* rhost, mount option: Network Filesystem. (line 10)
+* Root filesystem: Root Filesystem. (line 6)
+* root, filesystem type: Root Filesystem. (line 6)
+* RPC Program numbers; Amd: Amq -P option. (line 6)
+* RPC retries: Non-blocking Operation.
+ (line 6)
+* Run-time administration: Run-time Administration.
+ (line 6)
+* Running multiple Amd: Amq -P option. (line 6)
+* rwho servers: rwho servers. (line 6)
+* search_path Parameter: search_path Parameter.
+ (line 6)
+* Secondary server: delay Option. (line 6)
+* sel, FSinfo mount option: FSinfo mount Option. (line 6)
+* Selecting specific log messages: -x Option. (line 6)
+* Selector; arch: arch Selector Variable.
+ (line 6)
+* Selector; autodir: autodir Selector Variable.
+ (line 6)
+* Selector; byte: byte Selector Variable.
+ (line 6)
+* Selector; cluster: cluster Selector Variable.
+ (line 6)
+* Selector; domain: domain Selector Variable.
+ (line 6)
+* Selector; exists: exists Selector Function.
+ (line 6)
+* Selector; false: false Selector Function.
+ (line 6)
+* Selector; full_os: full_os Selector Variable.
+ (line 6)
+* Selector; gid: gid Selector Variable.
+ (line 6)
+* Selector; host: host Selector Variable.
+ (line 6)
+* Selector; hostd: hostd Selector Variable.
+ (line 6)
+* Selector; in_network: in_network Selector Function.
+ (line 6)
+* Selector; karch: karch Selector Variable.
+ (line 6)
+* Selector; key: key Selector Variable.
+ (line 6)
+* Selector; map: map Selector Variable.
+ (line 6)
+* Selector; netgrp: netgrp Selector Function.
+ (line 6)
+* Selector; netgrpd: netgrpd Selector Function.
+ (line 6)
+* Selector; netnumber: netnumber Selector Variable.
+ (line 6)
+* Selector; network: network Selector Variable.
+ (line 6)
+* Selector; os: os Selector Variable.
+ (line 6)
+* Selector; osver: osver Selector Variable.
+ (line 6)
+* Selector; path: path Selector Variable.
+ (line 6)
+* Selector; true: true Selector Function.
+ (line 6)
+* Selector; uid: uid Selector Variable.
+ (line 6)
+* Selector; vendor: vendor Selector Variable.
+ (line 6)
+* Selector; wire: wire Selector Variable.
+ (line 6)
+* Selector; xhost: xhost Selector Function.
+ (line 6)
+* Selectors: Selectors. (line 6)
+* selectors on default: /defaults with selectors.
+ (line 6)
+* selectors_in_defaults Parameter: selectors_in_defaults Parameter.
+ (line 6)
+* Server crashes: Keep-alives. (line 6)
+* Setting a delay on a mount location: delay Option. (line 6)
+* Setting additional options on a mount location: addopts Option.
+ (line 6)
+* Setting Amd's RPC parameters: -t Option. (line 6)
+* Setting debug flags: -D Option. (line 6)
+* Setting default map parameters: Map Defaults. (line 6)
+* Setting map cache parameters: Automount Filesystem.
+ (line 6)
+* Setting map options: Map Options. (line 6)
+* Setting system mount options: opts Option. (line 6)
+* Setting system mount options for non-local networks: remopts Option.
+ (line 6)
+* Setting the Amd log file via Amq: Amq -l option. (line 6)
+* Setting the cluster name: -C Option. (line 6)
+* Setting the default mount directory: -a Option. (line 6)
+* Setting the filesystem type option: type Option. (line 6)
+* Setting the interval before a filesystem times out: -c Option.
+ (line 6)
+* Setting the interval between unmount attempts: -w Option. (line 6)
+* Setting the Kernel architecture: -k Option. (line 6)
+* Setting the local domain name: -d Option. (line 6)
+* Setting the local mount point: fs Option. (line 6)
+* Setting the log file: -l Option. (line 6)
+* Setting the NIS (YP) domain name: -y Option. (line 6)
+* Setting the operating system architecture: -A Option. (line 6)
+* Setting the Operating System name: -O Option. (line 6)
+* Setting the Operating System version: -o Option. (line 6)
+* Setting the sublink option: sublink Option. (line 6)
+* shared libraries: Supported Platforms. (line 6)
+* Shared Memory and Swap Filesystem: Shared Memory+Swap Filesystem.
+ (line 6)
+* Sharing a fileserver between architectures: Architecture Sharing.
+ (line 6)
+* show_statfs_entries Parameter: show_statfs_entries Parameter.
+ (line 6)
+* SIGHUP signal: Automount Filesystem.
+ (line 6)
+* SIGINT signal: Stopping Amd. (line 6)
+* SIGTERM signal: Stopping Amd. (line 6)
+* Single-Host Mail Spool Directory: Single-Host Mail Spool Directory.
+ (line 6)
+* Source code distribution: Distrib. (line 6)
+* Starting Amd: Starting Amd. (line 6)
+* Statically mounts filesystems, FSinfo: FSinfo static mounts.
+ (line 6)
+* Statistics: Amq -s option. (line 6)
+* Stopping Amd: Stopping Amd. (line 6)
+* Stripping the local domain name: Variable Expansion. (line 6)
+* sublink: Filesystems and Volumes.
+ (line 6)
+* sublink, mount option: sublink Option. (line 6)
+* sun_map_syntax Parameter: sun_map_syntax Parameter.
+ (line 6)
+* Supported Platforms: Supported Platforms. (line 6)
+* Symbolic link filesystem: Symbolic Link Filesystem.
+ (line 6)
+* Symbolic link filesystem II: Symbolic Link Filesystem II.
+ (line 6)
+* Symlink if target exists, NFS otherwise: NFS-Link Filesystem.
+ (line 6)
+* symlink, link filesystem type: Symbolic Link Filesystem.
+ (line 6)
+* symlink, linkx filesystem type: Symbolic Link Filesystem II.
+ (line 6)
+* symlink, nfsl filesystem type: NFS-Link Filesystem. (line 6)
+* Synchronizing the map cache: Automount Filesystem.
+ (line 6)
+* syslog: -l Option. (line 6)
+* syslog facility; specifying an alternate: -l Option. (line 13)
+* syslog priorities: -x Option. (line 6)
+* tag Parameter: tag Parameter. (line 6)
+* Tags for Amd configuration file: -T Option. (line 6)
+* TCP: nfs_retransmit_counter_tcp Parameter.
+ (line 6)
+* TCP <1>: nfs_retry_interval_tcp Parameter.
+ (line 6)
+* TCP; using with Amq: Amq -T option. (line 6)
+* tfs, filesystem type: Translucent Filesystem.
+ (line 6)
+* The mount system call: opts Option. (line 6)
+* tmpfs, filesystem type: Shared Memory+Swap Filesystem.
+ (line 6)
+* Top level filesystem: Top-level Filesystem.
+ (line 6)
+* toplvl, filesystem type: Top-level Filesystem.
+ (line 6)
+* Translucent Filesystem: Translucent Filesystem.
+ (line 6)
+* true Selector Function: true Selector Function.
+ (line 6)
+* true, boolean mount selector: true Selector Function.
+ (line 6)
+* truncate_log Parameter: truncate_log Parameter.
+ (line 6)
+* type, mount option: type Option. (line 6)
+* Types of configuration map: Map Types. (line 6)
+* Types of filesystem: Filesystem Types. (line 6)
+* Types of mount map: Map Types. (line 6)
+* udf, filesystem type: UDF Filesystem. (line 6)
+* UDP: nfs_retransmit_counter_udp Parameter.
+ (line 6)
+* UDP <1>: nfs_retransmit_counter_toplvl Parameter.
+ (line 6)
+* UDP <2>: nfs_retry_interval_udp Parameter.
+ (line 6)
+* UDP <3>: nfs_retry_interval_toplvl Parameter.
+ (line 6)
+* UDP; using with Amq: Amq -U option. (line 6)
+* UFS: Unix Filesystem. (line 6)
+* ufs, filesystem type: Unix Filesystem. (line 6)
+* uid Selector Variable: uid Selector Variable.
+ (line 6)
+* uid, mount selector: uid Selector Variable.
+ (line 6)
+* umapfs, filesystem type: User ID Mapping Filesystem.
+ (line 6)
+* umount, mount option: Program Filesystem. (line 17)
+* Union file maps: Union maps. (line 6)
+* Union filesystem: Union Filesystem. (line 6)
+* union, filesystem type: Union Filesystem. (line 6)
+* Unix filesystem: Unix Filesystem. (line 6)
+* Unix namespace: Volume Binding. (line 6)
+* unmount attempt backoff interval: -w Option. (line 6)
+* unmount, mount option: Program Filesystem. (line 17)
+* Unmounting a filesystem: Amq -q option. (line 6)
+* Unmounting a filesystem <1>: Amq -u option. (line 6)
+* unmount_on_exit Parameter: unmount_on_exit Parameter.
+ (line 6)
+* User filesystems: User Filesystems. (line 6)
+* User ID Mapping Filesystem: User ID Mapping Filesystem.
+ (line 6)
+* User maps, automatic generation: Password maps. (line 6)
+* use_tcpwrappers Parameter: use_tcpwrappers Parameter.
+ (line 6)
+* Using FSinfo: Using FSinfo. (line 6)
+* Using Hlfsd: Using Hlfsd. (line 6)
+* Using syslog to log errors: -l Option. (line 6)
+* Using the password file as a map: Password maps. (line 6)
+* Variable expansion: Variable Expansion. (line 6)
+* vendor Parameter: vendor Parameter. (line 6)
+* vendor Selector Variable: vendor Selector Variable.
+ (line 6)
+* vendor, mount selector: vendor Selector Variable.
+ (line 6)
+* verbose, FSinfo command line option: -v FSinfo Option. (line 6)
+* Version information: -v Option. (line 6)
+* Version information at run-time: Amq -v option. (line 6)
+* volname, FSinfo mount option: FSinfo mount Option. (line 6)
+* Volume: Filesystems and Volumes.
+ (line 6)
+* Volume binding: Volume Binding. (line 6)
+* Volume names: Volume Naming. (line 6)
+* wait4amd: wait4amd. (line 6)
+* wait4amd2die: wait4amd2die. (line 6)
+* Why Deliver Into the Home Directory?: Why Deliver Into the Home Directory?.
+ (line 6)
+* Wildcards in maps: Key Lookup. (line 6)
+* wire Selector Variable: wire Selector Variable.
+ (line 6)
+* wire, mount selector: wire Selector Variable.
+ (line 6)
+* wire-test: wire-test. (line 6)
+* XFS: Unix Filesystem. (line 6)
+* xfs, filesystem type: Unix Filesystem. (line 6)
+* xhost Selector Function: xhost Selector Function.
+ (line 6)
+* xhost, boolean mount selector: xhost Selector Function.
+ (line 6)
+* YP domain name: -y Option. (line 6)
+
+
+
+Tag Table:
+Node: Top222
+Node: License2377
+Node: Distrib4022
+Node: AddInfo5121
+Node: Intro8875
+Node: History10010
+Node: Overview12574
+Node: Fundamentals13875
+Node: Filesystems and Volumes14656
+Node: Volume Naming15484
+Node: Volume Binding16749
+Node: Operational Principles17963
+Node: Mounting a Volume19310
+Node: Automatic Unmounting21052
+Node: Keep-alives22332
+Node: Non-blocking Operation24631
+Node: Supported Platforms25757
+Node: Mount Maps26388
+Node: Map Types27220
+Node: File maps28895
+Node: ndbm maps30432
+Node: NIS maps31117
+Node: NIS+ maps32594
+Node: Hesiod maps32864
+Node: Password maps33824
+Node: Union maps34762
+Node: LDAP maps35369
+Node: Executable maps36754
+Node: Key Lookup37654
+Node: Location Format38968
+Node: Map Defaults41709
+Node: Variable Expansion42337
+Node: Selectors45289
+Node: arch Selector Variable47321
+Node: autodir Selector Variable47757
+Node: byte Selector Variable48092
+Node: cluster Selector Variable48578
+Node: domain Selector Variable49052
+Node: dollar Selector Variable49359
+Node: host Selector Variable49851
+Node: hostd Selector Variable50472
+Node: karch Selector Variable50862
+Node: os Selector Variable51462
+Node: osver Selector Variable51867
+Node: full_os Selector Variable52288
+Node: vendor Selector Variable52741
+Node: key Selector Variable53388
+Node: map Selector Variable53904
+Node: netnumber Selector Variable54141
+Node: network Selector Variable54659
+Node: path Selector Variable55174
+Node: wire Selector Variable55468
+Node: uid Selector Variable55968
+Node: gid Selector Variable56729
+Node: exists Selector Function57274
+Node: false Selector Function57594
+Node: netgrp Selector Function57843
+Node: netgrpd Selector Function59653
+Node: in_network Selector Function60339
+Node: true Selector Function61638
+Node: xhost Selector Function61886
+Node: Map Options62280
+Node: addopts Option63025
+Node: delay Option64241
+Node: fs Option64788
+Node: opts Option66659
+Node: remopts Option78491
+Node: sublink Option79377
+Node: type Option79739
+Node: Amd Command Line Options79961
+Node: -a Option82860
+Node: -c Option83213
+Node: -d Option83858
+Node: -k Option84401
+Node: -l Option84945
+Node: -n Option87276
+Node: -o Option87692
+Node: -p Option88154
+Node: -r Option88583
+Node: -t Option88782
+Node: -v Option89472
+Node: -w Option91535
+Node: -x Option91840
+Node: -y Option93801
+Node: -A Option94140
+Node: -C Option94471
+Node: -D Option95122
+Node: -F Option96936
+Node: -H Option97654
+Node: -O Option97821
+Node: -S Option98286
+Node: -T Option98913
+Node: Filesystem Types99256
+Node: Network Filesystem101622
+Node: Network Host Filesystem103272
+Node: Network Filesystem Group105371
+Node: Unix Filesystem107142
+Node: Caching Filesystem108309
+Node: CD-ROM Filesystem110232
+Node: UDF Filesystem110852
+Node: Loopback Filesystem111494
+Node: Memory/RAM Filesystem112429
+Node: Null Filesystem112872
+Node: Floppy Filesystem113236
+Node: Translucent Filesystem113756
+Node: Shared Memory+Swap Filesystem114100
+Node: User ID Mapping Filesystem114662
+Node: Program Filesystem115049
+Node: Symbolic Link Filesystem118170
+Node: Symbolic Link Filesystem II119448
+Node: NFS-Link Filesystem120063
+Node: Automount Filesystem121602
+Node: Direct Automount Filesystem125752
+Node: Union Filesystem127451
+Node: Error Filesystem128962
+Node: Top-level Filesystem129483
+Node: Root Filesystem129899
+Node: Inheritance Filesystem130410
+Node: Amd Configuration File131447
+Node: File Format131960
+Node: The Global Section133427
+Node: Regular Map Sections134035
+Node: Common Parameters134439
+Node: autofs_use_lofs Parameter135198
+Node: browsable_dirs Parameter136465
+Node: map_defaults Parameter137415
+Node: map_options Parameter137955
+Node: map_type Parameter138284
+Node: mount_type Parameter139094
+Node: search_path Parameter139522
+Node: selectors_in_defaults Parameter139966
+Node: sun_map_syntax Parameter140736
+Node: Global Parameters141028
+Node: arch Parameter142878
+Node: auto_attrcache Parameter143189
+Node: auto_dir Parameter146697
+Node: cache_duration Parameter147049
+Node: cluster Parameter147397
+Node: debug_mtab_file Parameter147701
+Node: debug_options Parameter148118
+Node: dismount_interval Parameter148893
+Node: domain_strip Parameter149282
+Node: exec_map_timeout Parameter149825
+Node: forced_unmounts Parameter150500
+Node: full_os Parameter152410
+Node: fully_qualified_hosts Parameter152972
+Node: hesiod_base Parameter153501
+Node: karch Parameter153778
+Node: ldap_base Parameter154417
+Node: ldap_cache_maxmem Parameter154748
+Node: ldap_cache_seconds Parameter155066
+Node: ldap_hostports Parameter155381
+Node: ldap_proto_version Parameter155673
+Node: local_domain Parameter156009
+Node: localhost_address Parameter156468
+Node: log_file Parameter157051
+Node: log_options Parameter158159
+Node: map_reload_interval Parameter159148
+Node: nfs_allow_any_interface Parameter159612
+Node: nfs_allow_insecure_port Parameter160243
+Node: nfs_proto Parameter161172
+Node: nfs_retransmit_counter Parameter161863
+Node: nfs_retransmit_counter_udp Parameter162355
+Node: nfs_retransmit_counter_tcp Parameter162782
+Node: nfs_retransmit_counter_toplvl Parameter163216
+Node: nfs_retry_interval Parameter163798
+Node: nfs_retry_interval_udp Parameter164633
+Node: nfs_retry_interval_tcp Parameter165031
+Node: nfs_retry_interval_toplvl Parameter165436
+Node: nfs_vers Parameter165983
+Node: nis_domain Parameter166656
+Node: normalize_hostnames Parameter167103
+Node: normalize_slashes Parameter167565
+Node: os Parameter168119
+Node: osver Parameter168661
+Node: pid_file Parameter169215
+Node: plock Parameter169795
+Node: portmap_program Parameter170479
+Node: preferred_amq_port Parameter171280
+Node: print_pid Parameter171889
+Node: print_version Parameter172208
+Node: restart_mounts Parameter172640
+Node: show_statfs_entries Parameter173084
+Node: truncate_log Parameter173539
+Node: unmount_on_exit Parameter174023
+Node: use_tcpwrappers Parameter174571
+Node: vendor Parameter175741
+Node: Regular Map Parameters176186
+Node: map_name Parameter176498
+Node: tag Parameter176761
+Node: amd.conf Examples177236
+Node: Run-time Administration178744
+Node: Starting Amd178991
+Node: Stopping Amd179846
+Node: Restarting Amd180652
+Node: Controlling Amd181890
+Node: Amq default183376
+Node: Amq -f option185343
+Node: Amq -h option185795
+Node: Amq -H option186165
+Node: Amq -l option186359
+Node: Amq -m option186799
+Node: Amq -p option187957
+Node: Amq -P option188348
+Node: Amq -q option189027
+Node: Amq -s option189282
+Node: Amq -T option190374
+Node: Amq -U option190700
+Node: Amq -u option191021
+Node: Amq -v option191638
+Node: Amq -w option191880
+Node: Other Amq options192216
+Node: FSinfo192813
+Node: FSinfo Overview193550
+Node: Using FSinfo194734
+Node: FSinfo Grammar196435
+Node: FSinfo host definitions197803
+Node: FSinfo host attributes198920
+Node: FSinfo netif Option200094
+Node: FSinfo config Option200921
+Node: FSinfo arch Option201365
+Node: FSinfo os Option201742
+Node: FSinfo cluster Option202139
+Node: FSinfo filesystems202508
+Node: FSinfo fstype Option205506
+Node: FSinfo opts Option206286
+Node: FSinfo passno Option206579
+Node: FSinfo freq Option206902
+Node: FSinfo mount Option207201
+Node: FSinfo dumpset Option209294
+Node: FSinfo log Option209575
+Node: FSinfo static mounts209836
+Node: FSinfo automount definitions211511
+Node: FSinfo Command Line Options214736
+Node: -a FSinfo Option216375
+Node: -b FSinfo Option216763
+Node: -d FSinfo Option217464
+Node: -e FSinfo Option218080
+Node: -f FSinfo Option218865
+Node: -h FSinfo Option219474
+Node: -m FSinfo Option219861
+Node: -q FSinfo Option220440
+Node: -v FSinfo Option220715
+Node: -D-FSinfo Option221131
+Node: -I FSinfo Option221432
+Node: -U FSinfo Option221739
+Node: FSinfo errors221964
+Node: Hlfsd228561
+Node: Introduction to Hlfsd230278
+Node: Background to Mail Delivery235180
+Node: Single-Host Mail Spool Directory235679
+Node: Centralized Mail Spool Directory236771
+Ref: Centralized Mail Spool Directory-Footnote-1239625
+Ref: Centralized Mail Spool Directory-Footnote-2239932
+Node: Distributed Mail Spool Service240050
+Node: Why Deliver Into the Home Directory?243340
+Node: Using Hlfsd245891
+Node: Controlling Hlfsd246081
+Node: Hlfsd Options248002
+Node: Hlfsd Files252796
+Node: Assorted Tools253712
+Node: am-eject254216
+Node: amd.conf-sample254467
+Node: amd2ldif254679
+Node: amd2sun254937
+Node: automount2amd255180
+Node: ctl-amd256491
+Node: ctl-hlfsd256981
+Node: fix-amd-map257513
+Node: fixmount258022
+Node: fixrmtab258439
+Node: lostaltmail258731
+Node: lostaltmail.conf-sample259492
+Node: mk-amd-map259909
+Node: pawd260204
+Node: redhat-ctl-amd260932
+Node: wait4amd261472
+Node: wait4amd2die262583
+Node: wire-test263143
+Node: Examples264231
+Node: User Filesystems264539
+Node: Home Directories267701
+Node: Architecture Sharing270704
+Node: Wildcard Names272302
+Node: rwho servers273608
+Node: /vol274353
+Node: /defaults with selectors276944
+Node: /tftpboot in a chroot-ed environment277800
+Node: Internals282074
+Node: Log Messages282413
+Node: Fatal errors283132
+Node: Info messages286641
+Node: Acknowledgments & Trademarks289272
+Node: Index290961
+
+End Tag Table