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
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 
  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