Date: Thu, 24 Sep 1998 17:33:33 -0700 (PDT) From: Matthew Dillon <dillon@backplane.com> To: Luoqi Chen <luoqi@watermarkgroup.com> Cc: committers@FreeBSD.ORG Subject: Kernel is hitting my debugging printf's Message-ID: <199809250033.RAA22359@apollo.backplane.com>
index | next in thread | raw e-mail
brelse-A: releasing BP marked B_DELWRI 204202b0
vfs_vmio_release: releasing BP marked B_DELWRI 204202b0
^^^^
bp->b_flags
B_DELWRI
B_CACHE
B_BUSY
D_BONE
B_CLUSTEROK
B_RELBUF
B_VMIO
brelse-A: releasing BP marked B_DELWRI 204202b0
vfs_vmio_release: releasing BP marked B_DELWRI 204202b0
brelse-A: releasing BP marked B_DELWRI 204202b0
vfs_vmio_release: releasing BP marked B_DELWRI 204202b0
I stuck this printf in kern/vfs_bio.c around line 671, in brelse():
...
/* MATT HACK */
if ((bp->b_flags & (B_INVAL|B_RELBUF)) && (bp->b_flags & B_DELWRI))
printf("brelse-A: releasing BP marked B_DELWRI %08lx\n", (long)bp->b_flags);
if (bp->b_flags & (B_INVAL | B_RELBUF))
vfs_vmio_release(bp);
} else if (bp->b_flags & B_VMIO) {
/* MATT HACK */
if ((bp->b_flags & (B_INVAL|B_RELBUF)) && (bp->b_flags & B_DELWRI))
printf("brelse-B: releasing BP marked B_DELWRI %08lx\n", (long)bp->b_flags);
If I understand the code correctly, this is illegal. Here's the sequence
of events as I understand it:
* small write is made, page associated with bp and modified. page is
now dirty.
* bdwrite() is called
* bp is marked B_DELWRI and page is remarked clean (this turns out to
be necessary so we can detect if the page is modified again)
* page is *required* to remain associated with the bp until it is
written out by the VFS system, because if the page is disassociated
from the bp the fact that it has been marked clean can cause it to
be thrown away, thus we lose the write() we did.
* The logs above show that the page is being disassociated while
B_DELWRI is still set in the bp. I believe this to be illegal.
From looking at the code it appears that B_DELWRI is cleared when
actual I/O is initiated on the bp. The logs above show that that
has not occured (B_DELWRI is still set).
So, can any experts out there tell me if I'm barking up the right tree or
not? I don't want to bug John too much since he has other projects going
on. Luoqi? Anyone else ?
-Matt
Matthew Dillon Engineering, HiWay Technologies, Inc. & BEST Internet
Communications & God knows what else.
<dillon@backplane.com> (Please include original email in any response)
home |
help
Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199809250033.RAA22359>
