cvs commit: src/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys zfs_znode.h src/sys/cddl/contrib/opensolaris/uts/common/fs/zfs zfs_vnops.c zfs_znode.c src/sys/fs/msdosfs denode.h msdosfs_vnops.c src/sys/fs/smbfs smbfs_node.h smbfs_vnops.c src/sys/fs/tmpfs tmpfs.h tmpfs_vfsops.c tmpfs_vnops.c ...

Konstantin Belousov kib at FreeBSD.org
Wed Apr 16 11:33:32 UTC 2008


kib         2008-04-16 11:33:32 UTC

  FreeBSD src repository

  Modified files:
    sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys zfs_znode.h 
    sys/cddl/contrib/opensolaris/uts/common/fs/zfs zfs_vnops.c 
                                                   zfs_znode.c 
    sys/fs/msdosfs       denode.h msdosfs_vnops.c 
    sys/fs/smbfs         smbfs_node.h smbfs_vnops.c 
    sys/fs/tmpfs         tmpfs.h tmpfs_vfsops.c tmpfs_vnops.c 
    sys/gnu/fs/ext2fs    ext2_vnops.c inode.h 
    sys/gnu/fs/xfs/FreeBSD xfs_vnops.c 
    sys/kern             kern_lockf.c vfs_default.c vfs_subr.c 
    sys/nfs4client       nfs4_vnops.c 
    sys/nfsclient        nfs_lock.c nfs_vnops.c nfsnode.h 
    sys/sys              lockf.h vnode.h 
    sys/ufs/ufs          inode.h ufs_vnops.c 
  Log:
  Move the head of byte-level advisory lock list from the
  filesystem-specific vnode data to the struct vnode. Provide the
  default implementation for the vop_advlock and vop_advlockasync.
  Purge the locks on the vnode reclaim by using the lf_purgelocks().
  The default implementation is augmented for the nfs and smbfs.
  In the nfs_advlock, push the Giant inside the nfs_dolock.
  
  Before the change, the vop_advlock and vop_advlockasync have taken the
  unlocked vnode and dereferenced the fs-private inode data, racing with
  with the vnode reclamation due to forced unmount. Now, the vop_getattr
  under the shared vnode lock is used to obtain the inode size, and
  later, in the lf_advlockasync, after locking the vnode interlock, the
  VI_DOOMED flag is checked to prevent an operation on the doomed vnode.
  
  The implementation of the lf_purgelocks() is submitted by dfr.
  
  Reported by:    kris
  Tested by:      kris, pho
  Discussed with: jeff, dfr
  MFC after:      2 weeks
  
  Revision  Changes    Path
  1.3       +0 -1      src/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_znode.h
  1.31      +0 -39     src/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c
  1.15      +0 -1      src/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c
  1.39      +0 -1      src/sys/fs/msdosfs/denode.h
  1.185     +0 -35     src/sys/fs/msdosfs/msdosfs_vnops.c
  1.8       +0 -1      src/sys/fs/smbfs/smbfs_node.h
  1.69      +4 -4      src/sys/fs/smbfs/smbfs_vnops.c
  1.13      +0 -3      src/sys/fs/tmpfs/tmpfs.h
  1.18      +0 -1      src/sys/fs/tmpfs/tmpfs_vfsops.c
  1.18      +0 -32     src/sys/fs/tmpfs/tmpfs_vnops.c
  1.113     +0 -20     src/sys/gnu/fs/ext2fs/ext2_vnops.c
  1.45      +0 -1      src/sys/gnu/fs/ext2fs/inode.h
  1.9       +4 -4      src/sys/gnu/fs/xfs/FreeBSD/xfs_vnops.c
  1.62      +96 -1     src/sys/kern/kern_lockf.c
  1.144     +40 -1     src/sys/kern/vfs_default.c
  1.728     +5 -0      src/sys/kern/vfs_subr.c
  1.44      +29 -11    src/sys/nfs4client/nfs4_vnops.c
  1.47      +18 -8     src/sys/nfsclient/nfs_lock.c
  1.284     +23 -19    src/sys/nfsclient/nfs_vnops.c
  1.62      +0 -1      src/sys/nfsclient/nfsnode.h
  1.22      +6 -0      src/sys/sys/lockf.h
  1.336     +3 -0      src/sys/sys/vnode.h
  1.52      +0 -1      src/sys/ufs/ufs/inode.h
  1.297     +0 -41     src/sys/ufs/ufs/ufs_vnops.c


More information about the cvs-src mailing list