svn commit: r235469 - head/sys/kern

Grzegorz Bernacki gber at FreeBSD.org
Tue May 15 09:55:15 UTC 2012


Author: gber
Date: Tue May 15 09:55:15 2012
New Revision: 235469
URL: http://svn.freebsd.org/changeset/base/235469

Log:
  Do not call bremfree for managed buffers.
  
  Calling bremfree for these buffers results in panic:
  "bremfree: buffer %p not on a queue."
  
  Approved by: kib

Modified:
  head/sys/kern/vfs_bio.c

Modified: head/sys/kern/vfs_bio.c
==============================================================================
--- head/sys/kern/vfs_bio.c	Tue May 15 09:37:22 2012	(r235468)
+++ head/sys/kern/vfs_bio.c	Tue May 15 09:55:15 2012	(r235469)
@@ -2640,8 +2640,8 @@ loop:
 	if (bp != NULL) {
 		int lockflags;
 		/*
-		 * Buffer is in-core.  If the buffer is not busy, it must
-		 * be on a queue.
+		 * Buffer is in-core.  If the buffer is not busy nor managed,
+		 * it must be on a queue.
 		 */
 		lockflags = LK_EXCLUSIVE | LK_SLEEPFAIL | LK_INTERLOCK;
 
@@ -2671,9 +2671,13 @@ loop:
 			bp->b_flags &= ~B_CACHE;
 		else if ((bp->b_flags & (B_VMIO | B_INVAL)) == 0)
 			bp->b_flags |= B_CACHE;
-		BO_LOCK(bo);
-		bremfree(bp);
-		BO_UNLOCK(bo);
+		if (bp->b_flags & B_MANAGED)
+			MPASS(bp->b_qindex == QUEUE_NONE);
+		else {
+			BO_LOCK(bo);
+			bremfree(bp);
+			BO_UNLOCK(bo);
+		}
 
 		/*
 		 * check for size inconsistancies for non-VMIO case.


More information about the svn-src-all mailing list