|
|
BSD 4.3reno
This nfs directory is a merge of local and Berkeley changes up to
Dec. 10, 1989. The code has been tested in the "end of Aug. vnode kernel"
and also tested a little in the Nov. 30 vnode kernel. The kernel
differences are ifdef'd on VOP_PRINT in all files except nfs_bio.c,
nfs_node.c, nfs_vfsops.c and nfsnode.h. For these files, there are separate
".old" for the end of Aug. and ".new" for the Nov. 30 kernels.
Two minor changes outside of the nfs directory are required to install
this level of hacks:
1 - change the number of args. for the nfssvc system call from 1 -> 3 in
syscalls.master and regenerate init_sysent.c (or cheat and just edit
init_sysent.c as well)
2 - add nfs_srvcache.c to conf/files (this is the server recent request
cache)
A summary of changes since mid. Sept. are as follows:
- overloaded the usec component of the ctime and atime fields in the file
attributes with the generation number and flags respectively
- modified the way the fsid number for the mount point is generated to
ensure it is unique and returned that as the rdev attribute for files
in that file system instead of returning the server's dev number
- changed ENOENT error returns from a client side remove rpc to return
0 to avoid the problem associated with the Sun rpc at least once
semantics
- unlock the directory before a client nfs_lookup rpc is issued and then
relocking it for the oddball cases instead of unlocking it after the
rpc returns for the unlock cases. (Hopefully this straightens out the
problem with the automounter)
- Kirk's many cleanups done with the help of lint (I did put one unused
variable assignment back in because several macros expect it to be
set and if you used one of those in future versions of the nfs_serv.c
it would blow up real good for a not very obvious reason)
- server side recent request caching in a manner similar to that described
by Chet Juszczak of DEC at Usenix Winter 1989
- for the new kernel I have replaced all calls to nfs_blkflush with the new
vfs ones. (goodbye nfs_blkflush, you were a kludge anyhow)
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.