cvs commit: src/sys/emulation/linux/i386/linprocfs linprocfs_subr.c src/sys/kern kern_exit.c kern_lock.c vfs_lock.c vfs_mount.c vfs_subr.c vfs_syscalls.c src/sys/sys lock.h vnode.h src/sys/vfs/procfs procfs_subr.c src/sys/vfs/union union_vnops.c
Matthew Dillon
dillon at crater.dragonflybsd.org
Thu Aug 10 19:02:58 PDT 2006
dillon 2006/08/10 18:55:02 PDT
DragonFly src repository
Modified files:
sys/emulation/linux/i386/linprocfs linprocfs_subr.c
sys/kern kern_exit.c kern_lock.c vfs_lock.c
vfs_mount.c vfs_subr.c vfs_syscalls.c
sys/sys lock.h vnode.h
sys/vfs/procfs procfs_subr.c
sys/vfs/union union_vnops.c
Log:
VNode sequencing and locking - part 2/4.
Control access to v_usecount and v_holdcnt with the vnode's lock's spinlock.
Use the spinlock to interlock the VRECLAIMED and VINACTIVE flags during
1->0 and 0->1 transitions. N->N+1 transitions do not need to obtain the
spinlock and simply use a locked bus cycle increment. Vnode operations
are still not MP safe but this gets further along that road.
The lockmgr can no longer fail when obtaining an exclusive lock, remove
the error code return from vx_lock() and vx_get(). Add special lockmgr
support routines to atomically acquire and release an exclusive lock
when the caller is already holding the spinlock.
The removal of vnodes from the vnode free list is now defered. Removal
only occurs when allocvnode() encounters a vnode on the list which should
not be on it. This improves critical code paths for vget(), vput() and
vrele() by removing unnecessary manipulation of the freelist.
Fix a lockmgr bug where wakeup() was being called with a spinlock held.
Instead, defer the wakeup until after the spinlock is released.
Revision Changes Path
1.21 +3 -4 src/sys/emulation/linux/i386/linprocfs/linprocfs_subr.c
1.59 +3 -4 src/sys/kern/kern_exit.c
1.24 +61 -10 src/sys/kern/kern_lock.c
1.21 +143 -120 src/sys/kern/vfs_lock.c
1.21 +9 -7 src/sys/kern/vfs_mount.c
1.93 +24 -11 src/sys/kern/vfs_subr.c
1.99 +4 -4 src/sys/kern/vfs_syscalls.c
1.18 +2 -0 src/sys/sys/lock.h
1.64 +4 -3 src/sys/sys/vnode.h
1.14 +3 -4 src/sys/vfs/procfs/procfs_subr.c
1.32 +6 -8 src/sys/vfs/union/union_vnops.c
http://www.dragonflybsd.org/cvsweb/src/sys/emulation/linux/i386/linprocfs/linprocfs_subr.c.diff?r1=1.20&r2=1.21&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/kern/kern_exit.c.diff?r1=1.58&r2=1.59&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/kern/kern_lock.c.diff?r1=1.23&r2=1.24&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/kern/vfs_lock.c.diff?r1=1.20&r2=1.21&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/kern/vfs_mount.c.diff?r1=1.20&r2=1.21&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/kern/vfs_subr.c.diff?r1=1.92&r2=1.93&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/kern/vfs_syscalls.c.diff?r1=1.98&r2=1.99&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/sys/lock.h.diff?r1=1.17&r2=1.18&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/sys/vnode.h.diff?r1=1.63&r2=1.64&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/procfs/procfs_subr.c.diff?r1=1.13&r2=1.14&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/union/union_vnops.c.diff?r1=1.31&r2=1.32&f=u
More information about the Commits
mailing list