cvs commit: src/sys/sys buf.h src/sys/kern vfs_bio.c src/sys/nfsclient nfs_bio.c src/sys/ufs/ffs ffs_vnops.c

Jeff Roberson jeff at FreeBSD.org
Thu Nov 18 08:44:10 GMT 2004


jeff        2004-11-18 08:44:09 UTC

  FreeBSD src repository

  Modified files:
    sys/sys              buf.h 
    sys/kern             vfs_bio.c 
    sys/nfsclient        nfs_bio.c 
    sys/ufs/ffs          ffs_vnops.c 
  Log:
   - Eliminate the acquisition and release of the bqlock in bremfree() by
     setting the B_REMFREE flag in the buf.  This is done to prevent lock order
     reversals with code that must call bremfree() with a local lock held.
     This also reduces overhead by removing two lock operations per buf for
     fsync() and similar.
   - Check for the B_REMFREE flag in brelse() and bqrelse() after the bqlock
     has been acquired so that we may remove ourself from the free-list.
   - Provide a bremfreef() function to immediately remove a buf from a
     free-list for use only by NFS.  This is done because the nfsclient code
     overloads the b_freelist queue for its own async. io queue.
   - Simplify the numfreebuffers accounting by removing a switch statement
     that executed the same code in every possible case.
   - getnewbuf() can encounter locked bufs on free-lists once Giant is removed.
     Remove a panic associated with this condition and delay asserts that
     inspect the buf until after it is locked.
  
  Reviewed by:    phk
  Sponsored by:   Isilon Systems, Inc.
  
  Revision  Changes    Path
  1.469     +66 -38    src/sys/kern/vfs_bio.c
  1.140     +2 -0      src/sys/nfsclient/nfs_bio.c
  1.181     +2 -1      src/sys/sys/buf.h
  1.142     +2 -1      src/sys/ufs/ffs/ffs_vnops.c


More information about the cvs-src mailing list