cvs commit: src/sys/kern uipc_usrreq.c vfs_cache.c vfs_default.c vfs_syscalls.c vfs_vnops.c vfs_vopops.c src/sys/sys vfsops.h src/sys/vfs/nfs nfs_vnops.c

Matthew Dillon dillon at
Mon Aug 13 10:44:49 PDT 2007

dillon      2007/08/13 10:43:57 PDT

DragonFly src repository

  Modified files:
    sys/kern             uipc_usrreq.c vfs_cache.c vfs_default.c 
                         vfs_syscalls.c vfs_vnops.c vfs_vopops.c 
    sys/sys              vfsops.h 
    sys/vfs/nfs          nfs_vnops.c 
  The new VOP_N*() (namespace) operations pass a pointer to a namecache
  record.  This information is sufficient for resolving the namespace
  operation.  In all cases the parent namecache record already had to have
  a resolved vnode so the related directory vnode could be easily extracted
  by the VFS.  But this also means the target VFSs had to traverse the
  namecache topology up one level which introduced API pollution that
  is not compatible with directly translating a VOP to a RPC.
  To solve this we now pass a directory vnode along with the namecache pointer.
  This vnode is only held, not referenced or vget()d so the target VFS must
  still vget() the vnode and/or do whatever it needs to do to validate it.
  This gives the target VFS full control over directory locking when performing
  namespace operations.  The namespaces themselves are already guarenteed
  to be locked due to the fact that the related namecache records are locked.
  This change is being made to accomodate USERFS, so we can directly translate
  the related VOPs to RPCs without having to reproduce the namecache topology
  in the target VFS running in userland.
  Revision  Changes    Path
  1.36      +6 -1      src/sys/kern/uipc_usrreq.c
  1.84      +9 -4      src/sys/kern/vfs_cache.c
  1.50      +25 -51    src/sys/kern/vfs_default.c
  1.119     +72 -15    src/sys/kern/vfs_syscalls.c
  1.53      +7 -1      src/sys/kern/vfs_vnops.c
  1.35      +28 -12    src/sys/kern/vfs_vopops.c
  1.29      +89 -33    src/sys/sys/vfsops.h
  1.75      +2 -5      src/sys/vfs/nfs/nfs_vnops.c

More information about the Commits mailing list