diff options
author | Cy Schubert <cy@FreeBSD.org> | 2016-08-31 00:08:49 +0000 |
---|---|---|
committer | Cy Schubert <cy@FreeBSD.org> | 2016-08-31 00:08:49 +0000 |
commit | ca57057f598bfc7119f79f71bf38ec88244ab396 (patch) | |
tree | 051f78ef258707b493cc7cb21569b6949915f6c7 /doc | |
parent | e66b16bf080ead1c51f321eaf56710c771778706 (diff) | |
download | src-vendor/amd.tar.gz src-vendor/amd.zip |
Import am-utils 6.2,vendor/amd/6.2vendor/amd
Suggested by: pfg@
Obtained from: ftp://ftp.am-utils.org/pub/am-utils/
Notes
Notes:
svn path=/vendor/amd/dist/; revision=305100
svn path=/vendor/amd/6.2/; revision=305101; tag=vendor/amd/6.2
Diffstat (limited to 'doc')
-rw-r--r-- | doc/Makefile.am | 115 | ||||
-rw-r--r-- | doc/Makefile.in | 875 | ||||
-rw-r--r-- | doc/am-utils.dvi | bin | 0 -> 622072 bytes | |||
-rw-r--r-- | doc/am-utils.info | 8897 | ||||
-rw-r--r-- | doc/am-utils.info-1 | 7645 | ||||
-rw-r--r-- | doc/am-utils.info-2 | bin | 0 -> 76982 bytes | |||
-rw-r--r-- | doc/am-utils.ps | 18222 | ||||
-rw-r--r-- | doc/am-utils.texi | 281 | ||||
-rw-r--r-- | doc/hlfsd.ps | 2718 | ||||
-rwxr-xr-x | doc/mdate-sh | 224 | ||||
-rw-r--r-- | doc/stamp-vti | 8 | ||||
-rw-r--r-- | doc/texinfo.tex | 5565 | ||||
-rw-r--r-- | doc/version.texi | 8 |
13 files changed, 43189 insertions, 1369 deletions
diff --git a/doc/Makefile.am b/doc/Makefile.am new file mode 100644 index 000000000000..6e1e6b66a008 --- /dev/null +++ b/doc/Makefile.am @@ -0,0 +1,115 @@ +## Process this file with automake to produce Makefile.in + +# Package: am-utils +# Level: Makefile for doc/ directory +# Author: Erez Zadok + +@SET_MAKE@ + +info_TEXINFOS = am-utils.texi + +EXTRA_DIST = hlfsd.ps + +# force generation of 'letter' format PS and embed Type-3 fonts +# (our European allies may object...) +DVIPS = dvips -t letter -Pcmz + +# Force version.texi to be rebuilt regardless of maintainer mode +$(srcdir)/version.texi: am-utils.texi $(top_srcdir)/configure.ac + @(set `$(SHELL) $(srcdir)/mdate-sh $(srcdir)/am-utils.texi`; \ + echo "@set UPDATED $$1 $$2 $$3"; \ + echo "@set UPDATED-MONTH $$2 $$3"; \ + echo "@set EDITION $(VERSION)"; \ + echo "@set VERSION $(VERSION)") > vti.tmp + @cmp -s vti.tmp $(srcdir)/version.texi \ + || (echo "Updating $(srcdir)/version.texi"; \ + cp vti.tmp $(srcdir)/version.texi) + -@rm -f vti.tmp + +# include dvi/ps in distribution +dist-hook: $(distdir)/am-utils.dvi $(distdir)/am-utils.ps + +$(distdir)/am-utils.dvi: am-utils.dvi + install -c -m 644 $< $@ + +$(distdir)/am-utils.ps: am-utils.ps + install -c -m 644 $< $@ + +# a special target for making Postscript files +ps: am-utils.dvi am-utils.ps + +am-utils-clean: clean maintainer-clean-aminfo maintainer-clean-vti + +# personal rule for Erez Zadok to generate and install html docs +alldocs: ps install-NEWS install-INSTALL install-ChangeLog install-AUTHORS install-tasks install-autofs install-y2k install-ldap install-osx install-BUGS install-FAQ install-html install-ps install-MIRRORS install-attrcache install-sun2amd + +AMU_HTML_TOP=$(HOME)/proj/www/docs/am-utils +install-html: $(AMU_HTML_TOP)/am-utils-all.html +$(AMU_HTML_TOP)/am-utils-all.html: am-utils.texi + texi2html -Verbose -expand info -number -out_file am-utils-all.html $< + texi2html -frames -Verbose -expand info -number -split chapter $< + mv am-utils-all.html am-utils/*.html $(AMU_HTML_TOP) + chmod -R a+r $(AMU_HTML_TOP) + +install-ps: $(AMU_HTML_TOP)/am-utils.ps +$(AMU_HTML_TOP)/am-utils.ps: am-utils.ps + install -c -m 644 $< $@ + +install-NEWS: $(AMU_HTML_TOP)/NEWS.txt +$(AMU_HTML_TOP)/NEWS.txt: $(top_srcdir)/NEWS + install -c -m 644 $< $@ + +install-INSTALL: $(AMU_HTML_TOP)/INSTALL.txt +$(AMU_HTML_TOP)/INSTALL.txt: $(top_srcdir)/INSTALL + install -c -m 644 $< $@ + +install-ChangeLog: $(AMU_HTML_TOP)/ChangeLog.txt +$(AMU_HTML_TOP)/ChangeLog.txt: $(top_srcdir)/ChangeLog + sed 's/@.*>$$/@...>/g' < $< > $@ + chmod 644 $@ + +install-AUTHORS: $(AMU_HTML_TOP)/AUTHORS.txt +$(AMU_HTML_TOP)/AUTHORS.txt: $(top_srcdir)/AUTHORS + install -c -m 644 $< $@ + +install-tasks: $(AMU_HTML_TOP)/tasks.txt +$(AMU_HTML_TOP)/tasks.txt: $(top_srcdir)/tasks + install -c -m 644 $< $@ + +install-autofs: $(AMU_HTML_TOP)/autofs.txt +$(AMU_HTML_TOP)/autofs.txt: $(top_srcdir)/README.autofs + install -c -m 644 $< $@ + +install-y2k: $(AMU_HTML_TOP)/y2k.txt +$(AMU_HTML_TOP)/y2k.txt: $(top_srcdir)/README.y2k + install -c -m 644 $< $@ + +install-attrcache: $(AMU_HTML_TOP)/attrcache.txt +$(AMU_HTML_TOP)/attrcache.txt: $(top_srcdir)/README.attrcache + install -c -m 644 $< $@ + +install-sun2amd: $(AMU_HTML_TOP)/sun2amd.txt +$(AMU_HTML_TOP)/sun2amd.txt: $(top_srcdir)/README.sun2amd + install -c -m 644 $< $@ + +install-ldap: $(AMU_HTML_TOP)/ldap.txt +$(AMU_HTML_TOP)/ldap.txt: $(top_srcdir)/README.ldap + install -c -m 644 $< $@ + +install-osx: $(AMU_HTML_TOP)/osx.txt +$(AMU_HTML_TOP)/osx.txt: $(top_srcdir)/README.osx + install -c -m 644 $< $@ + +install-BUGS: $(AMU_HTML_TOP)/BUGS.txt +$(AMU_HTML_TOP)/BUGS.txt: $(top_srcdir)/BUGS + install -c -m 644 $< $@ + +install-FAQ: $(AMU_HTML_TOP)/FAQ.txt +$(AMU_HTML_TOP)/FAQ.txt: $(top_srcdir)/FAQ + install -c -m 644 $< $@ + +install-MIRRORS: $(AMU_HTML_TOP)/MIRRORS.txt $(AMU_HTML_TOP)/MIRRORS.html +$(AMU_HTML_TOP)/MIRRORS.txt: $(top_srcdir)/MIRRORS.txt + install -c -m 644 $< $@ +$(AMU_HTML_TOP)/MIRRORS.html: $(top_srcdir)/MIRRORS.html + install -c -m 644 $< $@ diff --git a/doc/Makefile.in b/doc/Makefile.in new file mode 100644 index 000000000000..e875fffba271 --- /dev/null +++ b/doc/Makefile.in @@ -0,0 +1,875 @@ +# Makefile.in generated by automake 1.14.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# Package: am-utils +# Level: Makefile for doc/ directory +# Author: Erez Zadok +VPATH = @srcdir@ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = doc +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/mkinstalldirs mdate-sh $(srcdir)/version.texi \ + $(srcdir)/stamp-vti texinfo.tex +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 $(top_srcdir)/vers.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +SOURCES = +DIST_SOURCES = +AM_V_DVIPS = $(am__v_DVIPS_@AM_V@) +am__v_DVIPS_ = $(am__v_DVIPS_@AM_DEFAULT_V@) +am__v_DVIPS_0 = @echo " DVIPS " $@; +am__v_DVIPS_1 = +AM_V_MAKEINFO = $(am__v_MAKEINFO_@AM_V@) +am__v_MAKEINFO_ = $(am__v_MAKEINFO_@AM_DEFAULT_V@) +am__v_MAKEINFO_0 = @echo " MAKEINFO" $@; +am__v_MAKEINFO_1 = +AM_V_INFOHTML = $(am__v_INFOHTML_@AM_V@) +am__v_INFOHTML_ = $(am__v_INFOHTML_@AM_DEFAULT_V@) +am__v_INFOHTML_0 = @echo " INFOHTML" $@; +am__v_INFOHTML_1 = +AM_V_TEXI2DVI = $(am__v_TEXI2DVI_@AM_V@) +am__v_TEXI2DVI_ = $(am__v_TEXI2DVI_@AM_DEFAULT_V@) +am__v_TEXI2DVI_0 = @echo " TEXI2DVI" $@; +am__v_TEXI2DVI_1 = +AM_V_TEXI2PDF = $(am__v_TEXI2PDF_@AM_V@) +am__v_TEXI2PDF_ = $(am__v_TEXI2PDF_@AM_DEFAULT_V@) +am__v_TEXI2PDF_0 = @echo " TEXI2PDF" $@; +am__v_TEXI2PDF_1 = +AM_V_texinfo = $(am__v_texinfo_@AM_V@) +am__v_texinfo_ = $(am__v_texinfo_@AM_DEFAULT_V@) +am__v_texinfo_0 = -q +am__v_texinfo_1 = +AM_V_texidevnull = $(am__v_texidevnull_@AM_V@) +am__v_texidevnull_ = $(am__v_texidevnull_@AM_DEFAULT_V@) +am__v_texidevnull_0 = > /dev/null +am__v_texidevnull_1 = +INFO_DEPS = $(srcdir)/am-utils.info +am__TEXINFO_TEX_DIR = $(srcdir) +DVIS = am-utils.dvi +PDFS = am-utils.pdf +PSS = am-utils.ps +HTMLS = am-utils.html +TEXINFOS = am-utils.texi +TEXI2DVI = texi2dvi +TEXI2PDF = $(TEXI2DVI) --pdf --batch +MAKEINFOHTML = $(MAKEINFO) --html +AM_MAKEINFOHTMLFLAGS = $(AM_MAKEINFOFLAGS) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__installdirs = "$(DESTDIR)$(infodir)" +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMD_FS_OBJS = @AMD_FS_OBJS@ +AMD_INFO_OBJS = @AMD_INFO_OBJS@ +AMTAR = @AMTAR@ +AMU_AUTOFS_PROT_HEADER = @AMU_AUTOFS_PROT_HEADER@ +AMU_CFLAGS = @AMU_CFLAGS@ +AMU_LIB_OBJS = @AMU_LIB_OBJS@ +AMU_NFS_PROT_HEADER = @AMU_NFS_PROT_HEADER@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LEX = @LEX@ +LEXLIB = @LEXLIB@ +LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIBTOOL_DEPS = @LIBTOOL_DEPS@ +LIBTOOL_LDFLAGS = @LIBTOOL_LDFLAGS@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PERL = @PERL@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +UNMOUNT_PROGRAM = @UNMOUNT_PROGRAM@ +VERSION = @VERSION@ +WRAPLIB = @WRAPLIB@ +YACC = @YACC@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +am_utils_unmount_args = @am_utils_unmount_args@ +am_utils_unmount_call = @am_utils_unmount_call@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +info_TEXINFOS = am-utils.texi +EXTRA_DIST = hlfsd.ps + +# force generation of 'letter' format PS and embed Type-3 fonts +# (our European allies may object...) +DVIPS = dvips -t letter -Pcmz +AMU_HTML_TOP = $(HOME)/proj/www/docs/am-utils +all: all-am + +.SUFFIXES: +.SUFFIXES: .dvi .html .info .pdf .ps .texi +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu doc/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +.texi.info: + $(AM_V_MAKEINFO)restore=: && backupdir="$(am__leading_dot)am$$$$" && \ + am__cwd=`pwd` && $(am__cd) $(srcdir) && \ + rm -rf $$backupdir && mkdir $$backupdir && \ + if ($(MAKEINFO) --version) >/dev/null 2>&1; then \ + for f in $@ $@-[0-9] $@-[0-9][0-9] $(@:.info=).i[0-9] $(@:.info=).i[0-9][0-9]; do \ + if test -f $$f; then mv $$f $$backupdir; restore=mv; else :; fi; \ + done; \ + else :; fi && \ + cd "$$am__cwd"; \ + if $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) \ + -o $@ $<; \ + then \ + rc=0; \ + $(am__cd) $(srcdir); \ + else \ + rc=$$?; \ + $(am__cd) $(srcdir) && \ + $$restore $$backupdir/* `echo "./$@" | sed 's|[^/]*$$||'`; \ + fi; \ + rm -rf $$backupdir; exit $$rc + +.texi.dvi: + $(AM_V_TEXI2DVI)TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \ + MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir)' \ + $(TEXI2DVI) $(AM_V_texinfo) --build-dir=$(@:.dvi=.t2d) -o $@ $(AM_V_texidevnull) \ + $< + +.texi.pdf: + $(AM_V_TEXI2PDF)TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \ + MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir)' \ + $(TEXI2PDF) $(AM_V_texinfo) --build-dir=$(@:.pdf=.t2p) -o $@ $(AM_V_texidevnull) \ + $< + +.texi.html: + $(AM_V_MAKEINFO)rm -rf $(@:.html=.htp) + $(AM_V_at)if $(MAKEINFOHTML) $(AM_MAKEINFOHTMLFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) \ + -o $(@:.html=.htp) $<; \ + then \ + rm -rf $@ && mv $(@:.html=.htp) $@; \ + else \ + rm -rf $(@:.html=.htp); exit 1; \ + fi +$(srcdir)/am-utils.info: am-utils.texi $(srcdir)/version.texi +am-utils.dvi: am-utils.texi $(srcdir)/version.texi +am-utils.pdf: am-utils.texi $(srcdir)/version.texi +am-utils.html: am-utils.texi $(srcdir)/version.texi +$(srcdir)/stamp-vti: am-utils.texi $(top_srcdir)/configure + @(dir=.; test -f ./am-utils.texi || dir=$(srcdir); \ + set `$(SHELL) $(srcdir)/mdate-sh $$dir/am-utils.texi`; \ + echo "@set UPDATED $$1 $$2 $$3"; \ + echo "@set UPDATED-MONTH $$2 $$3"; \ + echo "@set EDITION $(VERSION)"; \ + echo "@set VERSION $(VERSION)") > vti.tmp + @cmp -s vti.tmp $(srcdir)/version.texi \ + || (echo "Updating $(srcdir)/version.texi"; \ + cp vti.tmp $(srcdir)/version.texi) + -@rm -f vti.tmp + @cp $(srcdir)/version.texi $@ + +mostlyclean-vti: + -rm -f vti.tmp + +maintainer-clean-vti: +@MAINTAINER_MODE_TRUE@ -rm -f $(srcdir)/stamp-vti $(srcdir)/version.texi +.dvi.ps: + $(AM_V_DVIPS)TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \ + $(DVIPS) $(AM_V_texinfo) -o $@ $< + +uninstall-dvi-am: + @$(NORMAL_UNINSTALL) + @list='$(DVIS)'; test -n "$(dvidir)" || list=; \ + for p in $$list; do \ + $(am__strip_dir) \ + echo " rm -f '$(DESTDIR)$(dvidir)/$$f'"; \ + rm -f "$(DESTDIR)$(dvidir)/$$f"; \ + done + +uninstall-html-am: + @$(NORMAL_UNINSTALL) + @list='$(HTMLS)'; test -n "$(htmldir)" || list=; \ + for p in $$list; do \ + $(am__strip_dir) \ + echo " rm -rf '$(DESTDIR)$(htmldir)/$$f'"; \ + rm -rf "$(DESTDIR)$(htmldir)/$$f"; \ + done + +uninstall-info-am: + @$(PRE_UNINSTALL) + @if test -d '$(DESTDIR)$(infodir)' && $(am__can_run_installinfo); then \ + list='$(INFO_DEPS)'; \ + for file in $$list; do \ + relfile=`echo "$$file" | sed 's|^.*/||'`; \ + echo " install-info --info-dir='$(DESTDIR)$(infodir)' --remove '$(DESTDIR)$(infodir)/$$relfile'"; \ + if install-info --info-dir="$(DESTDIR)$(infodir)" --remove "$(DESTDIR)$(infodir)/$$relfile"; \ + then :; else test ! -f "$(DESTDIR)$(infodir)/$$relfile" || exit 1; fi; \ + done; \ + else :; fi + @$(NORMAL_UNINSTALL) + @list='$(INFO_DEPS)'; \ + for file in $$list; do \ + relfile=`echo "$$file" | sed 's|^.*/||'`; \ + relfile_i=`echo "$$relfile" | sed 's|\.info$$||;s|$$|.i|'`; \ + (if test -d "$(DESTDIR)$(infodir)" && cd "$(DESTDIR)$(infodir)"; then \ + echo " cd '$(DESTDIR)$(infodir)' && rm -f $$relfile $$relfile-[0-9] $$relfile-[0-9][0-9] $$relfile_i[0-9] $$relfile_i[0-9][0-9]"; \ + rm -f $$relfile $$relfile-[0-9] $$relfile-[0-9][0-9] $$relfile_i[0-9] $$relfile_i[0-9][0-9]; \ + else :; fi); \ + done + +uninstall-pdf-am: + @$(NORMAL_UNINSTALL) + @list='$(PDFS)'; test -n "$(pdfdir)" || list=; \ + for p in $$list; do \ + $(am__strip_dir) \ + echo " rm -f '$(DESTDIR)$(pdfdir)/$$f'"; \ + rm -f "$(DESTDIR)$(pdfdir)/$$f"; \ + done + +uninstall-ps-am: + @$(NORMAL_UNINSTALL) + @list='$(PSS)'; test -n "$(psdir)" || list=; \ + for p in $$list; do \ + $(am__strip_dir) \ + echo " rm -f '$(DESTDIR)$(psdir)/$$f'"; \ + rm -f "$(DESTDIR)$(psdir)/$$f"; \ + done + +dist-info: $(INFO_DEPS) + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + list='$(INFO_DEPS)'; \ + for base in $$list; do \ + case $$base in \ + $(srcdir)/*) base=`echo "$$base" | sed "s|^$$srcdirstrip/||"`;; \ + esac; \ + if test -f $$base; then d=.; else d=$(srcdir); fi; \ + base_i=`echo "$$base" | sed 's|\.info$$||;s|$$|.i|'`; \ + for file in $$d/$$base $$d/$$base-[0-9] $$d/$$base-[0-9][0-9] $$d/$$base_i[0-9] $$d/$$base_i[0-9][0-9]; do \ + if test -f $$file; then \ + relfile=`expr "$$file" : "$$d/\(.*\)"`; \ + test -f "$(distdir)/$$relfile" || \ + cp -p $$file "$(distdir)/$$relfile"; \ + else :; fi; \ + done; \ + done + +mostlyclean-aminfo: + -rm -rf am-utils.t2d am-utils.t2p + +clean-aminfo: + -test -z "am-utils.dvi am-utils.pdf am-utils.ps am-utils.html" \ + || rm -rf am-utils.dvi am-utils.pdf am-utils.ps am-utils.html + +maintainer-clean-aminfo: + @list='$(INFO_DEPS)'; for i in $$list; do \ + i_i=`echo "$$i" | sed 's|\.info$$||;s|$$|.i|'`; \ + echo " rm -f $$i $$i-[0-9] $$i-[0-9][0-9] $$i_i[0-9] $$i_i[0-9][0-9]"; \ + rm -f $$i $$i-[0-9] $$i-[0-9][0-9] $$i_i[0-9] $$i_i[0-9][0-9]; \ + done +tags TAGS: + +ctags CTAGS: + +cscope cscopelist: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$(top_distdir)" distdir="$(distdir)" \ + dist-info dist-hook +check-am: all-am +check: check-am +all-am: Makefile $(INFO_DEPS) +installdirs: + for dir in "$(DESTDIR)$(infodir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-aminfo clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: $(DVIS) + +html: html-am + +html-am: $(HTMLS) + +info: info-am + +info-am: $(INFO_DEPS) + +install-data-am: install-info-am + +install-dvi: install-dvi-am + +install-dvi-am: $(DVIS) + @$(NORMAL_INSTALL) + @list='$(DVIS)'; test -n "$(dvidir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(dvidir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(dvidir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(dvidir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(dvidir)" || exit $$?; \ + done +install-exec-am: + +install-html-am: $(HTMLS) + @$(NORMAL_INSTALL) + @list='$(HTMLS)'; list2=; test -n "$(htmldir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(htmldir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(htmldir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p" || test -d "$$p"; then d=; else d="$(srcdir)/"; fi; \ + $(am__strip_dir) \ + d2=$$d$$p; \ + if test -d "$$d2"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(htmldir)/$$f'"; \ + $(MKDIR_P) "$(DESTDIR)$(htmldir)/$$f" || exit 1; \ + echo " $(INSTALL_DATA) '$$d2'/* '$(DESTDIR)$(htmldir)/$$f'"; \ + $(INSTALL_DATA) "$$d2"/* "$(DESTDIR)$(htmldir)/$$f" || exit $$?; \ + else \ + list2="$$list2 $$d2"; \ + fi; \ + done; \ + test -z "$$list2" || { echo "$$list2" | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(htmldir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(htmldir)" || exit $$?; \ + done; } +install-info: install-info-am + +install-info-am: $(INFO_DEPS) + @$(NORMAL_INSTALL) + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + list='$(INFO_DEPS)'; test -n "$(infodir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(infodir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(infodir)" || exit 1; \ + fi; \ + for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + esac; \ + if test -f $$file; then d=.; else d=$(srcdir); fi; \ + file_i=`echo "$$file" | sed 's|\.info$$||;s|$$|.i|'`; \ + for ifile in $$d/$$file $$d/$$file-[0-9] $$d/$$file-[0-9][0-9] \ + $$d/$$file_i[0-9] $$d/$$file_i[0-9][0-9] ; do \ + if test -f $$ifile; then \ + echo "$$ifile"; \ + else : ; fi; \ + done; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(infodir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(infodir)" || exit $$?; done + @$(POST_INSTALL) + @if $(am__can_run_installinfo); then \ + list='$(INFO_DEPS)'; test -n "$(infodir)" || list=; \ + for file in $$list; do \ + relfile=`echo "$$file" | sed 's|^.*/||'`; \ + echo " install-info --info-dir='$(DESTDIR)$(infodir)' '$(DESTDIR)$(infodir)/$$relfile'";\ + install-info --info-dir="$(DESTDIR)$(infodir)" "$(DESTDIR)$(infodir)/$$relfile" || :;\ + done; \ + else : ; fi +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: $(PDFS) + @$(NORMAL_INSTALL) + @list='$(PDFS)'; test -n "$(pdfdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pdfdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pdfdir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pdfdir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(pdfdir)" || exit $$?; done +install-ps-am: $(PSS) + @$(NORMAL_INSTALL) + @list='$(PSS)'; test -n "$(psdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(psdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(psdir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(psdir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(psdir)" || exit $$?; done +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-aminfo \ + maintainer-clean-generic maintainer-clean-vti + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-aminfo mostlyclean-generic \ + mostlyclean-libtool mostlyclean-vti + +pdf: pdf-am + +pdf-am: $(PDFS) + +ps-am: $(PSS) + +uninstall-am: uninstall-dvi-am uninstall-html-am uninstall-info-am \ + uninstall-pdf-am uninstall-ps-am + +.MAKE: install-am install-strip + +.PHONY: all all-am check check-am clean clean-aminfo clean-generic \ + clean-libtool cscopelist-am ctags-am dist-hook dist-info \ + distclean distclean-generic distclean-libtool distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-man install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-aminfo maintainer-clean-generic \ + maintainer-clean-vti mostlyclean mostlyclean-aminfo \ + mostlyclean-generic mostlyclean-libtool mostlyclean-vti pdf \ + pdf-am ps ps-am tags-am uninstall uninstall-am \ + uninstall-dvi-am uninstall-html-am uninstall-info-am \ + uninstall-pdf-am uninstall-ps-am + + +@SET_MAKE@ + +# Force version.texi to be rebuilt regardless of maintainer mode +$(srcdir)/version.texi: am-utils.texi $(top_srcdir)/configure.ac + @(set `$(SHELL) $(srcdir)/mdate-sh $(srcdir)/am-utils.texi`; \ + echo "@set UPDATED $$1 $$2 $$3"; \ + echo "@set UPDATED-MONTH $$2 $$3"; \ + echo "@set EDITION $(VERSION)"; \ + echo "@set VERSION $(VERSION)") > vti.tmp + @cmp -s vti.tmp $(srcdir)/version.texi \ + || (echo "Updating $(srcdir)/version.texi"; \ + cp vti.tmp $(srcdir)/version.texi) + -@rm -f vti.tmp + +# include dvi/ps in distribution +dist-hook: $(distdir)/am-utils.dvi $(distdir)/am-utils.ps + +$(distdir)/am-utils.dvi: am-utils.dvi + install -c -m 644 $< $@ + +$(distdir)/am-utils.ps: am-utils.ps + install -c -m 644 $< $@ + +# a special target for making Postscript files +ps: am-utils.dvi am-utils.ps + +am-utils-clean: clean maintainer-clean-aminfo maintainer-clean-vti + +# personal rule for Erez Zadok to generate and install html docs +alldocs: ps install-NEWS install-INSTALL install-ChangeLog install-AUTHORS install-tasks install-autofs install-y2k install-ldap install-osx install-BUGS install-FAQ install-html install-ps install-MIRRORS install-attrcache install-sun2amd +install-html: $(AMU_HTML_TOP)/am-utils-all.html +$(AMU_HTML_TOP)/am-utils-all.html: am-utils.texi + texi2html -Verbose -expand info -number -out_file am-utils-all.html $< + texi2html -frames -Verbose -expand info -number -split chapter $< + mv am-utils-all.html am-utils/*.html $(AMU_HTML_TOP) + chmod -R a+r $(AMU_HTML_TOP) + +install-ps: $(AMU_HTML_TOP)/am-utils.ps +$(AMU_HTML_TOP)/am-utils.ps: am-utils.ps + install -c -m 644 $< $@ + +install-NEWS: $(AMU_HTML_TOP)/NEWS.txt +$(AMU_HTML_TOP)/NEWS.txt: $(top_srcdir)/NEWS + install -c -m 644 $< $@ + +install-INSTALL: $(AMU_HTML_TOP)/INSTALL.txt +$(AMU_HTML_TOP)/INSTALL.txt: $(top_srcdir)/INSTALL + install -c -m 644 $< $@ + +install-ChangeLog: $(AMU_HTML_TOP)/ChangeLog.txt +$(AMU_HTML_TOP)/ChangeLog.txt: $(top_srcdir)/ChangeLog + sed 's/@.*>$$/@...>/g' < $< > $@ + chmod 644 $@ + +install-AUTHORS: $(AMU_HTML_TOP)/AUTHORS.txt +$(AMU_HTML_TOP)/AUTHORS.txt: $(top_srcdir)/AUTHORS + install -c -m 644 $< $@ + +install-tasks: $(AMU_HTML_TOP)/tasks.txt +$(AMU_HTML_TOP)/tasks.txt: $(top_srcdir)/tasks + install -c -m 644 $< $@ + +install-autofs: $(AMU_HTML_TOP)/autofs.txt +$(AMU_HTML_TOP)/autofs.txt: $(top_srcdir)/README.autofs + install -c -m 644 $< $@ + +install-y2k: $(AMU_HTML_TOP)/y2k.txt +$(AMU_HTML_TOP)/y2k.txt: $(top_srcdir)/README.y2k + install -c -m 644 $< $@ + +install-attrcache: $(AMU_HTML_TOP)/attrcache.txt +$(AMU_HTML_TOP)/attrcache.txt: $(top_srcdir)/README.attrcache + install -c -m 644 $< $@ + +install-sun2amd: $(AMU_HTML_TOP)/sun2amd.txt +$(AMU_HTML_TOP)/sun2amd.txt: $(top_srcdir)/README.sun2amd + install -c -m 644 $< $@ + +install-ldap: $(AMU_HTML_TOP)/ldap.txt +$(AMU_HTML_TOP)/ldap.txt: $(top_srcdir)/README.ldap + install -c -m 644 $< $@ + +install-osx: $(AMU_HTML_TOP)/osx.txt +$(AMU_HTML_TOP)/osx.txt: $(top_srcdir)/README.osx + install -c -m 644 $< $@ + +install-BUGS: $(AMU_HTML_TOP)/BUGS.txt +$(AMU_HTML_TOP)/BUGS.txt: $(top_srcdir)/BUGS + install -c -m 644 $< $@ + +install-FAQ: $(AMU_HTML_TOP)/FAQ.txt +$(AMU_HTML_TOP)/FAQ.txt: $(top_srcdir)/FAQ + install -c -m 644 $< $@ + +install-MIRRORS: $(AMU_HTML_TOP)/MIRRORS.txt $(AMU_HTML_TOP)/MIRRORS.html +$(AMU_HTML_TOP)/MIRRORS.txt: $(top_srcdir)/MIRRORS.txt + install -c -m 644 $< $@ +$(AMU_HTML_TOP)/MIRRORS.html: $(top_srcdir)/MIRRORS.html + install -c -m 644 $< $@ + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/doc/am-utils.dvi b/doc/am-utils.dvi Binary files differnew file mode 100644 index 000000000000..9fe4ff7e4dde --- /dev/null +++ b/doc/am-utils.dvi 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 diff --git a/doc/am-utils.info-1 b/doc/am-utils.info-1 new file mode 100644 index 000000000000..37ac0b5e53e4 --- /dev/null +++ b/doc/am-utils.info-1 @@ -0,0 +1,7645 @@ +This is ../../doc/am-utils.info, produced by makeinfo version 4.8 from +../../doc/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-rc1, 21 November 2010 + + Erez Zadok +(Originally by Jan-Simon Pendry and Nick Williams) + + Copyright (C) 1997-2009 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. All advertising materials mentioning features or use of this + software must display the following acknowledgment: + + "This product includes software developed by the University of + California, Berkeley and its contributors, as well as the Trustees + of Columbia University." + + 4. 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 |