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
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 
  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

More information about the Commits mailing list