cvs commit: src/sys/kern kern_lock.c kern_synch.c vfs_bio.c src/sys/sys buf.h buf2.h lock.h spinlock2.h systm.h src/sys/vfs/ntfs ntfs_inode.h ntfs_subr.c src/sys/vm vm_map.h
Matthew Dillon
dillon at crater.dragonflybsd.org
Sat Nov 19 09:22:27 PST 2005
dillon 2005/11/19 09:19:52 PST
DragonFly src repository
Modified files:
sys/kern kern_lock.c kern_synch.c vfs_bio.c
sys/sys buf.h buf2.h lock.h spinlock2.h systm.h
sys/vfs/ntfs ntfs_inode.h ntfs_subr.c
sys/vm vm_map.h
Log:
Convert the lockmgr interlock from a token to a spinlock. This fixes a
problem on SMP boxes where the MP lock would unexpectedly lose atomicy for
a short period of time due to token acquisition.
Add a tsleep_interlock() call which takes advantage of tsleep()'s cpu
locality of reference to provide a helper function which allows us to
atomically spin_unlock() and tsleep() in an MP safe manner with only
a critical section. Basically all it does is set a cpumask bit for the
ident hash index to cause other cpu's issuing a wakeup to notify our cpu.
Any actual wakeup occuring during the race period after the spin_unlock
but before the tsleep() call will be delayed by the critical section
until after the tsleep has queued the thread.
Cleanup some unused junk in vm_map.h.
Revision Changes Path
1.15 +66 -31 src/sys/kern/kern_lock.c
1.54 +31 -0 src/sys/kern/kern_synch.c
1.53 +2 -2 src/sys/kern/vfs_bio.c
1.21 +4 -2 src/sys/sys/buf.h
1.11 +10 -21 src/sys/sys/buf2.h
1.11 +7 -4 src/sys/sys/lock.h
1.4 +2 -2 src/sys/sys/spinlock2.h
1.34 +1 -0 src/sys/sys/systm.h
1.6 +1 -1 src/sys/vfs/ntfs/ntfs_inode.h
1.16 +16 -10 src/sys/vfs/ntfs/ntfs_subr.c
1.17 +0 -15 src/sys/vm/vm_map.h
http://www.dragonflybsd.org/cvsweb/src/sys/kern/kern_lock.c.diff?r1=1.14&r2=1.15&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/kern/kern_synch.c.diff?r1=1.53&r2=1.54&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/kern/vfs_bio.c.diff?r1=1.52&r2=1.53&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/sys/buf.h.diff?r1=1.20&r2=1.21&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/sys/buf2.h.diff?r1=1.10&r2=1.11&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/sys/lock.h.diff?r1=1.10&r2=1.11&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/sys/spinlock2.h.diff?r1=1.3&r2=1.4&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/sys/systm.h.diff?r1=1.33&r2=1.34&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/ntfs/ntfs_inode.h.diff?r1=1.5&r2=1.6&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/ntfs/ntfs_subr.c.diff?r1=1.15&r2=1.16&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vm/vm_map.h.diff?r1=1.16&r2=1.17&f=u
More information about the Commits
mailing list