DragonFly commits List (threaded) for 2006-08
[
Date Prev][
Date Next]
[
Thread Prev][
Thread Next]
[
Date Index][
Thread Index]
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
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
[
Date Prev][
Date Next]
[
Thread Prev][
Thread Next]
[
Date Index][
Thread Index]