Date: Tue, 29 Sep 1998 11:30:56 -0700 (PDT) From: Matthew Dillon <dillon@backplane.com> To: dillon@apollo.backplane.com Cc: cvs-committers@FreeBSD.ORG, cvs-all@FreeBSD.ORG Subject: Re: A second mmap file corruption issue Message-ID: <199809291830.LAA20898@apollo.backplane.com>
next in thread | raw e-mail | index | archive | help
Bleh. ok, that didn't work :-) I guess any page replaced by bogus_page
is supposed to be left wired, so a vmlookup when it's reloaded into the
bp doesn't have to rewire it.
This bogus_page and wire count stuff is scary.
-Matt
:
: (1) around line 659 of kern/vfs_bio.c, in brelse(). I think the page
: needs to be wired !!!!!!! Won't the wire count get corrupted
: when the bp is released and the page isn't wired ?
:
: if (m == bogus_page) {
: m = vm_page_lookup(obj, poff + j);
: ...
: bp->b_pages[j] = m;
: }
:
:
: (2) around line 1969 of kern/vfs_bio.c, in biodone. I think this
: page needs to be wired as well.
:
: if (m == bogus_page) {
: bogusflag = 1;
: m = vm_page_lookup(obj, OFF_TO_IDX(foff));
: ...
: bp->b_pages[i] = m;
: pmap_qenter(trunc_page(bp->b_data), bp->b_pages, bp->b_npages);
: }
:
:
: (3) Could someone also check vfs_busy_pages() and vfs_unbusy_pages() ?
: busy_pages removes pages from the bp without unwiring them,
: presumably because unbusy_pages adds them back without wiring
: them. That seems rather fragile to me but I *think* the code is
: doing the right thing as long as all vfs_busy_pages() calls are
: matched by vfs_unbusy_pages() calls.
:
: -Matt
:
: Matthew Dillon Engineering, HiWay Technologies, Inc. & BEST Internet
: Communications & God knows what else.
: <dillon@backplane.com> (Please include original email in any response)
:
Matthew Dillon Engineering, HiWay Technologies, Inc. & BEST Internet
Communications & God knows what else.
<dillon@backplane.com> (Please include original email in any response)
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199809291830.LAA20898>
