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