Browse Source

Merge ^/head r358731 through r358831.

dim 6 months ago
Notes: dim 6 months ago
svn path=/projects/clang1000-import/; revision=358832
100 changed files with 27 additions and 48522 deletions
  1. +0
  2. +22
  3. +5
  4. +0
  5. +0
  6. +0
  7. +0
  8. +0
  9. +0
  10. +0
  11. +0
  12. +0
  13. +0
  14. +0
  15. +0
  16. +0
  17. +0
  18. +0
  19. +0
  20. +0
  21. +0
  22. +0
  23. +0
  24. +0
  25. +0
  26. +0
  27. +0
  28. +0
  29. +0
  30. +0
  31. +0
  32. +0
  33. +0
  34. +0
  35. +0
  36. +0
  37. +0
  38. +0
  39. +0
  40. +0
  41. +0
  42. +0
  43. +0
  44. +0
  45. +0
  46. +0
  47. +0
  48. +0
  49. +0
  50. +0
  51. +0
  52. +0
  53. +0
  54. +0
  55. +0
  56. +0
  57. +0
  58. +0
  59. +0
  60. +0
  61. +0
  62. +0
  63. +0
  64. +0
  65. +0
  66. +0
  67. +0
  68. +0
  69. +0
  70. +0
  71. +0
  72. +0
  73. +0
  74. +0
  75. +0
  76. +0
  77. +0
  78. +0
  79. +0
  80. +0
  81. +0
  82. +0
  83. +0
  84. +0
  85. +0
  86. +0
  87. +0
  88. +0
  89. +0
  90. +0
  91. +0
  92. +0
  93. +0
  94. +0
  95. +0
  96. +0
  97. +0
  98. +0
  99. +0
  100. +0

+ 0
- 5
Makefile.inc1 View File

@@ -2284,11 +2284,6 @@ _basic_bootstrap_tools+=sbin/sysctl bin/chflags
# mkfifo is used by sys/conf/

.if ${MK_AMD} != "no"
# unifdef is only used by usr.sbin/amd/libamu/Makefile

.if ${MK_BOOT} != "no"
# xz/unxz is used by EFI

+ 22
- 0 View File

@@ -273,6 +273,28 @@ OLD_DIRS+=usr/lib/clang/9.0.1/lib/freebsd

# 20200309: amd(8) retired
# 20200301: bktr removed

+ 5
- 0

@@ -32,6 +32,11 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 13.x IS SLOW:
information about prerequisites and upgrading, if you are not already
using clang 3.5.0 or higher.

The amd(8) automount daemon has been removed from the source tree.
As of FreeBSD 10.1 autofs(5) is the preferred tool for automounting.
amd is still available in the sysutils/am-utils port.

Removed brooktree driver (bktr.4) from the tree.

+ 0
- 427
contrib/amd/AUTHORS View File

@@ -1,427 +0,0 @@
Original authors of amd were the Berkeley team and especially Jan-Simon
Pendry. Since then many people have contributed patches.

This file lists the ones who contributed major code changes, in no
particular order, and I thank them all. This is of course not to diminish
the smaller contributes of the many others. Thank you all.

* Erez Zadok <ezk AT>

The most significant changes were made by Erez Zadok in terms of bug fixes,
ports, and new features added. Erez Zadok is the current maintainer of
am-utils, as of January 1997.

* Ion Badulescu <ion AT>

Co-maintainer of am-utils since late 1999: Linux and Solaris autofs support,
Linux NFSv3 support, major code reorganization, etc...

* Randall S. Winchester <rsw AT>

May 7, 1997: contributed a special version of upl102 that included NFS V.3
support. Some of the code was contributed by Christos Zoulas
<christos AT>. I (Erez) ported these changes to am-utils.

September 12, 1997: lots of small prototype cleanups and fixes to numerous

January 27, 1998: support pid files in the amd.conf file. Provide base name
for hesiod zone files. Always use /etc/amd.conf if exists.

August 8, 1998: add detection support for NFS V.3 for NetBSD 1.3F.

February 1, 1998: fixes for NetBSD to better detect its features.

September 4, 1999: assorted fixes for NetBSD 1.4+.

* Hannes Reinecke <hare AT MathI.UNI-Heidelberg.DE>

Back in 1995, contributed code for linux. A new parser for file system
specific options that only exist under linux.

* Leif Johansson <leifj AT>

June 22, 1997: minor patch to ensure that systems without an RE library work.

June 23, 1997: mount options should be properly comma limited.

July 10, 1997: info_ldap.c and prototype changes to all map _init and _mtime
functions. Contributed scripts/

August 4, 1997: info_ldap.c fixes and adding two new amd.conf ldap
variables: ldap_cache_seconds and ldap_cache_maxmem.

* Andreas Stolcke <stolcke AT>

June 22, 1997: patches to ensure that proto= and vers= options work
properly in mount tables and can be overridden. Later on, more code
contribued to optimize the best combination of proto/vers.

July 4, 1997: patches to get NFS V.3 working under irix5.

September 9, 1997: initialize all fields of mntent_t structures to 0.

October 2, 1997: don't log an RPC timeout as an error but only as an info

December 19, 1997: detected an FMR (Free Memory Read) in amd/mntfs.c,

* Danny Braniss <danny AT>

July, 6 1997: contributed patches to hesiod on bsdi3.

* Tom Schmidt <tschmidt AT>

July 10, 1997: Recommdation to include libgdbm if libc has no dbm_open.
Patches for netgrp(host) command. Mods to aux/config.guess to recognize

January 19, 1998: print correct -l option depending if system supports
syslog and/or syslog facilities.

January 29, 1998: fix for loopback on SunOS 3.X which defines

May 30, 2000: correct logging types for addopts/mergeopts messages.

* Daniel S. Riley <dsr AT>

July 11, 1997: fixes to DU-4.0 to support string POSIX.1 signals, and struct
sockaddr with sa_len field.

July 13, 1997: Move amd.conf parsing to before switch_option() on log/debug
options. Minor type wrt "ro" option in libamu/mount_fs.c. Added more
fillers of mnttab options, for acdirmax, acdirmin, acregmax, acregmin, noac,
grpid, nosuid, and actimo.

August 15, 1998: fix memory leak in processing of /defaults, and avoid
accessing uninitialized memory in osf1.

* Roman Hodek <Roman.Hodek AT>

July 23, 1997: Got lots of patches from the Debian Linux folks, who fixed
several generic bugs, and one serious one for Linux. The latter involved
using connected sockets for NFS mounts on kernels 1.3.10 and older. Roman's
work is baed on amd-upl102, and work from Ian Murdock <imurdock AT>
and Dominik Kubla <dominik AT>.

* Rainer Orth <ro AT TechFak.Uni-Bielefeld.DE>

August 6, 1997: assorted fixes to support hesiod-1.3, solaris 2.4 (which I
already fixed but did not release yet), and support for $LDFLAGS at
configure/compile time.

February 24, 1998: lots of patches for ultrix 4.3 port.

February 28, 1998: lots of documentation fixes!

January 8, 1999: texi fixes, and more Ultrix 4.3 fixes, among others.

January 11, 1999: hesiod_isup function. Fix format errors in dlog/plog.
Remove obsolete or unnecessary files/macros. Don't report disabled file
systems. More misc fixes.

February 3, 1998: don't start autofs listener unless autofs maps were in

December 10, 1999: assorted fixed and lots of fixes to support in-kernel
mount tables in Solaris 8.

February 9, 2000: new debug options hrtime (hi-res timer) and xdrtrace. bug

* Jason Thorpe <thorpej AT>

August 25, 1997: make amd work when talking to NIS+ servers in NIS
compatibility mode. Fix originally came from Matthieu Herrb
<matthieu AT>.

* Chris Metcalf <metcalf AT>

August 29, 1997: patch to make amd use FQHN for NFS/RPC authentication,
useful esp. for cross-domain NFS mounts.
September 2, 1997: if plock() succeeded, don't display errno string.

* Enami Tsugutomo <enami AT>

September 4, 1997: don't ping remote servers with NFS V.3 always, but V.2,
regardless of client's NFS version. (conf/transp/transp_sockets.c)

* Dan Riley <dsr AT>

September 19, 1997: make sure that amd works with more secure portmappers
that do not allow forwarding of RPC messages to other services.

* Wolfgang Rupprecht <wolfgang AT>

August 10, 1997: netbsd and other bsd systems have a mask flag for
pcfs_args (msdos mount).

* Christos Zoulas <christos AT>

September 25, 1997: fix to initialize uid/gid fields of pcfs_args_t on

October 10, 1997: compile time cleanups of printf()s in hlfsd code. If nfs
server is down or does not support a portmapper call, then mark it down as
version 2, and try again later.

November 29, 2002: compile fixes for NetBSD, a couple of bug fixes (one
already fixed by maintainers)

April 12, 2003: support new "unmount" option, useful to timeout removable
local media mounts.

October 12, 2004: patch to support two new amd.conf options, domain_strip
and auto_attrcache. Patch to cleanup NFS attribute-cache flag computation.
Patch to fix an inconsistency in timeouts in the RPC code between socket and
TLI implementations. Patch to print version string (amd -v) after all
options had been initialized, so we can print domain, host, and hostd.
Linux patch to use umount2(2) if umount(2) fails.

* Bill Paul <wpaul AT>

November 5, 1997: NFS v.3 support for AIX 4.2.1, which does *not* include
headers for this. Bill had to guess at the right structures, field names,
sizes, alignment, etc.

January 15, 1999: small ldap bug fixes.

* Stefan Vogel <vogel AT>

November 14, 1997: typo in the subscription instructions to amd-dev.

* Guntram Wolski <gwolsk AT>

November 15, 1997: pointed out mismatching documentation for the -o option.

* Michael Hucka <hucka AT>

January 11, 1997: pointed out reversed definition of NFS mount options vers
and proto.

* Albert Chin <china AT>

January 12, 1998: minor bug in output of amd -H.

June 23, 2005: assortment of small compile bugs on aix4, and solaris 5/6/7.

* Thomas Richter <richter AT>

January 13, 1998: use case insensitive comparisons for variables that need
it (such as all hostname related ones, and more).

July 20, 1998: don't leak memory in the private version of yp_all (when
vendor yp_all is bad).

* Fred Korz <korz AT>

January 30, 1998: minor typo fixed to tftp example in am-utils.texi.

* Donald Buczek <buczek AT MPIMG-Berlin-Dahlem.MPG.DE>

March 6, 1998: correctly inherit existing NFS V.3 mounts upon restart.

March 17, 1998: compare log file name and syslog string with correct length.

March 20, 1998: do not close stdout in case it gets reused elsewhere and to
allow startup script to redirect it. Set a temporary secure umask(0022)
before writing log file and restore it afterwards.

* Matthew Crosby <mcrosby AT>

April 20, 1998: allow arbitrary number of interfaces in wire listing.

* David O'Brien <obrien AT>

September 4, 1998: bug fix to avoid overrunning hostname buffer, and minor
amd.conf man page typo correction.

September 22, 1999: use more secure vsnprintf in real_plog().

* Danny Rathjens <dkr AT>

October 29, 1998: swap arguments to kill(2) in amd.c.

* Mike Mitchell <mcm AT>

November 3, 1998: amd/nfs_subr.c (nfsproc_lookup_2_svc): try to avoid a race
condition between unmounting and re-mounting an entry, by increasing the ttl
of a looked up entry before unmounting it.

* Douglas K. Rand" <rand AT>

December 3, 1998: case insensitive host name match for nfsl.

* David Wolfskill <dhw AT>
January 28, 1999: don't turn on/off noconn option if it was already in that

* Jeffrey C Honig <jch AT BSDI.COM>
March 14, 1999: clean up more autogenerated files upon "make distclean".

March 15, 1999: avoid overly verbose NIS warning even on systems that don't
run NIS. On BSD systems, wire.c uses getifaddrs(), sysctl(), IRS routines,
and more fixes. Numerous IP packet security fixes.

March 16, 1999: documentation typos. new cdfs options. ufs structure
detection for bsdi4.

September 17, 1999: fixes to expn.

* Paul Balyoz <pbalyoz AT>
March 26, 1999: ensure lostaltmail displays Y2K compliant dates.

* Jon Peatfield <J.S.Peatfield AT>
March 30, 1999: turn off incomplete NFS V.3 support in HPUX 10.20.

September 22, 1999: safe reloading of maps without first clearing old
copies, and using cached copies if map failed to reload.

* Peter Breitenlohner <peb AT>
July 24, 1999: patch for linux 2.2.x to work with older libc5 systems, and
nis_isup mis-logic fixes.
December 13, 2001: report typos in scripts/amd.conf.5.

* Dale Talcott <aeh AT>
July 26, 1999: added NFS3 support for AIX mounting.

* Christophe Kalt <Christophe-Kalt AT>
July 14, 1999: add netgrpd() syntax function which uses FQHN.

* Andrew J. Korty <ajk AT>
September 5, 1999: pawd works for type:=nfsl.

* Nick Williams <njw AT>
September 1, 1999: bug fix for incorrect symlinks when two locations are
requested simultaneously.

November 1, 1999: fixes to sync maps even if they are set to mapcache:=sync.

January 19, 2000: fix (and reduce the incidence of) stale file handles when
doing rapid mounts and umounts in succession.

June 5, 2000: better handling of potential race-conditions during rapid
u/mounts. Correctly update d_drops stats for amq -s.

* Johann Pfefferl < AT>
November 16, 1999: fix to ldap code so repeated calls to string2he don't
corrupt the string passed.

* Amitha Perera <perera AT>
December 9, 1999: detect all wire() interfaces correctly.

* Steven Danz <sdanz AT>
January 25, 2000: allow browsable auto maps.

* Wolfram Klaus <klaus AT>.
November 21, 2000: recognize proplist mnttab flag.

* Thomas Klausner <tk AT>
November 21, 2000: lots of NetBSD fixes (many of which are generic).

April 18, 2003: patch to reference am-utils info pages in man page.

November 28, 2004: small fixes to typos in amd.conf(5) man page.

* Olaf Kirch <okir AT>
February 1, 2001: important Linux NFS error number mapping fixed

* Ahmon Dancy <dancy AT>
February 9, 2001: Apple Rhapsody/Darwin/OS X port

* Sebastien Bahloul <sebastien.bahloul AT>
July 3, 2001: LDAP fixes and updates to support new APIs

March 27, 2002: LDAP bug and port to HPUX-11.

* Philippe Troin <phil AT>
July 12, 2001: Proper handling of GNU getopt, support for optionally
disabling LDAP/Hesiod, fixes for the dev/nodev option on Linux. Texi
documentation fix.

November 28, 2001: Bug fix. Support "nolock" as an NFS option, not a
generic mount option.

July 17, 2003: pref:=null core dump fix. libgdbm portability. tcpd/librap
support. And a few other things for the 6.0 branch.

* Trond Myklebust <trond.myklebust AT>
January 10, 2002: Proper initialization of the timeo parameter on Linux, TCP
_must_ have a timeout 2 orders of magnitude larger than UDP

* George Ross <gdmr AT>
April 29, 2002: Rework of old code, support for wildcards in LDAP queries,
and an FD leak fix. Amd -A support.

October 21, 2002: ldap_unbind fix for SIGPIPE, and support for LDAPv3
protocol version parameter (with Tim Colles <timc AT>).

* Matthias Scheler <tron AT>
June 14, 2002: patch to use "xlatecookie" NFS mount option.

* Jun-ichiro itojun Hagino <itojun AT>.
June 11, 2002: minor fixes to support NetBSD 1.6A.

* Sean Fagan <sef AT>
March 14, 2003: detect and use the MNT2_GEN_OPT_AUTOMNTFS mount flag
on OS X / Darwin.

* Hendrik Scholz <hscholz AT>
June 9, 2003: mk-amd-map should open temp db file using O_EXCL.

* Mark Davies <mark AT>
July 14, 2003: define "xlatecookie" mnttab option if not defined (for
NetBSD). Support null hesiod entries if they start with a ".".

* Eric S. Raymond <esr AT>
December 9, 2003: fix unbalanced [] typo in fsinfo man page.

* Martin Blapp <mb AT>
July 6, 2004: recognize fields in pcfs_args_t in FreeBSD 5.

* Dan Nelson <dnelson AT>
August 2, 2004: pawd to recognize "host" type mounts.

* Hauke Fath <hauke AT Espresso.Rhein-Neckar.DE>
August 3, 2004: pawd to recognize "linkx" type mounts.

* Michael van Elst <M.van.Elst AT>
September 1, 2004: bug fix to avoid race condition in calls to mntctl on

* Jonathan Chen <jon+amd AT>
October 22, 2004: patch/fix to move mlock/mlockall/plock code after the
June 29, 2005: core dump going off end of exported_ap[] array.
September 29, 2005: patch/fix for pawd not to go into an infinite loop.
October 25, 2005: patch/fix for pawd to repeatedly resolve path.

* David Rage <rage AT>
January 17, 2005: prevent Amd from logging 'Read-only filesystem' errors
when the mount point has an ancestor (i.e. '/') that is mounted read-only.

* Kevin Layer <layer AT>
January 28, 2005: basic instructions how to setup Amd on Mac OS-X.

* Dan Ottavio <dottavio AT>
March 2, 2005: new global amd.conf option debug_mtab_file, to set the debug
mtab file when using debug_options=mtab. Default has changed from "./mtab"
to "/tmp/mtab" to avoid security problem. Bug fixed to ensure that Amd
terminates properly even mtab file doesn't exist.

* Erik Kline <ekline at ekline dot com>
January 3, 2005: implementation of executable maps for Amd.

* Jim Zajkowski <jim.zajkowski AT>
March 14, 2005: small patch to amd2ldif.

* Adam Morley <adam at gmi dot com>
January 27, 2005: synchronize what amd2ldif does vs. what the ldap.schema

* Graeme Wilford <G.Wilford AT>
July 4, 2005: buffer overflow in pawd.

+ 0
- 303
contrib/amd/BUGS View File

@@ -1,303 +0,0 @@

Note: report am-utils bugs via Bugzilla to or
by email to the am-utils mailing list (see

(1) mips-sgi-irix*

[1A] known to have flaky NFS V.3 and TCP. Amd tends to hang or spin
infinitely after a few hours or days of use. Users must install recommended
patches from vendor. Patches help, but not all the time. Otherwise avoid
using NFS V.3 and TCP on these systems, by setting

/defaults opts:=vers=2,proto=udp

[1B] yp_all() leaks a file descriptor. Eventually amd runs out of file
descriptors and hangs. Am-utils circumvents this by using its own version
of yp_all which uses udp and iterates over NIS maps. The latter isn't as
reliable as yp_all() which uses TCP, but it is better than hanging.

(I have some reports that older version of hpux-9, with older libc, also
leak file descriptors.)

[1C] SGI's MIPSpro C compiler on IRIX 6 has the unfortunate habit of
creating code specificially for the machine it runs on. The ABI and ISA
used depend very much on the OS version and compiler release used. This
means that the resulting amd binary won't run on machines different from
the build host, particularly older ones. Older versions of am-utils
enforced the O32 ABI when compiling with cc to work around this, but this
ABI is deprecated in favor of the N32 ABI now, so we use -n32 -mips3 to
ensure that the binaries run on every host capable of running IRIX 6 at
all. If this is not appropriate for you, configure with something like
CC='cc -64' instead to get the desired ABI and ISA.

(2) alpha-unknown-linux-gnu (RedHat Linux 4.2)

hasmntopt(mnt, opt) can go into an infinite loop if opt is any substring
of mnt->mnt_opts. Redhat 5.0 does not have this libc bug. Here is an
example program:

#include <stdio.h>
#include <mntent.h>
struct mntent mnt;
char *cp;
mnt.mnt_opts = "intr,rw,port=1023,timeo=8,foo=br,retrans=110,indirect,map=/usr/local/AMD/etc/amd.proj,boo";
cp = hasmntopt(&mnt, "ro");
printf("cp = %s\n", cp);

It is possible that sufficiently newer version of libc for RH4.2 fix this

(3) mips-dec-ultrix4.3

Rainer Orth <ro@TechFak.Uni-Bielefeld.DE> reports

[3A] One needs the Kernel Config Files (UDTBIN430) subset installed to
compile am-utils, otherwise essential header files (net/if.h, net/route.h,
rpcsvc/mount.h, rpcsvc/yp_prot.h, rpcsvc/ypclnt.h, sys/proc.h) are

[3B] It's probably impossible to build am-utils with DEC C on Ultrix V4.3.
This compiler is pseudo-ANSI only. Maybe the new ANSI C compiler in V4.3A
and beyond will do. I successfully used gcc 2.8.1.

[3C] You need to build against a recent libhesiod (I used 3.0.2) and
libresolv/lib44bsd (I used BIND 4.9.5-P1). The resolver routines in
libc seem to cause random memory corruption. It is necessary to specify
LIBS=-l44bsd. lib44bsd is a helper library of libresolv used to supply
functions like strdup which are missing on the host system. This isn't
currently autoconfiscated.

[3D] You need to configure with CONFIG_SHELL=/bin/sh5 /bin/sh5 buildall;
/bin/sh cannot handle the shell functions used in buildall and is both
buggy and slow.

[3E] At least the gcc 2.7.0 fixincludes-mangled <sys/utsname.h> needs a
forward declaration of struct utsname to avoid lots of gcc warnings:

RCS file: RCS/utsname.h,v
retrieving revision 1.1
diff -u -r1.1 utsname.h
--- utsname.h 1995/06/19 13:07:01 1.1
+++ utsname.h 1998/01/27 12:34:26
@@ -59,6 +59,7 @@
#ifdef KERNEL
#include "../h/limits.h"
#else /* user mode */
+struct utsname;
extern int uname _PARAMS((struct utsname *));
#define __SYS_NMLN 32

(4) powerpc-ibm-aix4.2.1.0

[4A] "Randall S. Winchester" <rsw AT> reports that for amd to
start, you need to kill and restart rpc.mountd and possibly also make sure
that nfsd is running. Normally these are not required.

[4B] "Stefan Vogel" <vogel AT> reports that if your amq
executable dump core unexpectedly, then it may be a bug in gcc 2.7.x.
Upgrade to gcc 2.8.x or use IBM's xlC compiler.

[C] Do not link amd with libnsl. It is buggy and causes amd to core dump
in strlen inside strdup inside svc_register().

(5) *-linux-rh51 (RedHat Linux 5.1)

There's a UDP file descriptor leak in libnsl in RedHat Linux 5.1. This
library part of glibc2. Am-utils currently declares redhat 5.1 systems as
having a "broken yp_all" and using an internal, slower, leak-free version.
The leak is known to the glibc maintainers and a fix from them is due soon,
but it is not yet in the glibc-2.0.7-19 RPM.

(6) rs6000-ibm-aix4.1.x

A bug in libc results in an amq binary that doesn't work; amq -v dumps core
in xdr_string. There is no known fix (source code or vendor patch) at this
time. (Please let us know if you have a fix; see

(7) *-aix4.3.2.0

The plock() function will pre-reserve all of the memory up to the maximum
listed in the ulimit. If the ulimit is infinite, plock() will try to take
all of the system's memory, and fail with ENOMEM (Not Enough Space).
Normally ulimit may be set to a few gigs of max memory usage, but even that
is too much; Amd doesn't need more than a few megs of resident memory size
(depending on the particular usage, number of maps, etc.) Solution: lower
your ulimit before starting amd. This can be done inside the ctl-amd
script, but be careful not to limit it too low. Alternatively, don't use
plock on aix-4.3: set it to plock=no in amd.conf (which is the default if
you do nothing).

(8) *-linux (systems using glibc 2.1, such as RedHat-6.x)

There's a UDP file descriptor leak in the NIS routines in glibc, especially
those that do yp_bind. Until this is bug fixed, do not set nis_domain in
amd.conf, but let the system pick up the default domain name as set by your
system. That would avoid using the buggy yp_bind routines in libc.

(9) *-linux (SuSE systems using unfsd)

The user-level nfsd (2.2beta44) on older SuSE Linux systems (and possibly
others) dies with a SEGV when amd tries to contact it for access to a volume
that does not exist, or one for which there is no permission to mount.

(10) *-*-hpux11

If you're using NFSv3, you must install HP patches PHNE_20344 and
PHNE_20371. If you don't, and you try to use amd with NFSv3 over TCP, your
kernel will panic.

(11) *-linux* (any system using a 2.2.18+ kernel)

The Linux kernels don't support Amd's direct mounts very well, leading to
erratic behavior: shares that don't get remounted after the first timeout,
inability to restart Amd because its mount points cannot be unmounted, etc.
There are some kernel patches on the am-utils Web site, which solve these
problems. See

Later 2.4.x kernels completely disallow the hack amd was using for direct
mounts, so another solution will have to be found.

Note: the above is for the old-style amd mount_type = nfs. The autofs mounts
don't support direct mounts at all (due to lack of kernel support).

(12) *-aix5.1.0.0 and *-hpux9*

/bin/sh is broken and fails to run the configure script properly. You need
to use /bin/ksh instead. The buildall script will do it for you; if for some
reason you need to run configure directly, run it using 'ksh configure'
instead of just 'configure'.

[12A] *-aix5.2.*

Apparently there is an NFS client side bug in vmount() which causes amd to
hang when it starts (and tries to NFS-mount itself). According to IBM
engineers, this has to do with partial support code for IPv6: the NFS kernel
code doesn't appear to recognize the sin_family of the amd vmount(),
although amd does the right thing. The bug doesn't appear to be in 5.1 or
4.3.3. A fix from IBM is available, APAR number IY41417.

A binary built on 4.3.3 will not work on 5.2, because the kernel ABIs have

[12C] *-aix*

It is important that you install before configuring and
building am-utils. If you don't, you will get compile-time or
configure-time errors, especially when configure tries to find AIX's
definition of struct nfs_args.

(13) *-linux and *-darwin6.0

Certain linux kernels (2.4.18+ are fine, 2.4.10- are probably bad, those in
between have not been tested) have a bug which causes them to reconnect
broken NFS/TCP connections using unprivileged ports (greater than 1024),
unlike the initial connections which do originate from privileged
ports. This can upset quite a few NFS servers and causes accesses to the
mounted shares to fail with "Operation not permitted" (EPERM).

The darwin (MacOS X) kernel defaults to using unprivileged ports, but that
can be changed by setting the resvport mount flag (which amd sets by
default). Nonetheless, if a TCP connection breaks, under certain unclear
circumstances the kernel might "forget" about that flag and start using
unprivileged ports, causing the same EPERM error above.

(14) Solaris

The line "%option" in *.l files may cause Solaris /usr/ccs/bin/lex to abort
with the error "missing translation value." This is a bug in Solaris lex.

Moreover, both Solaris yacc and lex produce code that does not pass strict
compilation such as "gcc -Wall -Werror".

Use GNU Flex and Bison instead. You can download ready-made binaries from Note, however, that sometimes the binaries on don't seem to work, often because they are built against an
older revision of Solaris or build tools. In that case, build a fresh
version of GNU flex and/or bison from the latest stable sources. See and

(15) Solaris 8 + patch 10899[34]-xx (18 <= xx < 25) or patch 11260[56]-xx

With this patch, Sun updated the autofs kernel module and automountd
userspace daemon from version 3 to version 4. They also updated the
/usr/include/rpcsvc/autofs_prot.x file, but forgot to regenerate the
autofs_prot.h file. Thus, when amd is compiled, it uses the old header and
thinks it should use autofs version 3, when in fact the kernel now supports
(and expects) only version 4.

The workaround is to run 'rpcgen -C -h /usr/include/rpcsvc/autofs_prot.x >
/usr/include/rpcsvc/autofs_prot.h' and completely reconfigure and rebuild
am-utils (removing config.cache before running configure).

The problem is fixed in patch revisions 10899[34]-25 and up.

(16) Linux kernel 2.4+ and lofs mounts

Lofs mounts are not supported by the linux kernel, at all, but since 2.4.0
the kernel supports a similar type of mount called a bind mount. Its
semantics are closer to those of a hardlink than to those of lofs, and one
of the results is that bind mounts ignore any mount options paseed to them.

Amd uses bind mounts internally to emulate lofs mounts, which means that
lofs mounts on linux will effectively ignore their mount parameters and
inherit whatever options the original filesystem mounted upon had.

(17) autoconf 2.57

If you see configure warnings of the following kind:

configure: WARNING: sys/proc.h: present but cannot be compiled
configure: WARNING: sys/proc.h: check for missing prerequisite headers?
configure: WARNING: sys/proc.h: proceeding with the preprocessor's result
configure: WARNING: ## ------------------------------------ ##
configure: WARNING: ## Report this to ##
configure: WARNING: ## ------------------------------------ ##

please ignore them. They are not real errors, and neither nor the am-utils maintainers are interested in hearing
about them. Autoconf simply tries to do more than we need and attempts to
compile each header in isolation, which fails for many system headers.
That's ok, because we only need to know if a header file exists -- we know
how to use it properly ourselves.

While autoconf does offer a way to specify other files to be included with
the tested header, in order to avoid these warnings, using it would enlarge
the resulting configure script by an order of magnitude, and for no real
gain. Configure is big enough as it is, we don't need any more useless
baggage in it.

(18) NetBSD 2.0.2, FreeBSD 5.4, OpenBSD 3.7, and quite possibly most other
BSDs and other OSs (as of September 2005)

Some BSD kernels don't have a way to turn off the NFS attribute cache. They
don't have a 'noac' mount flag, and setting various cache timeout fields in
struct nfs_args doesn't turn off the attribute cache; instead, it sets the
attribute cache timeout to some internal hard-coded default (usually
anywhere from 5-30 seconds). If Amd cannot turn off the NFS attribute
cache, under heavy Amd usage, users could get ESTALE errors from automounted
symlinks, or find that those symlinks point to the wrong place. One
workaround which would minimize this effect is to set auto_attrcache=1 in
your amd.conf, but it doesn't eliminate the problem! 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 README.attrcache for more

Erez & the am-utils team.

+ 0
- 32
contrib/amd/COPYING View File

@@ -1,32 +0,0 @@
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.

This code is derived from software contributed to Berkeley by
Jan-Simon Pendry at Imperial College, London.

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.


+ 0
- 13085
File diff suppressed because it is too large
View File

+ 0
- 69
contrib/amd/FAQ View File

@@ -1,69 +0,0 @@
Am-utils Frequently Asked Questions

Note: we started this FAQ only on March 15, 2005; so it's not long or
comprehensive, yet. Amd is much older than that, and so there's a lot of
information that's already available in other forms. If this FAQ doesn't
answer your questions, see information in the following sources:

1. The Am-utils book:

2. The Am-utils user manual, which is part of the distribution and is also
available from

3. The Web site resources, especially the "am-utils" mailing
list (and its archives).

4. In the am-utils distribution (always use the latest ones), see all of the
various README files (README, README.autofs, README.ldap, README.osx, and
README.y2k). The "BUGS" file also lists useful information about bugs
and problems with specific OSs which affect Amd. All of these text files
are also available from

5. Some FAQ questions (including newbie questions) are available here:

6. Some problems are known bugs but have not been fixed yet: this are
listed in bugzilla in

If you have additions to this FAQ, please let us know at
the am-utils list (see

Thank you,
The Am-utils development team.


*** Linux Questions

Q1. When I use Amd with Autofs and I restart Amd, how come it cannot remount
the Autofs partitions?

A1. This is a limitation of the Linux Autofs kernel module (for both autofs
v2. and v3). The Linux Autofs does not allow restarting automounted
points. There's nothing Amd can do about this. In fact, the same
problem exists if you use the userland "automount" daemon instead of
Amd. Hopefully Autofs-v4 or the separate effort of Autofs-NG will
address this serious problem.

Note that Amd itself can restart autofs automounted points just fine on
OSs that support it, for example Solaris.

Q2. When I use Amd, I get this console message frequently: "mount version
older than kernel." Is it a problem?

A2. No, it's a harmless warning message that the Linux kernel prints for NFS
mounts. The intent was to alert administrators that the kernel has
supposedly a different version of the mount(2) code than a userland
program used. This happens if you compile Amd against kernel headers
that are different than the kernel you're running. If the message
really bothers you, then one way to "fix" the problem is to recompile
Amd against the same kernel headers as the running kernel.

Nevertheless, it is a relatively useless message because as far as we
know, the NFS v2 and v3 mount codes have been in perfect sync between
the userland and kernel sides, and were "standardized" for years
already. This warning message caused more unnecessary worry among
administrators than helping alert them to legitimate problems.


+ 0
- 268
contrib/amd/FREEBSD-Xlist View File

@@ -1,268 +0,0 @@

+ 0
- 103
contrib/amd/FREEBSD-upgrade View File

@@ -1,103 +0,0 @@
# ex:ts=8

AMD (am-utils) 6.1.5
originals can be found at:

For the import of AMD many files were pruned by:

tar -X FREEBSD-Xlist -xf am-utils-6.1.5.tar.gz

and `find . -name '.cvsignore' -delete`

Then imported by:

cvs import -m 'Virgin import of AMD (am-utils) v6.1.5' \
src/contrib/amd COLUMBIA amd_6_1_5

After the import, a separate extraction of am-utils was GNU configured in
the "normal" way. The resulting config.h file should be compared with
src/usr.sbin/amd/include/config.h, and src/usr.sbin/amd/include/config.h
updated as needed.

To make local changes to amd, simply patch and commit to the main
branch (aka HEAD). Never make local changes on the vendor (COLUMBIA) branch.

Note, we don't trim anything in scripts/ as sysadmins may find the bits
as a useful reference.

All local changes should be submitted to "" or for inclusion in the next vendor release.

Local changes:

- corrected formatting of SEE ALSO
r1.17 Uniformly refer to a file system as "file system"
r1.16 Add the am-utils homepage to SEE ALSO
r1.15 s/BSD/.Bx/ where appropriate
r1.14 Avoid using parenthesis enclosure macros
r1.13 split punctuation characters + misc fixes
r1.12 mdoc(7)NG
r1.11 Catch a left over reference to "/a"
r1.10 Document change to the default mount dir.
r1.9 Mention "amd -H" in the synopsis
r1.8 Fix miscellaneous mdoc macro argument limit infringements
r1.7 Don't refer to non-existent automount(8)
r1.6 Fix errors in .Xr usage
r1.3 un-mandocafied, un4.4BSD'ed
r1.2 sort cross references
r1.7 use /.amd_mnt as default for -a
r1.9 Uniformly refer to a file system as "file system".
r1.8 s/BSD/.Bx/ where appropriate.
r1.6 mdoc(7)NG.
r1.5 Remove reference to non-existent manpage
r1.4 Fix typos
r1.3 un-mandocafied, un4.4BSD'ed
r1.3 un-mandocafied, un4.4BSD'ed
r1.2 sorting of references
r1.11 Userland part of nfs client/server split and cleanup
r1.6 restore the standard name nfs_fh3
r1.3 Fully use our own generated files for NFSv3
r1.2 rpcgen our own files for NFSv3 support
r1.8 Uniformly refer to a file system as "file system"
r1.6 split punctuation characters + misc fixes.
r1.5 mdoc(7)NG.
r1.4 ".Mn mountd" -> ".Nm mountd"
r1.3 un-mandocafied, un4.4BSD'ed
r1.2 More sorting of references.
r1.9 add section number to .Xr directive
r1.7 Uniformly refer to a file system as "file system"
r1.6 split punctuation characters + misc fixes
r1.5 mdoc(7)NG
r1.3 describe all of the command line options
r1.2 un-mandocafied, un4.4BSD'ed
- Fix a broken SEE ALSO section and some mdoc issues
r1.4 removed HISTORY info from the .Os call.
r1.2 un-mandocafied, un4.4BSD'ed
r1.15 Bring man page back in shape
r1.13 Uniformly refer to a file system as "file system"
r1.12 Avoid using parenthesis enclosure macros
r1.11 mdoc(7)NG
r1.10 Fix miscellaneous mdoc macro argument limit infringements
r1.8 Fix a bunch of broken cross-references
r1.7 Bad reference of uname(2) -> uname(3)
r1.6 Grammer fix and style nits.
r1.5 xfer typo
r1.4 un-mandocafied, un4.4BSD'ed
r1.3 More sorting of references.
r1.2 un-mandocafied, un4.4BSD'ed

+ 0
- 370
contrib/amd/INSTALL View File

@@ -1,370 +0,0 @@
Installation Instructions

Copyright (C) 1994-1996, 1999-2002, 2004-2013 Free Software Foundation,

Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright
notice and this notice are preserved. This file is offered as-is,
without warranty of any kind.

Basic Installation

Briefly, the shell command `./configure && make && make install'
should configure, build, and install this package. The following
more-detailed instructions are generic; see the `README' file for
instructions specific to this package. Some packages provide this
`INSTALL' file but do not implement all of the features documented
below. The lack of an optional feature in a given package is not
necessarily a bug. More recommendations for GNU packages can be found
in *note Makefile Conventions: (standards)Makefile Conventions.

The `configure' shell script attempts to guess correct values for
various system-dependent variables used during compilation. It uses
those values to create a `Makefile' in each directory of the package.
It may also create one or more `.h' files containing system-dependent
definitions. Finally, it creates a shell script `config.status' that
you can run in the future to recreate the current configuration, and a
file `config.log' containing compiler output (useful mainly for
debugging `configure').

It can also use an optional file (typically called `config.cache'
and enabled with `--cache-file=config.cache' or simply `-C') that saves
the results of its tests to speed up reconfiguring. Caching is
disabled by default to prevent problems with accidental use of stale
cache files.

If you need to do unusual things to compile the package, please try
to figure out how `configure' could check whether to do them, and mail
diffs or instructions to the address given in the `README' so they can
be considered for the next release. If you are using the cache, and at
some point `config.cache' contains results you don't want to keep, you
may remove or edit it.

The file `' (or `') is used to create
`configure' by a program called `autoconf'. You need `' if
you want to change it or regenerate `configure' using a newer version
of `autoconf'.

The simplest way to compile this package is:

1. `cd' to the directory containing the package's source code and type
`./configure' to configure the package for your system.

Running `configure' might take a while. While running, it prints
some messages telling which features it is checking for.

2. Type `make' to compile the package.

3. Optionally, type `make check' to run any self-tests that come with
the package, generally using the just-built uninstalled binaries.

4. Type `make install' to install the programs and any data files and
documentation. When installing into a prefix owned by root, it is
recommended that the package be configured and built as a regular
user, and only the `make install' phase executed with root

5. Optionally, type `make installcheck' to repeat any self-tests, but
this time using the binaries in their final installed location.
This target does not install anything. Running this target as a
regular user, particularly if the prior `make install' required
root privileges, verifies that the installation completed

6. You can remove the program binaries and object files from the
source code directory by typing `make clean'. To also remove the
files that `configure' created (so you can compile the package for
a different kind of computer), type `make distclean'. There is
also a `make maintainer-clean' target, but that is intended mainly
for the package's developers. If you use it, you may have to get
all sorts of other programs in order to regenerate files that came
with the distribution.

7. Often, you can also type `make uninstall' to remove the installed
files again. In practice, not all packages have tested that
uninstallation works correctly, even though it is required by the
GNU Coding Standards.

8. Some packages, particularly those that use Automake, provide `make
distcheck', which can by used by developers to test that all other
targets like `make install' and `make uninstall' work correctly.
This target is generally not run by end users.

Compilers and Options

Some systems require unusual options for compilation or linking that
the `configure' script does not know about. Run `./configure --help'
for details on some of the pertinent environment variables.

You can give `configure' initial values for configuration parameters
by setting variables in the command line or in the environment. Here
is an example:

./configure CC=c99 CFLAGS=-g LIBS=-lposix

*Note Defining Variables::, for more details.

Compiling For Multiple Architectures

You can compile the package for more than one kind of computer at the
same time, by placing the object files for each architecture in their
own directory. To do this, you can use GNU `make'. `cd' to the
directory where you want the object files and executables to go and run
the `configure' script. `configure' automatically checks for the
source code in the directory that `configure' is in and in `..'. This
is known as a "VPATH" build.

With a non-GNU `make', it is safer to compile the package for one
architecture at a time in the source code directory. After you have
installed the package for one architecture, use `make distclean' before
reconfiguring for another architecture.

On MacOS X 10.5 and later systems, you can create libraries and
executables that work on multiple system types--known as "fat" or
"universal" binaries--by specifying multiple `-arch' options to the
compiler but only a single `-arch' option to the preprocessor. Like

./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
CPP="gcc -E" CXXCPP="g++ -E"

This is not guaranteed to produce working output in all cases, you
may have to build one architecture at a time and combine the results
using the `lipo' tool if you have problems.

Installation Names

By default, `make install' installs the package's commands under
`/usr/local/bin', include files under `/usr/local/include', etc. You
can specify an installation prefix other than `/usr/local' by giving
`configure' the option `--prefix=PREFIX', where PREFIX must be an
absolute file name.

You can specify separate installation prefixes for
architecture-specific files and architecture-independent files. If you
pass the option `--exec-prefix=PREFIX' to `configure', the package uses
PREFIX as the prefix for installing programs and libraries.
Documentation and other data files still use the regular prefix.

In addition, if you use an unusual directory layout you can give
options like `--bindir=DIR' to specify different values for particular
kinds of files. Run `configure --help' for a list of the directories
you can set and what kinds of files go in them. In general, the
default for these options is expressed in terms of `${prefix}', so that
specifying just `--prefix' will affect all of the other directory
specifications that were not explicitly provided.

The most portable way to affect installation locations is to pass the
correct locations to `configure'; however, many packages provide one or
both of the following shortcuts of passing variable assignments to the
`make install' command line to change installation locations without
having to reconfigure or recompile.

The first method involves providing an override variable for each
affected directory. For example, `make install
prefix=/alternate/directory' will choose an alternate location for all
directory configuration variables that were expressed in terms of
`${prefix}'. Any directories that were specified during `configure',
but not in terms of `${prefix}', must each be overridden at install
time for the entire installation to be relocated. The approach of
makefile variable overrides for each directory variable is required by
the GNU Coding Standards, and ideally causes no recompilation.
However, some platforms have known limitations with the semantics of
shared libraries that end up requiring recompilation when using this
method, particularly noticeable in packages that use GNU Libtool.

The second method involves providing the `DESTDIR' variable. For
example, `make install DESTDIR=/alternate/directory' will prepend
`/alternate/directory' before all installation names. The approach of
`DESTDIR' overrides is not required by the GNU Coding Standards, and
does not work on platforms that have drive letters. On the other hand,
it does better at avoiding recompilation issues, and works well even
when some directory options were not specified in terms of `${prefix}'
at `configure' time.

Optional Features

If the package supports it, you can cause programs to be installed
with an extra prefix or suffix on their names by giving `configure' the
option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.

Some packages pay attention to `--enable-FEATURE' options to
`configure', where FEATURE indicates an optional part of the package.
They may also pay attention to `--with-PACKAGE' options, where PACKAGE
is something like `gnu-as' or `x' (for the X Window System). The
`README' should mention any `--enable-' and `--with-' options that the
package recognizes.

For packages that use the X Window System, `configure' can usually
find the X include and library files automatically, but if it doesn't,
you can use the `configure' options `--x-includes=DIR' and
`--x-libraries=DIR' to specify their locations.

Some packages offer the ability to configure how verbose the
execution of `make' will be. For these packages, running `./configure
--enable-silent-rules' sets the default to minimal output, which can be
overridden with `make V=1'; while running `./configure
--disable-silent-rules' sets the default to verbose, which can be
overridden with `make V=0'.

Particular systems

On HP-UX, the default C compiler is not ANSI C compatible. If GNU
CC is not installed, it is recommended to use the following options in
order to use an ANSI C compiler:

./configure CC="cc -Ae -D_XOPEN_SOURCE=500"

and if that doesn't work, install pre-built binaries of GCC for HP-UX.

HP-UX `make' updates targets which have the same time stamps as
their prerequisites, which makes it generally unusable when shipped
generated files such as `configure' are involved. Use GNU `make'

On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot
parse its `<wchar.h>' header file. The option `-nodtk' can be used as
a workaround. If GNU CC is not installed, it is therefore recommended
to try

./configure CC="cc"

and if that doesn't work, try

./configure CC="cc -nodtk"

On Solaris, don't put `/usr/ucb' early in your `PATH'. This
directory contains several dysfunctional programs; working variants of
these programs are available in `/usr/bin'. So, if you need `/usr/ucb'
in your `PATH', put it _after_ `/usr/bin'.

On Haiku, software installed for all users goes in `/boot/common',
not `/usr/local'. It is recommended to use the following options:

./configure --prefix=/boot/common

Specifying the System Type

There may be some features `configure' cannot figure out
automatically, but needs to determine by the type of machine the package
will run on. Usually, assuming the package is built to be run on the
_same_ architectures, `configure' can figure that out, but if it prints
a message saying it cannot guess the machine type, give it the
`--build=TYPE' option. TYPE can either be a short name for the system
type, such as `sun4', or a canonical name which has the form:


where SYSTEM can have one of these forms:


See the file `config.sub' for the possible values of each field. If
`config.sub' isn't included in this package, then this package doesn't
need to know the machine type.

If you are _building_ compiler tools for cross-compiling, you should
use the option `--target=TYPE' to select the type of system they will
produce code for.

If you want to _use_ a cross compiler, that generates code for a
platform different from the build platform, you should specify the
"host" platform (i.e., that on which the generated programs will
eventually be run) with `--host=TYPE'.

Sharing Defaults

If you want to set default values for `configure' scripts to share,
you can create a site shell script called `' that gives
default values for variables like `CC', `cache_file', and `prefix'.
`configure' looks for `PREFIX/share/' if it exists, then
`PREFIX/etc/' if it exists. Or, you can set the
`CONFIG_SITE' environment variable to the location of the site script.
A warning: not all `configure' scripts look for a site script.

Defining Variables

Variables not defined in a site shell script can be set in the
environment passed to `configure'. However, some packages may run
configure again during the build, and the customized values of these
variables may be lost. In order to avoid this problem, you should set
them in the `configure' command line, using `VAR=value'. For example:

./configure CC=/usr/local2/bin/gcc

causes the specified `gcc' to be used as the C compiler (unless it is
overridden in the site shell script).

Unfortunately, this technique does not work for `CONFIG_SHELL' due to
an Autoconf limitation. Until the limitation is lifted, you can use
this workaround:

CONFIG_SHELL=/bin/bash ./configure CONFIG_SHELL=/bin/bash

`configure' Invocation

`configure' recognizes the following options to control how it

Print a summary of all of the options to `configure', and exit.

Print a summary of the options unique to this package's
`configure', and exit. The `short' variant lists options used
only in the top level, while the `recursive' variant lists options
also present in any nested packages.

Print the version of Autoconf used to generate the `configure'
script, and exit.

Enable the cache: use and save the results of the tests in FILE,
traditionally `config.cache'. FILE defaults to `/dev/null' to
disable caching.

Alias for `--cache-file=config.cache'.

Do not print messages saying which checks are being made. To
suppress all normal output, redirect it to `/dev/null' (any error
messages will still be shown).

Look for the package's source code in directory DIR. Usually
`configure' can determine that directory automatically.

Use DIR as the installation prefix. *note Installation Names::
for more details, including other options available for fine-tuning
the installation locations.

Run the configure checks, but stop before creating any output

`configure' also accepts some other, not widely useful, options. Run
`configure --help' for more details.

+ 0
- 106
contrib/amd/MIRRORS.html View File

@@ -1,106 +0,0 @@
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
<META NAME="Author" CONTENT="Erez Zadok">
<TITLE>Am-Utils 6.x Mirror Sites</TITLE>

<H1> Am-Utils 6.x Software Mirror Sites</H1></CENTER>

Note: in case of any problems accessing the individual FTP sites, please
contact their respective maintainers. If you wish to be added to the
official mirror list, please send mail to
"am-utils-developers AT" with the
full URL, maintainer's email, and geographical location.


<H2>North America</H2>

<LI> New York (Stony Brook, Primary Site)
<LI> FTP: <A
Contact person in case of problems
"am-utils-developers AT".

<LI> Minnesota
<LI> FTP: <A
Maintainer <A HREF="mailto:dokas AT">dokas AT</A>.

<LI> Florida (University of Florida)
<LI> FTP: <A HREF=""></A>.
Maintainer <A HREF="mailto:mirror AT">mirror AT</A>.



<LI> Germany
<LI> FTP: <A HREF=""></A>.
Maintainer <A HREF="mailto:ftp-adm AT">ftp-adm AT</A>.
<LI> FTP: <A HREF=""></A>.
Maintainer <A HREF="mailto:networking AT">networking AT</A>.

<LI> Sweden
<LI> FTP: <A HREF=""></A>.
Maintainer <A HREF="mailto:archive AT">archive AT</A>.

<LI> FTP: <A HREF=""></A>.
Maintainer <A HREF="mailto:lmjm AT">lmjm AT</A>.



<LI> Japan
<LI> FTP: <A HREF=""></A>.
Maintainer <A HREF="mailto:ftp-admin AT">ftp-admin AT</A>.

<LI> FTP: <A HREF=""></A>.
Maintainer <A HREF="mailto:ftpadmin AT">ftpadmin AT</A>.

<LI> FTP: <A HREF=""></A>.
Maintainer <A HREF="mailto:ftpadmin AT">ftpadmin AT</A>.

<I> Last updated: 2006-11-27</I>


<LI> FTP: <A HREF="X">X</A>.
Maintainer <A HREF="mailto:X">X</A>.

+ 0
- 60
contrib/amd/MIRRORS.txt View File

@@ -1,60 +0,0 @@

Note: in case of any problems accessing the individual FTP sites, please
contact their respective maintainers. If you wish to be added to the
official mirror list, please send mail to am-utils-developers AT
with the full URL, maintainer's email, and geographical location.

New York (Stony Brook, Primary Site):
Maintainer: ezk AT
Maintainer: dokas AT
#Avoid for now: empty directory
# Virginia (Newport News):
# Maintainer: Branson.Matheson AT
#server gone? (Jan 5, 2004)
# Ohio (Kent State University):
# Maintainer: root AT
Florida (University of Florida)
Maintainer: mirror AT

Maintainer: ftp-adm AT
Maintainer: networking AT
Maintainer: archive AT
# not responding (Jan 5, 2004)
# Sweden (Stockholm University, Math Depat):
# Maintainer: leifj AT
Maintainer: lmjm AT

Maintainer: ftp-admin AT
Maintainer: ftpadmin AT
Maintainer: ftpadmin AT

# gone? (Jan 5, 2004)
# Australia:
# Melbourne:
# Maintainer: mirror AT

+ 0
- 1567
File diff suppressed because it is too large
View File

+ 0
- 104
contrib/amd/README View File

@@ -1,104 +0,0 @@
This is the official version of am-utils.

See the file NEWS for news on this and previous releases.

*** General Notes to alpha/beta testers:

[A] as alpha/beta testers, I expect you to be able to find certain things on
your own (especially look at the sources to figure out how things work).

[B] if you intend to modify any files, first find out if the file you want
to modify gets autogenerated from some other place. If so, modify it at the

You can adjust some of the configuration of am-utils after it has been
auto-configured by putting whatever definitions you wish in a file called
localconfig.h, located in the top build directory (the same one where
config.h is created for you).

[C] there are several ways you can build am-utils:

(1) run the buildall script as follows:


This would build all the applications inside a special directory relative to
the root of the source tree, called A.<cpu-company-system>, where the <>
part is filled in by GNU's config.guess script. This is the preferred
method, for it will separate the build from the sources, and allow you to
run buildall for multiple architectures concurrently.

You can run "buildall -h" to see what options it takes.

(2) run the configure script such as:


and then run


This would configure amd in the directory you've run the configure script
in, and the built it there. Run "make install" to install all the necessary

Note that this is good for building only one version of amd on one
architecture! Don't try this for multiple architectures. If you must, then
after doing one such build, run "make distclean" and then reconfigure for
another architecture.

(3) run the configure script for build in a different location. Let's say
that /src/am-utils-6.0 is where you unpacked the sources. So you could

mkdir /src/build/sunos5
cd /src/build/sunos5
/src/am-utils-6.0/configure --srcdir=/src/am-utils-6.0

This is a manual method that will let you build in any directory outside the
am-utils source tree. It requires that your "make" program understand
VPATH. This can be used multiple times to build am-utils concurrently in
multiple (but different) directories. In fact, the buildall script
described above does precisely that, using the A.* subdirectories.

(4) If you need to configure am-utils with extra libraries and/or headers,
for example to add hesiod support, do so as follows:

configure --enable-libs="-lhesiod -lresolv" \
--enable-ldflags="-L/usr/local/hesiod/lib" \

[D] If you modify any of the *.[chyl] sources in the directories amd, amq,
hlfsd, lib, etc, all you need to do to get a new version of am-utils is run

If you modify any of the files in the m4/ or conf/ directories, or any *.in
or *.am file, then you must rebuild the configure script, files,
aclocal.m4, etc. The best way to do so is to run

./buildall -K

To be a developer and be able to run "bootstrap", you must have
autoconf-2.68, automake-1.11.1, and libtool 2.2.6b installed on your system (or
later versions thereof). You no longer need to get my special version of
automake. Contact me if you'd like to be a maintainer and get access to the
CVS server.

After you've remade the basic configuration files you must rerun the
buildall script to rerun configure and then remake the binaries.

Modifying M4 macros may not be very intuitive to anyone that has not done so
before. Let me know if you are having any problems with them. I fully
expect, at least initially, to have to be the sole developers of the M4
macros and let others concentrate on C sources.

[E] Report all bugs via Bugzilla or the am-utils list (see Avoid reporting to my personal email address. It is
important to involve the whole list in bug fixes etc.

Good luck.

Erez Zadok,
Maintainer, am-utils.

+ 0
- 129
contrib/amd/README.attrcache View File

@@ -1,129 +0,0 @@
NFS Attribute Caching OS Problems and Amd
Last updated September 18, 2005

* Summary:

Some OSs don't seem to have a way to turn off the NFS attribute cache, which
breaks the Amd automounter so badly that it is not recommend using Amd on
such OS for heavy use, not until this is fixed.

* Details:

Amd is a user-level NFSv2 server that manages automounts of all other file
systems. The kernel contacts Amd via RPCs, and Amd in turn performs the
actual mounts, and then responds back to the kernel's RPCs. Every kernel
caches attributes of files, in a cache called the Directory Name Lookup
Cache (DNLC), or a Directory Cache (dcache).

Amd manages its namespace in the user level, but the kernel caches names
itself. So the two must coordinate to ensure that both namespaces are in
sync. If the kernel uses a cached entry from the DNLC, without consulting
Amd, users may see corruption of the automounter namespace (symlinks
pointing to the wrong places, ESTALE errors, and more). For example,
suppose Amd timed out an entry and removed the entry from Amd's namespace.
Amd has to tell the kernel to purge its corresponding DNLC entry too. The
way Amd often does that is by incrementing the last modification time
(mtime) of the parent directory. This is the most common method for kernels
to check if their DNLC entries are stale: if the parent directory mtime is
newer, the kernel will discard all cached entries for that directory, and
will re-issue lookup methods. Those lookups will result in
NFS_GETATTR/NFS_LOOKUP calls sent from the kernel down to Amd, and Amd can
then properly inform the kernel of the new state of automounted entries.

In order to ensure that Amd is "in charge" of its namespace without
interference from the kernel, Amd will try to turn off the NFS attribute
cache. It does so by using the NFSMNT_NOAC flag, if it exists, or by
setting various "cache timeout" fields in struct nfs_args to 0 (acregmin,
acregmax, acdirmin, or acdirmax).

We have released a major new version of am-utils, version 6.1, in June 2005.
Since then, a lot of people have experimented with Amd, in anticipation of
migrating from the very old am-utils 6.0 to the new 6.1. For a couple of
months since the release of 6.1, we have received reports of problems with
Amd, especially under heavy use. Users reported getting ESTALE errors from
time to time, or seeing automounted entries whose symlinks don't point to
where it should be. After much debugging, we traced it to a few places in
Amd where it wasn't updating the parent directory mtime as it should have;
in some places where Amd was indeed updating the mtime, it was using a
resolution of only 1 second, which was not fine enough under heavy load. We
fixed this problem and switched to using a microsecond resolution mtime.

After fixing this in Amd, we went on to verify that things work for other
OSs. When we got to test certain BSDs, we found out that they always cache
directory entries, and there is no way to turn it off completely.
Specifically, if we set the ac{reg,dir}{min,max} fields in struct nfs_args
all to zero, the kernel seems to cache the entries for a default number of
seconds (something like 5-30 seconds). On some OSs, setting these four
fields to 0 turns off the attribute cache, but not on some BSDs. We were
able to verify this using Amd and a script that exercises the interaction of
the kernel's attrcache and Amd. (If you're interested, the script can be
made available.)

We then experimented by setting the ac{reg,dir}{min,max} fields in struct
nfs_args all to 1, the smallest non-zero value we could. When we ran the
Amd exercising script, we found that the value of 1 reduced the race between
the DNLC and Amd, and the script took a little longer to run before it
detected an incoherency. That makes sense: the smaller the DNLC cache
interval is, the shorter the window of vulnerability is. (BTW, the man