Thu Jan 11 16:56:41 1990  Jan-Simon Pendry  (jsp at achilles)

	* Release 5.1c.

	* (amq*) has new options.  -f flushes the map cache and -m prints
	information about mounted filesystem and fileservers.

Tue Jan  2 14:44:21 1990  Jan-Simon Pendry  (jsp at achilles)

	* (util.c) am_mounted() patches the path for "direct" mounted
	filesystems - cosmetic.

	* (afs_ops.c) when possible sets a small kernel attribute cache
	timeout on the automount points.

	* (nfs_stubs.c) delete() and rmdir() operations implemented.  Used
	when a mount point is timed out so the kernel name cache gets to
	know about the changes.  Fixes most ESTALE errors.

	* (nfs_stubs.c) New do_readlink() function added.  This is used to
	make sure that a filesystem is mounted at the time a link is read
	in the case of "direct" mounts.  Done so that the length of the
	link is available when the initial getattr is done on the mountpoint.

	* (sfs_ops.c) Changed implementation to avoid race conditions.
	The link target is re-arranged so that sublink points to the
	target and fs always points at ".".

	* Fixed mount flag bug on Ultrix.

	* Added support from Sjoerd Mullender for Alliant FX/4 and Encore
	Multimax.

Thu Dec  7 17:55:29 1989  Jan-Simon Pendry  (jsp at achilles)

	* (afs_ops.c) dfs_readlink now does a new_ttl on the node it
	returns.

	* (afs_ops.c) next_nonerror_node now implements the task after
	which it is named.

Tue Nov 28 17:20:52 1989  Jan-Simon Pendry  (jsp at achilles)

	* Release 5.1b.

	* (restart.c) Generates link nodes for any unrecognised filesystem
	types and then marks them so that they are never deleted (since
	they could never be automounted later).

	* (os-*.h) Irrelevant #undef's deleted.

	* (arch) Now knows about AIX on RTs.

	* (amq.c) Rationalised the output.  Now only gives you what you
	asked for.

	* (am.h) New macro: FSRV_ISDOWN(fs), which checks whether a
	fileserver is down.

	* (afs_ops.c) When a mount fails due to a timeout the underlying
	filesystem is ripped away and replaced with an error fs.  This
	avoids the possibility of being left with a single error reference
	to a valid mounted filesystem.

Thu Nov 23 18:04:29 1989  Jan-Simon Pendry  (jsp at achilles)

	* (nfs_start.c) Re-order bootstrap sequence to avoid potential
	deadlock if restart() ends up accessing one of the automount points.

	* (amq.c) Don't produce default mount output if one of the -l, -x
	or -D options was used.

	* (umount_fs.c) Add alternative unmount routine for 4.4 BSD.

Mon Nov 20 16:22:50 1989  Jan-Simon Pendry  (jsp at achilles)

	* (os-bsd44.h) Fixed redefinition of UMOUNT_FS.

	* (info_ndbm.c) Added missing #include <sys/stat.h>.

	* (mapc.c) Fixed typo in ifdef around gdbm config entry.

Sat Nov 18 16:39:13 1989  Jan-Simon Pendry  (jsp at achilles)

	* (util.c) If "/" is automounted, make sure it is never timed out.

	* (mtab.c) Missing clock invalidation added in read_mtab (from a file).

	* (mntfs.c) realloc_mntfs simplified.

	* (map.c) Closed a race condition during shutdown when second and
	subsequent duplicate mounts were deleted prematurely.

	* (afs_ops.c) Duplicate mounts are now given the correct return
	code.

Fri Nov 17 18:58:18 1989  Jan-Simon Pendry  (jsp at achilles)

	* 5.1 Release.

Thu Nov 16 17:57:02 1989  Jan-Simon Pendry  (jsp at achilles)

	* (mntfs.c) Make sure inherit mntfs structures are not cached
	after last reference; otherwise a second reference to the
	inherited filesystem will get stuck on the inherit rather than the
	(now) fully mounted filesystem.

	* (am.c, nfs_start.c) After forking the server, make sure the
	parent does not exit until the automount points are mounted.  This
	allows a clean sequence during system startup.

	* Initial port to 4.4 BSD.  Several new configuration abstractions
	were added to make this port possible.

Thu Nov  9 21:42:14 1989  Jan-Simon Pendry  (jsp at achilles)

	* (afs_ops.c, opts.c) Added map logging to facilitate mount map
	debugging without needing a -DDEBUG version of Amd.

	* (afs_ops.c) Make sure the length of the fs_hostname mount
	parameter does not exceed MAXHOSTNAMESZ.

Wed Nov  8 13:44:02 1989  Jan-Simon Pendry  (jsp at achilles)

	* Change the message log format to indicate the severity of the
	message to allow simpler analysis of the log file.

Tue Nov  7 14:11:36 1989  Jan-Simon Pendry  (jsp at achilles)

	* 5.0 Patchlevel 11.

	* (os-bsd44.h) Initial guess at 4.4 BSD definitions.

	* (os-aux.h) Port for Macintosh II from Julian Onions.

	* (amq.c) Output formats cleaned up.  AMQ_MNTTREE is still broken
	in amq_subr.c though.

	* (afs_ops.c) If a mount timed out, for example an NFS server was
	down at the time, it was possible for the error code to remain
	unset thus jamming that mount node in a state from which it could
	not recover.  Just make sure that the mf_error field gets filled
	in when an error occurs.

	* (afs_ops.c) strsplit is run over /defaults to avoid problems
	with whitespace creeping in.

Sun Nov  5 11:50:51 1989  Jan-Simon Pendry  (jsp at achilles)

	* (util.c) am_mounted: Added missing initialisation of stats.s_mtime.

Fri Nov  3 17:33:02 1989  Jan-Simon Pendry  (jsp at achilles)

	* 5.0 Patchlevel 10.

	* Changed the copyright.

Thu Nov  2 17:07:53 1989  Jan-Simon Pendry  (jsp at achilles)

	* 5.0 Patchlevel 9.

	* (opts.c) new option syntax: == != :=

	* (nfs_ops.c) Less caching of filehandles.  Now cached errors are
	discarded after use.

	* (mtab.c) now attempts to deal with a lack of open file slots (ENFILE).

	* (mount_fs.c) automount entries in the mount table now have a
	dev= entry in the same way as NFS and UFS.

	* (mntfs.c) mntfs nodes are now cached after the last reference
	and discarded <ALLOWED_MOUNT_TIME> seconds later.  This avoids
	thrashing during a mount.

	* (mapc.c) map default cache mode is now selected with
	"mapdefault", not "default"

	* (amd.tex) numerous clarifications.  Still more work required...

	* (amq_subr.c) now allows the -x option of amq to operate.

	* (afs_ops.c) afs_bgmount now keeps track of which filesystem
	needed retrying and ensures that the mount node in the
	continuation correctly points at an unmounted filesystem.  This
	fixes a problem whereby a valid mounted filesystem could appear to
	have failed to mount.

	* Configure now gives more of a running commentary and checks
	whether os-type and arch actually worked.

	* Allow spurious ';'s in a mount location.

Fri Oct 27 14:03:31 1989  Jan-Simon Pendry  (jsp at achilles)

	* foo=blah changed to foo:=blah, foo==blah and foo!=blah.

	* -l stderr changed to -l /dev/stderr.

Thu Oct 19 15:34:28 1989  Jan-Simon Pendry  (jsp at achilles)

	* 5.0 Patchlevel 6.

	* LOG_INFO messages have been rationalised so that some
	statistics, graphs and so on can be generated.

	* Transaction ID's for RPC calls are now allocated by the
	individual callers, rather than from a central pool.  This
	decreases the load on mount daemons and NFS servers since the
	same XID is used for retries when needed.

	* Many fine details of the new data structures have been changed.
	Some areas have been optimized.

Fri Oct 13 12:31:26 1989  Jan-Simon Pendry  (jsp at achilles)

	* Restart code re-implemented to work with the new data structures.

	* Fine tuning applied to new NFS server modeling code.

Thu Oct 12 15:57:24 1989  Jan-Simon Pendry  (jsp at achilles)

	* Added ${/var} and ${var/} variable expansions.  The first gives
	the "basename" component of the variable, the latter gives the
	"dirname" component.  Additionally, spurious /'s are deleted after
	the variable expansions is complete.

	* Added new -C option to allow the machine's cluster name to be
	given to amd.  ${cluster} fetches the value and can be used as
	another selector.

	* Broken the major data struct (am_node) into three layers:
	am_node (one for each automount node), mntfs (one for each mounted
	filesystem) and fserver (one for each file server).  Machine
	up/down state is maintained in the fserver layer.  Filesystem
	mount/unmount state is maintained in the mntfs layer.  This change
	fixes the last known major problem caused by the lack of a central
	focus for filesystem and fileserver status.  There is a dummy file
	server layer for local filesystems (ufs, link, program, error).

Tue Oct 10 11:15:42 1989  Jan-Simon Pendry  (jsp at achilles)

	* 5.0 Patchlevel 5.

	* (nfs_ops.c) the filehandle cache is now flushed when a
	filesystem is unmounted.  This avoids ending up with stale
	information if a server bounces.

	* (clock.c) new module to implement callouts.  Many other
	routines changed to use callouts instead of messing with ttl
	fields.

Sun Oct  1 17:08:20 1989  Jan-Simon Pendry  (jsp at achilles)

	* 5.0 Patchlevel 3 & 4.

	* Numerous cleanups.

Wed Sep 13 14:30:05 1989  Jan-Simon Pendry  (jsp at achilles)

	* 5.0 Patchlevel 2.

	* (nfs_ops.c) portmap information is not remembered beyond the
	basic filehandle cache interval.  That avoids problems when a new
	portmap and/or rpc.mountd is started and the bound port changes.

	* (mapc.c) cache reloads are automatically done every hour.

	* Removed xlog macro in favour of plog() so that the log level
	can be reflected through to syslog().  log() routine renamed to
	plog() which takes an extra parameter indicating the log level.

Tue Sep  5 20:00:19 1989  Jan-Simon Pendry  (jsp at achilles)

	* (nfs_ops.c) when a server is known to be down, any cached file
	handles and port mapping informaton is flushed since that may have
	changed when it comes back up.

	* (map.c) timeout no longer attempts to unmount a hung mount point.

Mon Sep  4 14:49:18 1989  Jan-Simon Pendry  (jsp at achilles)

	* (afs_ops.c) a mount node which timed out during mount is now
	retained for the normal timeout interval rather than for a short
	period.  This avoids wasting time retrying mounts from a server
	which is down.

	* (afs_ops.c) hung mounts are now detected and not used as a
	duplicate mount - something which defeated the replacement fs
	scheme.

	* (nfs_ops.c) keepalive's now back-off when a server has gone
	down.

Thu Aug 31 21:18:35 1989  Jan-Simon Pendry  (jsp at achilles)

	* 5.0 Patchlevel 1.

	* Fixed several bugs which showed up in the keepalive
	implementation when a gateway went down causing
	a different sequence of errors than usual.

Wed Aug 30 11:29:21 1989  Jan-Simon Pendry  (jsp at achilles)

	* (amq.x) now uses a Sun assigned program number.

	* Revision 5.0 - can now start using metaconfig.

Tue Aug 29 14:36:48 1989  Jan-Simon Pendry  (jsp at achilles)

	* (os-u3_0.h, os-type) now knows about DECstations (mips).

	* (nfs_stubs.c) Added hooks to readlink entry point to call
	per-fs readlink routine if it exists, otherwise old behaviour.

	* (afs_ops.c) Added implementation of "type=direct".  This is
	the same as "type=auto" but is itself the link to the
	mount point, rather than being a directory containing a list
	of links to mount points.

Mon Aug 28 17:48:15 1989  Jan-Simon Pendry  (jsp at achilles)

	* (afs_ops.c) Changed readdir to workaround a problem on
	ultrix 3 where it seems to forget that eof has been reached.

Thu Aug 24 15:17:55 1989  Jan-Simon Pendry  (jsp at achilles)

	* Created "beta16".

	* (afs_ops.c) /defaults is located along with every key.
	this makes it possible to update the /defaults in
	a map and get to use it.

	* (mapc.c) added map cache synchronization support.  if
	a file or ndbm map is updated the cache is junked so avoiding
	things getting out of sync.

Wed Aug 23 19:17:52 1989  Jan-Simon Pendry  (jsp at achilles)

	* (os-u3_0.h) new file to support Ultrix 3.0

	* (opts.c) allow environment variables to be accessed via
	the same ${env} syntax used for options & selectors.

Tue Aug 22 13:19:49 1989  Jan-Simon Pendry  (jsp at achilles)

	* (opts.c, get_args.c) added support for kernel architecture
	type to allow /usr/kvm to be automounted under SunOS 4.x.

	* (os-xinu43.h) updated for june '89 release of MORE/bsd.

	* (opts.c) fixed memory allocation problems where some strings
	may not have been strdup'ed before they were free'ed so causing
	the malloc arena to get into a twist.  This caused core dumps on
	some machines and infinite loops on others.

	* (*.c) clock handling is now done by a macro.  Global variable
	clock_valid is > 0 (ie the time) when valid, 0 if invalid.

	* (map.c) timeout code survived a complete rewrite and is now
	O(n) rather than O(n^2).

	* (info_hes.c) new database hooks for Hesiod nameserver.

	* (get_args.c) the local sub-domain is picked up from the
	hostname if it is not specifed with -d.  The subdomain is
	then stripped from the hostname.

	* (am.c) when a SIGTERM is received, an immediate abort
	occurs - only the top-level automounts are unmounted; all
	other mounts stay -- use amd -r to restart.

	* (afs_ops.c) cleaned up key prefix handling.  Again updated
	the "hostname" string passed to the kernel so that includes
	the hostname, pid and mount point.

Tue Aug  8 16:05:23 1989  Jan-Simon Pendry  (jsp at achilles)

	* (nfs_ops.c) changed the way the file handle cache is managed.
	No longer gets a race condition between something entering the
	cache and being used and discard.

Tue Jul 25 20:40:51 1989  Jan-Simon Pendry  (jsp at achilles)

	* (map.c) changed fh_to_mp2 so that it does not return
	ESTALE during shutdown.  it returns ENOENT instead which
	avoids thrashing with the kernel.

Sun Jul 23 15:06:10 1989  Jan-Simon Pendry  (jsp at achilles)

	* (afs_ops.c) make sure the incoming key from the kernel
	does not contain any characters which could cause trouble
	during macro expansion (such as `"! etc).

	* (afs_ops.c) fixed contruction of "mtab" entry.

Fri Jul 21 11:01:05 1989  Jan-Simon Pendry  (jsp at achilles)

	* (afs_ops.c) some changes to support the new startup
	shutdown scheme.

	* (map.c) startup and shutdown are now done using the
	standard interfaces.  Startup is done by creating a
	private cache map  ";root;" and then doing lookups
	on all the names in it.  Shutdown is done by forcibly
	timing out all the mount points including the automount
	points.

	* (info_*.c) modified to provide interface required by
	mapc.c module.

	* (mapc.c) new module to implement map caching.  Caching
	can be controlled by an fs option.  "all" means cache
	the entire map (if possible).  "inc" means cache things
	incrementally.  "none" means never cache things.  Each
	map type has a default caching mode which is used if
	cache option "default" is used.

Wed Jul 19 16:14:52 1989  Jan-Simon Pendry  (jsp at achilles)

	* (sched.c) implements a general sleep/wakeup scheme and uses
	it for sub-process handling.

	* (nfs_start.c) task_notify() called from where it used to
	be called.

	* (nfs_ops.c) now implements a non-blocking rpc library.
	Everything in nfs_ops was changed to use it.  This should
	not be in this file and will be moved later. 

	* (map.c) if a mount point times out and it is deferred then
	issue a wakeup so that it can be retried.

	* (map.c) when creating a new mount point fetches the entry
	"/defaults" from the associated map if no other options are
	specified.

	* (am.c) implements the -p (print process id) option.

	* (afs_ops.c) a mount attempt now has a time-to-live of twenty
	seconds.  if only deferred attempts are waiting after that
	interval the kernel gets sent ETIMEDOUT.

	* (afs_ops.c) the name by which the kernel knows the filesystem
	has changed from pid%d@host to /mountpoint@host.  That looks
	better to users who get hit by it.

Fri Jul 14 18:46:16 1989  Jan-Simon Pendry  (jsp at achilles)

	* (afs_ops.c) now knows about defered mounts - mounts which
	are not in progress, not completed, and not failed.

	* (sched.c) added new entry point sched_ast().  This simulates
	a completed job.  The basic idea is to let something else return
	to the main scheduling loop with a guarentee that it will be
	called back when some other action has taken place.

	* (nfs_ops.c) implemented a file handle cache.  The nfs_init
	routine starts up a request for the filehandle and the mount
	routine uses it when it arrives.

Thu Jul 13 18:07:58 1989  Jan-Simon Pendry  (jsp at achilles)

	* (afs_ops.c) found a race condition between an error occuring
	and the am_node being timed out.  Fixed by updating the
	time-to-live and keepalive counters in the node whenever
	AMF_MOUNTING is cleared.  Also changed afs_lookuppn() so that
	it doesn't destroy the node when it returns the error code.
	This stops thrashing and the node is eventually timed out.
	Now the only way a node gets deleted is by the timeout code
	which seems more elegant.

Tue Jul 11 15:36:44 1989  Jan-Simon Pendry  (jsp at achilles)

	* Created "beta15".

	* Fixed *all* references to "u2.2".  Some where missed in
	the original change.  They are now u2_2.

	* (mk-amd-map.c) new command.  Converts plain files into
	ndbm databases for use by the info_ndbm module.  Hooks
	included for future support for gdbm just as soon as I
	can get a copy.

Sun Jul  9 19:00:22 1989  Jan-Simon Pendry  (jsp at achilles)

	* Created "beta14".

	* (get_info.c) code to handle yp and files now split into
	new files info_yp.c and info_file.c  New support for ndbm
	databases is in info_ndbm.c.  A table in get_info.c controls
	what and in which order things are searched.

	* (map.c, nfs_stubs.c) better handling for hung mount points.
	if a filehandle is passed in by the kernel which references
	a hung node, then try to find a replacement, possibly by calling
	lookup explicitly.

	* (*.c) use new xlog(level)(message) interface

Thu Jun  8 20:28:55 1989  Jan-Simon Pendry  (jsp at achilles)

	* (nfs_ops.c, ufs_ops.c) when compiled with DEBUG, display
	the fs options being used.

	* (am.c) make test for root a little more polite.

	* (get_args.c) update Usage message to include -r option.

Wed Jun  7 16:28:51 1989  Jan-Simon Pendry  (jsp at achilles)

	* (rpc_fwd.c) fwd_reply: if the recvfrom call fails because it
	is interrupted then try again.

Tue Jun  6 16:39:15 1989  Jan-Simon Pendry  (jsp at achilles)

	* Created "beta12".

	* (afs_ops.c) inheriting mount option list from command line
	is now cumulative.  A -foo on the command line is prepended
	to the default option list taken from the map.  This can be
	used to override the ``default default'' options in opts.c.

	* (get_args.c, am.c) added new -r (restart) option.  Restart of
	mounted filesystems is only done if this option is specified.
	Should *not* be specified in /etc/rc.local of course.

	* (yp_master.c) make the enumeration error message more verbose
	when debugging is enabled.

	* (rpc_fwd.c) rearranged some declarations at the top.  Removed
	a spurious call to free which was causing grief on some systems,
	but not on Sun's.  [This problem was the reason for implementing
	the -D mem option.]

	* (opts.c) make sure opt_key and opt_path are set to a zero
	length string unless otherwise specified.  Previously they
	were are source of dangling pointers.

	* (nfs_ops.c) make sure that the allocated nfs_private identifiers
	are unique even when some filesystem are being restarted.  This mean
	starting the basic allocation from 1, not zero.

	* (am.h, get_args.c, util.c) added definition and implmentation of
	a simple memory allocation trace (D_MEM).

	* (afs_ops.c) afs_lookuppn: tightened up memory allocation and
	delay string copying until last possible moment.

Mon Jun  5 18:01:18 1989  Jan-Simon Pendry  (jsp at achilles)

	* (Makefile.com) diffs: added new rule to generate diffs
	between versions.

	* (get_info.c) search_file: added a new dlog() to note when
	wildcards are returned.

	* (afs_ops.c) afs_lookuppn: call to init_map specifies efs as
	the default ops structure.  If the location list only contained
	defaults and no real mounts then this previously caused a null
	pointer dereference.

	* (map.c) last_used_map: Added new variable.  Keeps track of the
	last used map, which may be wildly different from first_free_map.
	This fixes bugs in several routines in this file.

	* (util.c) mkdirs, rmdirs: Changed directory make/unmake.  It is
	not possible to quickly determine how many directories need to
	be created or deleted, so we try to make as many as possible.

	* (opts.c) Added default values for rfs, rhost and fs.
	The new defaults guarentee unique names to allow the NFS
	keepalive stuff to work.

Sun Jun  4 16:12:15 1989  Jan-Simon Pendry  (jsp at achilles)

	* First draft of documentation included in the next release.

	* Hooks for TFS added, though this still requires a lot of work.

	* Re-implemented option handling.  Options are now allocated
	dynamically on a per-mount basis in the continuation structure.

	* Changed os type u2.2 to u2_2 to allow for regular expression
	matching in selectors.

	* Format of mount maps is now entirely different.  Instead of
	guessing which filesystem type is being used, it is now explicitly
	stated along with the required options.  Variable expansion is
	done on the options and selectors are also implemented.  The
	requested name can also contain any of the selectors.

Wed May 24 15:21:39 1989  Jan-Simon Pendry  (jsp at achilles)

	* Re-implemented NFS ping algorithm to use the new RPC forwarding
	system.  This allowed a large amount of nfs_ops specific code
	to be removed from nfs_start.c and moved to nfs_ops.c.
	There is still no strategy for hung file systems.  At the moment
	it will merely try to mount an alternative (or the same again)
	to the same place in the file system.

	* Added RPC forwarding package.  This supports general RPC gatewaying
	over a UDP transport.  The idea is to put a packet identifier into
	each outgoing RPC packet and then match that up in a database when
	a reply comes in.  The database records the original packet identifier
	(so that it can be replaced), the source address for the packet and
	a function to call to do the forwarding.

	* ChangeLog added between beta8 and beta9.  Should have done this sooner.
