cvs commit: src/sys/dev/disk/ccd ccd.c src/sys/emulation/linux/i386/linprocfs linprocfs_subr.c linprocfs_vnops.c src/sys/kern kern_sysref.c vfs_bio.c vfs_cache.c vfs_lock.c vfs_mount.c vfs_subr.c vfs_sync.c vfs_syscalls.c src/sys/sys sysref2.h vnode.h src/sys/vfs/fifofs ...

Matthew Dillon dillon at crater.dragonflybsd.org
Sun May 6 12:24:52 PDT 2007


dillon      2007/05/06 12:23:36 PDT

DragonFly src repository

  Modified files:
    sys/dev/disk/ccd     ccd.c 
    sys/emulation/linux/i386/linprocfs linprocfs_subr.c 
                                       linprocfs_vnops.c 
    sys/kern             kern_sysref.c vfs_bio.c vfs_cache.c 
                         vfs_lock.c vfs_mount.c vfs_subr.c 
                         vfs_sync.c vfs_syscalls.c 
    sys/sys              sysref2.h vnode.h 
    sys/vfs/fifofs       fifo_vnops.c 
    sys/vfs/gnu/ext2fs   ext2_inode.c ext2_vnops.c 
    sys/vfs/hpfs         hpfs_vnops.c 
    sys/vfs/isofs/cd9660 cd9660_node.c 
    sys/vfs/mfs          mfs_vfsops.c mfs_vnops.c 
    sys/vfs/msdosfs      msdosfs_denode.c msdosfs_vfsops.c 
                         msdosfs_vnops.c 
    sys/vfs/nfs          nfs_node.c nfs_vnops.c 
    sys/vfs/ntfs         ntfs_vfsops.c ntfs_vnops.c 
    sys/vfs/nwfs         nwfs_node.c nwfs_vfsops.c nwfs_vnops.c 
    sys/vfs/procfs       procfs_subr.c procfs_vnops.c 
    sys/vfs/smbfs        smbfs_node.c smbfs_vfsops.c smbfs_vnops.c 
    sys/vfs/ufs          ufs_inode.c ufs_vnops.c 
    sys/vfs/union        union_subr.c union_vnops.c 
    sys/vm               vnode_pager.c 
  Log:
  Use SYSREF to reference count struct vnode.  v_usecount is now
  v_sysref(.refcnt).  v_holdcnt is now v_auxrefs.  SYSREF's termination state
  (using a negative reference count from -0x40000000+) now places the vnode in
  a VCACHED or VFREE state and deactivates it.  The vnode is now assigned a
  64 bit unique id via SYSREF.
  
  vhold() (which manipulates v_auxrefs) no longer reactivates a vnode and
  is explicitly used only to track references from auxillary structures
  and references to prevent premature destruction of the vnode.  vdrop()
  will now only move a vnode from VCACHED to VFREE on the 1->0 transition
  of v_auxrefs if the vnode is in a termination state.
  
  vref() will now panic if used on a vnode in a termination state.  vget()
  must now be used to explicitly reactivate a vnode.  These requirements
  existed before but are now explicitly asserted.
  
  vlrureclaim() and allocvnode() should now interact a bit better.  In
  particular, vlrureclaim() will do a better job of finding vnodes to flush
  and transition from VCACHED to VFREE, and allocvnode() will do a better
  job finding vnodes to reuse without getting blocked by a flush.
  
  allocvnode now uses a real VX lock to sequence vnodes into VRECLAIMED.  All
  vnode special state processing now uses a VX lock.
  
  Vnodes are now able to be slowly returned to the memory pool when
  kern.maxvnodes is reduced at run time.
  
  Various initialization elements have been moved to CTOR/DTOR and are
  no longer in the critical path, improving performance.  However, since
  SYSREF uses atomic_cmpset_int() (aka cmpxchgl), which reduces performance
  somewhat, overall performance tends to be about the same.
  
  Revision  Changes    Path
  1.39      +1 -1      src/sys/dev/disk/ccd/ccd.c
  1.22      +1 -1      src/sys/emulation/linux/i386/linprocfs/linprocfs_subr.c
  1.40      +1 -1      src/sys/emulation/linux/i386/linprocfs/linprocfs_vnops.c
  1.4       +2 -1      src/sys/kern/kern_sysref.c
  1.90      +1 -1      src/sys/kern/vfs_bio.c
  1.81      +15 -8     src/sys/kern/vfs_cache.c
  1.25      +369 -292  src/sys/kern/vfs_lock.c
  1.26      +39 -24    src/sys/kern/vfs_mount.c
  1.102     +26 -37    src/sys/kern/vfs_subr.c
  1.15      +2 -2      src/sys/kern/vfs_sync.c
  1.115     +1 -1      src/sys/kern/vfs_syscalls.c
  1.2       +16 -0     src/sys/sys/sysref2.h
  1.74      +10 -8     src/sys/sys/vnode.h
  1.38      +1 -1      src/sys/vfs/fifofs/fifo_vnops.c
  1.21      +2 -2      src/sys/vfs/gnu/ext2fs/ext2_inode.c
  1.38      +4 -4      src/sys/vfs/gnu/ext2fs/ext2_vnops.c
  1.40      +1 -1      src/sys/vfs/hpfs/hpfs_vnops.c
  1.21      +2 -2      src/sys/vfs/isofs/cd9660/cd9660_node.c
  1.39      +1 -1      src/sys/vfs/mfs/mfs_vfsops.c
  1.34      +3 -3      src/sys/vfs/mfs/mfs_vnops.c
  1.28      +4 -4      src/sys/vfs/msdosfs/msdosfs_denode.c
  1.44      +3 -2      src/sys/vfs/msdosfs/msdosfs_vfsops.c
  1.46      +4 -5      src/sys/vfs/msdosfs/msdosfs_vnops.c
  1.26      +2 -9      src/sys/vfs/nfs/nfs_node.c
  1.70      +7 -7      src/sys/vfs/nfs/nfs_vnops.c
  1.45      +1 -1      src/sys/vfs/ntfs/ntfs_vfsops.c
  1.39      +2 -2      src/sys/vfs/ntfs/ntfs_vnops.c
  1.25      +6 -5      src/sys/vfs/nwfs/nwfs_node.c
  1.28      +1 -1      src/sys/vfs/nwfs/nwfs_vfsops.c
  1.35      +4 -4      src/sys/vfs/nwfs/nwfs_vnops.c
  1.17      +1 -1      src/sys/vfs/procfs/procfs_subr.c
  1.43      +3 -9      src/sys/vfs/procfs/procfs_vnops.c
  1.23      +2 -2      src/sys/vfs/smbfs/smbfs_node.c
  1.33      +1 -1      src/sys/vfs/smbfs/smbfs_vfsops.c
  1.38      +4 -4      src/sys/vfs/smbfs/smbfs_vnops.c
  1.22      +2 -2      src/sys/vfs/ufs/ufs_inode.c
  1.59      +4 -4      src/sys/vfs/ufs/ufs_vnops.c
  1.28      +9 -9      src/sys/vfs/union/union_subr.c
  1.37      +11 -11    src/sys/vfs/union/union_vnops.c
  1.33      +2 -2      src/sys/vm/vnode_pager.c


http://www.dragonflybsd.org/cvsweb/src/sys/dev/disk/ccd/ccd.c.diff?r1=1.38&r2=1.39&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/emulation/linux/i386/linprocfs/linprocfs_subr.c.diff?r1=1.21&r2=1.22&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/emulation/linux/i386/linprocfs/linprocfs_vnops.c.diff?r1=1.39&r2=1.40&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/kern/kern_sysref.c.diff?r1=1.3&r2=1.4&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/kern/vfs_bio.c.diff?r1=1.89&r2=1.90&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/kern/vfs_cache.c.diff?r1=1.80&r2=1.81&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/kern/vfs_lock.c.diff?r1=1.24&r2=1.25&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/kern/vfs_mount.c.diff?r1=1.25&r2=1.26&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/kern/vfs_subr.c.diff?r1=1.101&r2=1.102&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/kern/vfs_sync.c.diff?r1=1.14&r2=1.15&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/kern/vfs_syscalls.c.diff?r1=1.114&r2=1.115&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/sys/sysref2.h.diff?r1=1.1&r2=1.2&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/sys/vnode.h.diff?r1=1.73&r2=1.74&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/fifofs/fifo_vnops.c.diff?r1=1.37&r2=1.38&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/gnu/ext2fs/ext2_inode.c.diff?r1=1.20&r2=1.21&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/gnu/ext2fs/ext2_vnops.c.diff?r1=1.37&r2=1.38&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/hpfs/hpfs_vnops.c.diff?r1=1.39&r2=1.40&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/isofs/cd9660/cd9660_node.c.diff?r1=1.20&r2=1.21&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/mfs/mfs_vfsops.c.diff?r1=1.38&r2=1.39&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/mfs/mfs_vnops.c.diff?r1=1.33&r2=1.34&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/msdosfs/msdosfs_denode.c.diff?r1=1.27&r2=1.28&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/msdosfs/msdosfs_vfsops.c.diff?r1=1.43&r2=1.44&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/msdosfs/msdosfs_vnops.c.diff?r1=1.45&r2=1.46&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/nfs/nfs_node.c.diff?r1=1.25&r2=1.26&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/nfs/nfs_vnops.c.diff?r1=1.69&r2=1.70&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/ntfs/ntfs_vfsops.c.diff?r1=1.44&r2=1.45&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/ntfs/ntfs_vnops.c.diff?r1=1.38&r2=1.39&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/nwfs/nwfs_node.c.diff?r1=1.24&r2=1.25&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/nwfs/nwfs_vfsops.c.diff?r1=1.27&r2=1.28&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/nwfs/nwfs_vnops.c.diff?r1=1.34&r2=1.35&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/procfs/procfs_subr.c.diff?r1=1.16&r2=1.17&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/procfs/procfs_vnops.c.diff?r1=1.42&r2=1.43&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/smbfs/smbfs_node.c.diff?r1=1.22&r2=1.23&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/smbfs/smbfs_vfsops.c.diff?r1=1.32&r2=1.33&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/smbfs/smbfs_vnops.c.diff?r1=1.37&r2=1.38&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/ufs/ufs_inode.c.diff?r1=1.21&r2=1.22&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/ufs/ufs_vnops.c.diff?r1=1.58&r2=1.59&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/union/union_subr.c.diff?r1=1.27&r2=1.28&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/union/union_vnops.c.diff?r1=1.36&r2=1.37&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vm/vnode_pager.c.diff?r1=1.32&r2=1.33&f=u





More information about the Commits mailing list