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