cvs commit: src/sys/vfs/nfs nfs_node.c nfs_nqlease.c nfs_subs.c nfs_vfsops.c nfs_vnops.c nfsmount.h nfsnode.h
Matthew Dillon
dillon at crater.dragonflybsd.org
Fri Oct 10 15:02:08 PDT 2003
dillon 2003/10/10 15:01:13 PDT
Modified files:
sys/vfs/nfs nfs_node.c nfs_nqlease.c nfs_subs.c
nfs_vfsops.c nfs_vnops.c nfsmount.h
nfsnode.h
Log:
Data reads and writes should not need credentials, and most filesystems
ignore the ucred argument. NFS does, though, and FreeBSD-4.x had some
terrible hacks to associate credentials with data that only 'mostly' worked.
There were VM paging and buffer reconstitution cases which broke the
credentials even in 4.x. The hacks were removed from DragonFly during
the VFS messaging reorganization.
In DragonFly credentials are checked on open() but no credentials are
required for read and write ops. I had NFS just use the 'root' credential
for the RPC. However, this breaks NFS mounts which do not use the -maproot
(server side) directive. Really the bug is on the server side, but to
maintain general compatibility with NFS servers we have to provide a
non-root credential if root did not issue the I/O. This commit hacks up
the NFS code (rather then hacking up the rest of the kernel) to restore
the hacks that were previously removed from the kernel. Unfortunately it
can lead to a proliferation of ucred structures (FreeBSD-4.x did as well),
but that's the price we have to pay for now.
Report-by: Galen Sampson <galen_sampson at xxxxxxxxx>
Revision Changes Path
1.8 +9 -1 src/sys/vfs/nfs/nfs_node.c
1.12 +2 -2 src/sys/vfs/nfs/nfs_nqlease.c
1.10 +1 -1 src/sys/vfs/nfs/nfs_subs.c
1.9 +2 -2 src/sys/vfs/nfs/nfs_vfsops.c
1.14 +45 -17 src/sys/vfs/nfs/nfs_vnops.c
1.4 +1 -2 src/sys/vfs/nfs/nfsmount.h
1.6 +27 -9 src/sys/vfs/nfs/nfsnode.h
More information about the Commits
mailing list