From 02fa91d35e22b19238295d8c2717c8e8bbdba364 Mon Sep 17 00:00:00 2001 From: Matthew Dillon Date: Mon, 11 Dec 2000 07:52:47 +0000 Subject: [PATCH] Be less conservative with a recently added KASSERT. Certain edge cases with file fragments and read-write mmap's can lead to a situation where a VM page has odd dirty bits, e.g. 0xFC - due to being dirtied by an mmap and only the fragment (representing a non-page-aligned end of file) synced via a filesystem buffer. A correct solution that guarentees consistent m->dirty for the file EOF case is being worked on. In the mean time we can't be so conservative in the KASSERT. --- sys/vm/vm_pageout.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/sys/vm/vm_pageout.c b/sys/vm/vm_pageout.c index 762b293e0704..90ab28870611 100644 --- a/sys/vm/vm_pageout.c +++ b/sys/vm/vm_pageout.c @@ -372,10 +372,13 @@ vm_pageout_flush(mc, count, flags) * * We do not have to fixup the clean/dirty bits here... we can * allow the pager to do it after the I/O completes. + * + * NOTE! mc[i]->dirty may be partial or fragmented due to an + * edge case with file fragments. */ for (i = 0; i < count; i++) { - KASSERT(mc[i]->valid == VM_PAGE_BITS_ALL && mc[i]->dirty == VM_PAGE_BITS_ALL, ("vm_pageout_flush page %p index %d/%d: partially dirty page", mc[i], i, count)); + KASSERT(mc[i]->valid == VM_PAGE_BITS_ALL, ("vm_pageout_flush page %p index %d/%d: partially invalid page", mc[i], i, count)); vm_page_io_start(mc[i]); vm_page_protect(mc[i], VM_PROT_READ); }