aboutsummaryrefslogtreecommitdiff
path: root/nfs/ChangeLog
diff options
context:
space:
mode:
Diffstat (limited to 'nfs/ChangeLog')
-rw-r--r--nfs/ChangeLog618
1 files changed, 618 insertions, 0 deletions
diff --git a/nfs/ChangeLog b/nfs/ChangeLog
new file mode 100644
index 00000000..9905bb06
--- /dev/null
+++ b/nfs/ChangeLog
@@ -0,0 +1,618 @@
+1999-07-10 Roland McGrath <roland@baalperazim.frob.com>
+
+ * nfs.h: Add #include <sys/mman.h> for munmap decl.
+
+1999-07-09 Thomas Bushnell, BSG <tb@mit.edu>
+
+ * ops.c (netfs_get_dirents): Use mmap instead of vm_allocate.
+ * pager.c (pager_read_page): Likewise.
+
+1999-07-03 Thomas Bushnell, BSG <tb@mit.edu>
+
+ * ops.c (netfs_get_dirents): Use munmap instead of vm_deallocate.
+ * pager.c (pager_read_page): Likewise.
+
+1999-02-01 Mark Kettenis <kettenis@phys.uva.nl>
+
+ * ops.c: Include <maptime.h>.
+ (netfs_attempt_utimes): Fix various typo's.
+
+Sun Jan 31 18:39:09 1999 Thomas Bushnell, BSG <tb@mit.edu>
+
+ * nfs.c (xdr_encode_sattr_times): Convert nanoseconds to
+ microseconds correctly.
+
+ * ops.c (netfs_attempt_utimes): Handle new possibility that ATIME
+ or MTIME might be null.
+
+1999-01-22 Roland McGrath <roland@baalperazim.frob.com>
+
+ * ops.c (netfs_attempt_link): Remove major, minor macro definitions.
+ * nfs.c (xdr_decode_fattr): Remove makedev macro definition.
+
+1998-07-20 Roland McGrath <roland@baalperazim.frob.com>
+
+ * mount.c (mount_root): Make perror explanation strings consistent.
+
+ * mount.c (pmap_initialize_rpc): Make static.
+ (mount_initialize_rpc): Likewise.
+
+Wed Aug 20 14:31:03 1997 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu>
+
+ * ops.c (netfs_attempt_link): Implement EXCL == 0 case.
+ (netfs_attempt_rename): Implement EXCL != 0 case.
+
+ * pager.c (netfs_get_filemap): If pager_create fails, return
+ error to caller.
+
+Wed Aug 6 15:23:03 1997 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu>
+
+ * ops.c (netfs_attempt_unlink): Purge cache-held references
+ *before* counting live references. Use new function.
+ * name-cache.c (purge_lookup_cache_node): New function.
+ * nfs.h (purge_lookup_cache_node): New decl.
+
+ * cache.c (netfs_node_norefs): Don't do delete RPC here, fork off
+ a separate thread to do it.
+ (struct fnd): New type.
+ (forked_node_delete): New function.
+
+Mon Aug 4 15:56:37 1997 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu>
+
+ * name-cache.c (struct lookup_cache): Drop members `node_cache_fh'
+ and `node_cache_len'. New member `np'.
+ (enter_lookup_cache): Fill C->np instead of C->node_cache_fh.
+ Acquire an additional reference on NP to keep it live. If there
+ was a reference there before, release it.
+ (purge_lookup_cache): If there is a reference to a node on a
+ purged entry, release it.
+ (check_lookup_cache): If there is a reference to a node on an
+ out-of-date entry, release it. When returning live positive hits,
+ use the NP stored instead of looking one up.
+
+Fri Aug 1 15:56:56 1997 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu>
+
+ * main.c (netfs_append_args): Append --name-cache-timeout and
+ --name-cache-neg-timeout values.
+
+Tue Jul 29 15:38:15 1997 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu>
+
+ * name-cache.c (check_lookup_cache): Use name_cache_neg_timeout in
+ preference to name_cache_timeout for negative hits.
+
+ * nfs.h (name_cache_neg_timeout): New variable.
+ * main.c (DEFAULT_NAME_CACHE_NEG_TIMEOUT): New macro.
+ (name_cache_neg_timeout): Initialize new variable.
+ (OPT_NCACHE_NEG_TO): New option key.
+ (common_options): Add --name-cache-neg-timeout switch.
+ (parse_common_opt): Process OPT_NCACHE_NEG_TO option key.
+
+ * ops.c (netfs_attempt_lookup): Do cast of -1 correctly to match
+ check_lookup_cache and ANSI C rules.
+
+ * name-cache.c (check_lookup_cache): Unlock DIR correctly before
+ returning a negative cache hit.
+
+ * rpc.c (rpc_receive_thread): Don't print "dropping reply"
+ messages any more.
+
+ * ops.c (netfs_attempt_lookup): Cash all lookups, both positive
+ and negative.
+ (netfs_attempt_mkdir): Purge cache before creating directory
+ entry.
+ (netfs_attempt_link): Likewise.
+ (netfs_attempt_create_file): Likewise.
+
+ * ops.c (netfs_attempt_lookup): Pass correct node to
+ enter_lookup_cache as the child.
+
+Thu Jul 24 13:15:56 1997 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu>
+
+ * name-cache.c: New file.
+ * ops.c (netfs_attempt_lookup): Check lookup cache before trying
+ RPC. After successful lookup, make cache entry.
+ (netfs_attempt_unlink): Purge cache before doing operation.
+ (netfs_attempt_rmdir): Likewise.
+ (netfs_attempt_rename): Purge cache for both names before operation.
+ * nfs.h (enter_lookup_cache, purge_lookup_cache,
+ check_lookup_cache): New prototypes.
+ * Makefile (SRCS): Add name-cache.c.
+
+ * nfs.h (name_cache_timeout): New variable.
+ * main.c (DEFAULT_NAME_CACHE_TIMEOUT): New macro.
+ (name_cache_timeout): Initialize new variable.
+ (OPT_NCACHE_TO): New option key.
+ (common_options): Add --name-cache-timeout switch.
+ (parse_common_opt): Process OPT_NCACHE_TO option key.
+
+ * cache.c (lookup_fhandle): Don't parse NFS XDR format, instead
+ take a length arg. Return void. All callers changed to use new
+ function xdr_decode_fhandle.
+ * nfs.c (xdr_decode_fhandle): New function.
+ * nfs.h (xdr_decode_fhandle): New prototype.
+ (lookup_fhandle): Update prototype.
+
+1997-07-23 Miles Bader <miles@gnu.ai.mit.edu>
+
+ * main.c: Include <error.h>.
+ (main): Failure to map MAPPED_TIME is a fatal error.
+
+1997-06-09 Miles Bader <miles@gnu.ai.mit.edu>
+
+ * ops.c (netfs_validate_stat): Don't clear NP->istranslated.
+
+Wed May 21 12:07:24 1997 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu>
+
+ * ops.c (netfs_attempt_create_file): Only attempt chown if the
+ create succeeded.
+
+Tue May 20 15:35:39 1997 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu>
+
+ * nfs.c (xdr_encode_create_state): New arg OWNER. Set the owner
+ of the new file to it. All callers changed.
+ * nfs.h (xdr_encode_create_state): Update prototype.
+ * ops.c (netfs_attempt_mkdir): If owner didn't get set correctly
+ (some servers ignore it) then try a chown.
+ (netfs_attempt_create_file): Likewise.
+
+Thu Apr 10 13:25:12 1997 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu>
+
+ * ops.c (netfs_attempt_set_size): Short circuit EACCES to cover
+ one important case.
+
+Fri Feb 21 16:47:35 1997 Miles Bader <miles@gnu.ai.mit.edu>
+
+ * main.c (netfs_append_args): Present the remote filesystem as a
+ single argument, in HOST:FS format.
+
+Wed Feb 12 13:53:42 1997 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu>
+
+ * ops.c (netfs_check_open_permissions): If this is a new node,
+ don't report an error here. (Though, later I/O requests still
+ might fail.)
+
+Wed Nov 20 17:13:59 1996 Miles Bader <miles@gnu.ai.mit.edu>
+
+ * Makefile (HURDLIBS): Add iohelp.
+
+Mon Nov 18 17:01:38 1996 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu>
+
+ * ops.c (guess_mode_use): Delete function.
+ (netfs_report_access): Use fshelp_access instead of
+ guess_mode_use. Change return type.
+
+Sat Nov 16 18:24:55 1996 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu>
+
+ * Makefile (SRCS): Remove `cred.c'.
+ * cred.c: Delete file.
+ * nfs.h (struct netcred): Delete type.
+ (cred_has_uid, cred_has_gid): Delete functions.
+ (nfs_initialize_rpc): netcred arg now iouser.
+ * ops.c: Change struct netcred to struct iouser throughout.
+ * pager.c: Likewise.
+ * cache.c (netfs_node_norefs): Likewise.
+ * nfs.c (nfs_initialize_rpc): Convert use of netcred to iouser.
+
+Mon Nov 4 21:23:58 1996 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu>
+
+ * rpc.c (rpc_list_lock): Delete variable. Omit all mention of it
+ throughout this file. Expand the use of outstanding_lock to cover
+ what rpc_list_lock used to handle.
+
+Fri Nov 1 18:12:21 1996 Miles Bader <miles@gnu.ai.mit.edu>
+
+ * rpc.c (conduct_rpc): Unlock OUTSTANDING_LOCK if write fails.
+
+Wed Oct 30 18:25:18 1996 Miles Bader <miles@gnu.ai.mit.edu>
+
+ * ops.c (netfs_attempt_statfs): Convert incoming numbers from
+ network to host byte order.
+ Don't convert sizes from IOSIZE to BSIZE units.
+ Return BSIZE in f_bsize field, not IOSIZE.
+ Fill in f_fsid field.
+
+Thu Oct 24 23:01:35 1996 Miles Bader <miles@gnu.ai.mit.edu>
+
+ * main.c (runtime_argp_children): New variable.
+ (runtime_argp_parents): Variable removed.
+ (runtime_argp): Use RUNTIME_ARGP_CHILDREN, not RUNTIME_ARGP_PARENTS.
+ (main): Rename ARGP_PARENTS to ARGP_CHILDREN, and change the
+ element type to `struct argp_child'; change the reference in ARGP
+ accordingly.
+
+Fri Oct 4 00:00:12 1996 Miles Bader <miles@gnu.ai.mit.edu>
+
+ * mount.c: Add hacks to avoid idiotic sun definitions of TRUE,
+ FALSE, and malloc in <rpc/types.h>.
+ * nfs.h (bool_t, enum_t): Typedefs removed.
+
+Thu Oct 3 12:04:36 1996 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu>
+
+ * ops.c (netfs_attempt_write): If we get EINTR after having
+ already written something, return a short count.
+
+ * ops.c (netfs_attempt_create_file): If verify_nonexistent returns
+ an error, bother to properly unlock NP before returning.
+
+Mon Sep 30 15:45:31 1996 Miles Bader <miles@gnu.ai.mit.edu>
+
+ * main.c (OPT_RSIZE): Changed to 'R'.
+ (OPT_WSIZE): Changed to 'W'.
+ (doc): Add general description.
+
+Thu Sep 26 14:03:07 1996 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu>
+
+ * nfs.h (enum_t): New decl.
+
+Wed Sep 18 13:03:22 1996 Miles Bader <miles@gnu.ai.mit.edu>
+
+ * main.c (netfs_append_args): Renamed from netfs_get_options.
+ Don't initialize ARGZ & ARGZ_LEN anymore.
+ Add remote filesystem spec to output.
+ (hold): Variable removed.
+ (main): Don't use HOLD anymore.
+
+Thu Sep 12 16:46:47 1996 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu>
+
+ * Makefile (HURDLIBS): New variable.
+ (nfs): Omit special dependency.
+
+Tue Sep 3 14:00:25 1996 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu>
+
+ * nfs-spec.h: Renamed from rpcsvc/nfs_prot.h.
+ * mount.c: Include "mount.h" instead of <rpcsvc/mount.h>.
+ * nfs.h: Include "nfs-spec.h" instead of <rpcsvc/nfs_prot.h>.
+ * rpcsvc/mount.h: Deleted file.
+ * rpcsvc: Deleted directory.
+ * mount.h (MOUNTPROG): Renamed from MOUNT_RPC_PROGRAM.
+ (MOUNTVERS): Renamed from MOUNT_RPC_VERSION.
+ * Makefile (RPCSVC_FILES): Deleted var.
+ (lndist, lndist-rpcsvc-files,
+ $(top_srcdir)/hurd-snap/$(dir)/rpcsvc): Deleted targets.
+ (LCLHDRS): Added mount.h and nfs-spec.h.
+
+Thu Aug 29 10:41:27 1996 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu>
+
+ * rpcsvc/nfs_prot.h (createmode): Spell EXCLUSIVE correctly.
+ * nfs.c (hurd_mode_to_nfs_type): New function.
+ * nfs.h (hurd_mode_to_nfs_type): New decl.
+ * ops.c (netfs_attempt_rmdir): process_wcc_stat for NP, not DIR.
+ (netfs_attempt_link): Spell netfs_validate_stat correctly.
+ (minor, major): New macros.
+ (netfs_report_access): Don't try and return an error.
+
+ * rpc.c (conduct_rpc): Tolerate and return errors from write.
+
+ * Makefile (RPCSVC_FILES): New variable.
+ (lndist): Depend on lndist-rpcsvc-files.
+ (lndist-rpcsvc-files, $(top_srcdir)/hurd-snap/$(dir)/rpcsvc): New
+ targets.
+
+Fri Aug 16 11:56:53 1996 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu>
+
+ * ops.c (process_wcc_stat): New function.
+ (netfs_attempt_chown): Use process_wcc_stat instead of
+ register_fresh_stat. Pack and unpack v3 SETATTR structure if
+ appropriate.
+ (netfs_attempt_chmod): Likewise.
+ (netfs_attempt_utimes): Likewise.
+ (netfs_attempt_set_size): Likewise.
+ (netfs_attempt_lookup): Use process_returned_stat instead of
+ register_fresh state. Unpack v3 LOOKUP structure if appropriate.
+ (netfs_attempt_link): Likewise.
+ (verify_nonexistent): Assert that we are v2.
+ (netfs_report_access): Use NFS3PROC_ACCESS if we are v3.
+ (netfs_check_open_permissions): Use netfs_report_access.
+ (netfs_attempt_readlink): Unpack v3 READLINK structure if
+ appropriate.
+ (netfs_attempt_read): Pack and unpack v3 READ structure in
+ appropriate. Use process_returned_stat instead of
+ register_fresh_stat.
+ (netfs_attempt_write): Pack and unpack v3 WRITE structure in
+ appropriate. Use process_wcc_stat instead of
+ register_fresh_stat.
+ (netfs_attempt_create_file): Pack and unpack v3 CREATE structure
+ if appropriate. Use process_returned_stat instead of
+ register_fresh_stat.
+ (netfs_attempt_link) [CHRDEV, BLKDEV, FIFO, SOCK]: If v3, use new
+ MKNOD call instead of CREATE with overloaded mode.
+ (netfs_attempt_link) [SYMLINK]: If pack and unpack v3 SYMLINK
+ structure if appropriate.
+ (netfs_attempt_unlink): Unpack v3 REMOVE structure if appropriate.
+ (netfs_attempt_rmdir): Unpack v3 RMDIR structure if appropriate.
+ (netfs_attempt_rename): Unpack v3 RENAME structure if appropriate.
+
+ * rpcsvc/nfs_prot.h (ACCESS3_READ, ACCESS3_LOOKUP, ACCESS3_MODIFY,
+ ACCESS3_EXTEND, ACCESS3_DELETE, ACCESS3_EXECUTE): New macros.
+
+ * ops.c (netfs_attempt_chown): Bother to read NFS error/success
+ value.
+
+Thu Aug 15 15:24:29 1996 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu>
+
+ * ops.c (verify_nonexistent): Don't need to lock DIR; it's already
+ locked.
+ (netfs_attempt_link): Lock DIR *before* calling verify_nonexistent.
+
+ * nfs.c (xdr_encode_fhandle) [protocol_version == 2]: Copy
+ fhandle->data, not fhandle itself.
+
+Wed Aug 14 12:33:37 1996 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu>
+
+ * nfs.c (xdr_encode_fhandle): Second arg now a `struct fhandle *'.
+ Encode v3 fhandle if appropriate.
+ * cache.c: Include <netinet/in.h>.
+ (hash): New arg `length'.
+ (lookup_fhandle): Changed to be more like xdr_decode_* functions.
+ All callers changed. Do the right thing for v3.
+ (recache_handle): Likewise.
+ * nfs.h (struct fhandle): New type.
+ (struct netnode): Member `handle' is now a `struct fhandle'.
+ (xdr_encode_fhandle): Second arg now a `struct fhandle *'.
+ (lookup_fhandle, recache_handle): Changed to be more like
+ xdr_decode_* functions.
+
+ * rpcsvc/nfs_prot.h (enum sattr_time_how): New type.
+ * nfs.c (xdr_encode_64bit): New function.
+ (xdr_encode_sattr_mode, xdr_encode_sattr_ids,
+ xdr_encode_sattr_size, xdr_encode_sattr_times,
+ xdr_encode_create_state, xdr_encode_sattr_stat): Encode v3 sattr
+ if appropriate.
+ (xdr_decode_fattr): Decode v3 fattr if appropriate.
+
+ * rpcsvc/nfs_prot.h (NFS_FHSIZE): Deleted macro.
+ (NFS2_FHSIZE, NFS3_FHSIZE, NFS3_COOKIEVERFSIZE, NFS3_CREATEVERFSIZE,
+ NFS3_WRITEVERFSIZE): New macros.
+ (enum ftype): Deleted NFFIFO. Added NF2FIFO, NF3FIFO, and an
+ alias NF2BAD for NF3FIFO.
+ (NFSPROC_NULL, NFSPROC_GETATTR, NFSPROC_SETATTR,
+ NFSPROC_LOOKUP, NFSPROC_READLINK, NFSPROC_READ,
+ NFSPROC_WRITE, NFSPROC_CREATE, NFSPROC_REMOVE,
+ NFSPROC_RENAME, NFSPROC_LINK, NFSPROC_SYMLINK, NFSPROC_MKDIR,
+ NFSPROC_RMDIR, NFSPROC_READDIR): Replace with new
+ macros that take a version arg. All users changed to use new
+ version arg.
+ (NFS_PROTOCOL_FUNC): New macro.
+ (NFS2PROC_NULL, NFS2PROC_GETATTR, NFS2PROC_SETATTR, NFS2PROC_ROOT,
+ NFS2PROC_LOOKUP, NFS2PROC_READLINK, NFS2PROC_READ,
+ NFS2PROC_WRITECACHE, NFS2PROC_WRIT, NFS2PROC_CREATE,
+ NFS2PROC_REMOVE, NFS2PROC_RENAME, NFS2PROC_LINK, NFS2PROC_SYMLINK,
+ NFS2PROC_MKDIR, NFS2PROC_RMDIR, NFS2PROC_READDIR, NFS2PROC_STATFS,
+ NFS3PROC_NULL, NFS3PROC_GETATTR, NFS3PROC_SETATTR,
+ NFS3PROC_LOOKUP, NFS3PROC_ACCESS, NFS3PROC_READLINK,
+ NFS3PROC_READ, NFS3PROC_WRITE, NFS3PROC_CREATE, NFS3PROC_MKDIR,
+ NFS3PROC_SYMLINK, NFS3PROC_MKNOD, NFS3PROC_REMOVE, NFS3PROC_RMDIR,
+ NFS3PROC_RENAME, NFS3PROC_LINK, NFS3PROC_READDIR,
+ NFS3PROC_READDIRPLUS, NFS3PROC_FSSTAT, NFS3PROC_FSINFO,
+ NFS3PROC_PATHCONF, NFS3PROC_COMMIT): New macros. All callers
+ appropriately changed.
+
+ * nfs.c (nfs_error_trans): NFS_SERVERFAULT maps to EIO;
+ NFSERR_BADTYPE maps to EOPNOTSUPP.
+
+ * rpcsvc/nfs_prot.h (nfsstat, ftype, struct nfs_fh, nfs_fh, struct
+ nfstime, nfstime, struct fattr, fattr, struct sattr, sattr,
+ filename, nfspath, struct attrstat, attrstat, struct sattrargs,
+ sattrargs, struct diropargs, diropargs, struct diropokres,
+ diropokres, struct diropres, diropres, struct readlinkres,
+ readlinkres, struct readargs, readargs, struct readokres,
+ readokres, struct readres, readres, struct writeargs, writeargs,
+ struct createargs, createargs, struct renameargs, renameargs,
+ struct linkargs, linkargs, struct symlinkargs, symlinkargs,
+ nfscookie, struct readdirargs, readdirargs, struct entry, entry,
+ struct dirlist, dirlist, struct readdirres, readdirres, struct
+ statfsokres, statfsokres, struct statfsres, statfsres): Delete
+ unused types.
+ (xdr_nfsstat, xdr_ftype, xdr_nfs_fh, xdr_nfstime, xdr_fattr,
+ xdr_sattr, xdr_filename, xdr_nfspath, xdr_attrstat, xdr_sattrargs,
+ xdr_diropargs, xdr_diropokres, xdr_diropres, xdr_readlinkres,
+ xdr_readargs, xdr_readokres, xdr_readres, xdr_writeargs,
+ xdr_createargs, xdr_renameargs, xdr_linkargs, xdr_symlinkargs,
+ xdr_nfscookie, xdr_readdirargs, xdr_entry, xdr_dirlist,
+ xdr_readdirres, xdr_statfsokres, xdr_statfsres, nfsproc_null_2,
+ nfsproc_getattr_2, nfsproc_setattr_2, nfsproc_root_2,
+ nfsproc_lookup_2, nfsproc_readlink_2, rfsproc_read_2,
+ nfsproc_writecache_2, nfsproc_write_2, nfsproc_create_2,
+ nfsproc_remove_2, nfsproc_rename_2, nfsproc_link_2,
+ nfsproc_symlink_2, nfsproc_mkdir_2, nfsproc_rmdir_2,
+ nfsproc_readdir_2, nfsproc_statfs_2): Delete unused function
+ declarations.
+
+Tue Aug 13 14:57:03 1996 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu>
+
+ * ops.c (netfs_attempt_create_file): Sun's NFS client does not
+ expect NFSPROC_CREATE to be exclusive. Accordingly, on most
+ servers (including ours) it isn't exclusive. (Which, of course,
+ contradicts Sun's own RGC 1094, section 2.2.10.) Which means we
+ have to insert our own test here to make sure the file doesn't
+ exist before attempting NFSPROC_CREATE.
+ (netfs_attempt_link): Likewise.
+ (verify_nonexistent): New function.
+
+Mon Aug 12 11:13:58 1996 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu>
+
+ * nfs.c (nfs_error_trans): Repair syntax.
+
+Thu Aug 8 18:48:22 1996 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu>
+
+ * nfs.h (protocol_version): New variable.
+ * mount.c (protocol_version): Define and initialize to `2'.
+
+ * rpcsvc/nfs_prot.h (enum nfsstat): Added new nfsv3 error codes:
+ NFSERR_XDEV, NFSERR_INVAL, NFSERR_MLINK, NFSERR_REMOTE,
+ NFSERR_BADHANDLE, NFSERR_NOT_SYNC, NFSERR_BAD_COOKIE,
+ NFSERR_NOTSUPP, NFSERR_TOOSMALL, NFSERR_SERVERFAULT,
+ NFSERR_BADTYPE, NFSERR_JUKEBOX.
+ (NFSERR_TRYLATER): New macro.
+ * nfs.c (nfs_error_trans): Understand v3 error codes if we are
+ runnnig v3.
+
+Wed Jul 31 13:25:00 1996 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu>
+
+ * ops.c (netfs_attempt_statfs): Use NFSPROC_STATFS, not SETATTR to
+ do a statfs.
+
+Tue Jul 23 19:41:07 1996 Miles Bader <miles@gnu.ai.mit.edu>
+
+ * nfs.c (xdr_encode_sattr_times): `struct timespec' now uses a
+ field prefix of `tv_'.
+
+Wed Jul 17 13:12:31 1996 Michael I. Bushnell, p/BSG <mib@gnu.ai.mit.edu>
+
+ * main.c (mounted_soft): Initialize to zero.
+
+Thu Jul 4 17:14:42 1996 Michael I. Bushnell, p/BSG <mib@gnu.ai.mit.edu>
+
+ * ops.c (netfs_attempt_link) [case SYMLINK]: Include directory
+ handle as an RPC arg.
+
+Wed Jun 26 16:41:00 1996 Miles Bader <miles@gnu.ai.mit.edu>
+
+ * main.c (netfs_get_options): New function.
+ (netfs_parse_runtime_options, netfs_unparse_runtime_options):
+ Functions removed.
+ (runtime_argp_parents, runtime_argp, netfs_runtime_argp): New variables.
+ (main): Use &NETFS_STD_STARTUP_ARGP insteda of NETFS_STARTUP_ARGP.
+
+Thu Jun 13 09:24:24 1996 Michael I. Bushnell, p/BSG <mib@gnu.ai.mit.edu>
+
+ * Makefile (SRCS): Remove pager.c.
+ * nfs.h (struct netnode): Add member `fileinfo'.
+ * nfs.h (register_fresh_stat): Add decl.
+
+Wed Jun 12 22:37:31 1996 Michael I. Bushnell, p/BSG <mib@gnu.ai.mit.edu>
+
+ * Makefile (SRCS): Add pager.c.
+
+Wed May 22 18:49:16 1996 Miles Bader <miles@gnu.ai.mit.edu>
+
+ * main.c (parse_startup_opt): Use ARGP_ERR_UNKNOWN instead of EINVAL.
+
+Tue May 14 14:00:21 1996 Michael I. Bushnell, p/BSG <mib@gnu.ai.mit.edu>
+
+ * ops.c (netfs_attempt_unlink): Add new arg in call to
+ netfs_attempt_link.
+
+Sat May 11 01:10:05 1996 Miles Bader <miles@gnu.ai.mit.edu>
+
+ * main.c (parse_common_opt): Use ARGP_ERR_UNKNOWN instead of EINVAL.
+
+Fri May 10 18:15:11 1996 Michael I. Bushnell, p/BSG <mib@gnu.ai.mit.edu>
+
+ * ops.c (netfs_attempt_rename, netfs_attempt_link): New parm EXCL,
+ but don't implement the hard case yet.
+
+Thu May 9 20:24:21 1996 Michael I. Bushnell, p/BSG <mib@gnu.ai.mit.edu>
+
+ * ops.c (netfs_attempt_statfs): Expect and fill in new statfs
+ buffer.
+
+Fri Apr 19 13:50:25 1996 Michael I. Bushnell, p/BSG <mib@gnu.ai.mit.edu>
+
+ * main.c (main): Failure to bind privileged ports is indicated by
+ EACCES, not EPERM.
+
+Thu Apr 11 13:51:33 1996 Michael I. Bushnell, p/BSG <mib@gnu.ai.mit.edu>
+
+ * ops.c (guess_mode_use): New function.
+ (netfs_check_open_permissions, netfs_report_access): Replace old
+ clever versions with less obtrusive one.
+
+Tue Apr 2 09:12:28 1996 Michael I. Bushnell, p/BSG <mib@gnu.ai.mit.edu>
+
+ * ops.c (netfs_report_access): Bother to initialize LEN.
+
+Fri Mar 29 17:26:14 1996 Miles Bader <miles@gnu.ai.mit.edu>
+
+ * rpc.c: Define malloc to something random around include of rpc/*
+ header files to avoid bogus definition there.
+
+Fri Mar 29 17:10:58 1996 Michael I. Bushnell, p/BSG <mib@gnu.ai.mit.edu>
+
+ * ops.c (netfs_report_access): Make sure netfs_attempt_read return
+ a reasonable LEN.
+ (netfs_attempt_write): Truncate to THISAMT instead of AMT.
+
+Tue Mar 19 11:00:54 1996 Michael I. Bushnell, p/BSG <mib@gnu.ai.mit.edu>
+
+ * Makefile (LCLHDRS): Drop rpc.h.
+
+ * consts.c: Doc fixes.
+ * cache.c: Likewise.
+ * cred.c: Likewise.
+ * main.c: Likewise.
+ * mount.c: Likewise.
+ * mount.h: Likewise.
+ * nfs.c: Likewise.
+ * ops.c: Likewise.
+ * rpc.c: Likewise.
+
+ * rpc.c (rpc_receive_thread): Allocate receive buffer big enough
+ for largest read we expect.
+
+ * cache.c (lookup_fhandle): Correctly install new node in hash
+ table slot.
+
+ * main.c (parse_startup_opt): Pass STATE, not STATE->argp in call
+ to argp_error.
+
+ * cache.c (lookup_fhandle): Initialize NN->dead_dir and
+ NN->dead_name.
+
+ * ops.c: Include <unistd.h>.
+ (register_fresh_stat): Repair syntax.
+
+Mon Mar 18 19:49:28 1996 Miles Bader <miles@gnu.ai.mit.edu>
+
+ * main.c (main, netfs_parse_runtime_options): Pass new arg to
+ argp_parse.
+
+Mon Mar 18 11:19:27 1996 Michael I. Bushnell, p/BSG <mib@gnu.ai.mit.edu>
+
+ * ops.c (register_fresh_stat): Set fs_fsid, st_fstype, st_gen,
+ st_author, and st_flags here.
+ * nfs.c (xdr_decode_fattr): Don't set st_fstype, st_gen,
+ st_author, or st_flags here.
+
+ * ops.c (netfs_attempt_write): Increment OFFSET each time around
+ the loop.
+
+ * nfs.c (xdr_encode_create_state): Call hurd_mode_to_nfs_mode and
+ htonl on MODE.
+
+ * nfs.c (xdr_encode_sattr_stat): New function.
+
+Thu Mar 14 15:11:41 1996 Michael I. Bushnell, p/BSG <mib@gnu.ai.mit.edu>
+
+ * nfs.h (struct netnode): New members `dtrans' and `transarg'.
+ * cache.c (lookup_fhandle): Initialize NN->dtrans.
+ (netfs_node_norefs): Free transarg if necessary.
+ (recache_handle): New function.
+ * ops.c (netfs_attempt_mkfile): Make dtrans possible if it
+ isn't already.
+ (netfs_attempt_unlink): Likewise, when doing the rename hack.
+ (netfs_attempt_mksymlink): Implement using dtrans and transarg.
+ (netfs_attempt_mkdev): Likewise.
+ (register_fresh_stat): If NP->nn->dtrans is set, then mutate the
+ mode here.
+ (netfs_attempt_readlink): If NP->nn->dtrans is SYMLINK, then DTRT.
+ (netfs_attempt_link): Only issue NFSPROC_LINK if dtrans is not
+ operative. Otherwise, DTRT.
+ (netfs_attempt_chmod): Implement type-changing using dtrans.
+
+Tue Mar 12 15:23:32 1996 Michael I. Bushnell, p/BSG <mib@gnu.ai.mit.edu>
+
+ * ops.c (netfs_set_translator, netfs_attempt_mksymlink,
+ netfs_attempt_mkdev): New functions.
+ (netfs_attempt_chmod): Detect attempt to change node type.
+ (netfs_validate_stat): Clear NP->istranslated.
+
+Mon Mar 4 16:16:13 1996 Miles Bader <miles@gnu.ai.mit.edu>
+
+ * main.c (main): Use NETFS_STARTUP_ARGP.
+ (netfs_parse_runtime_options, netfs_unparse_runtime_options): New funs.
+
+Wed Feb 28 19:24:23 1996 Miles Bader <miles@gnu.ai.mit.edu>
+
+ * main.c (options): New variable.
+ (main): Parse our arguments.