:
:
: Hi,
:
:ever since this commit: ...
:
:dillon      2000/11/18 15:06:27 PST
: 
:   Modified files:
:    sys/kern             vfs_bio.c vfs_cluster.c vfs_subr.c

    Hmm.  Very odd.  It's catching a fully valid file page which is 
    marked partially dirty, less then a kilobyte in size, mapped
    into memory but not associated with a buffer.  m->dirty is
    0xFC (roughly equivalent to 3584 bytes, but the file is only 932
    bytes long.

    I'm not sure how it is possible for the above situation to
    occur.  No, I take that back... I see one possibility related
    to ftruncate()ing a file, where a file is partially dirtied, mapped
    into memory, and then ftruncate()ed.  I'll look into that.

    This is -current, it could be related to the ongoing work in -current, it
    has been reported to the list that -j buildworlds don't survive long but
    I don't know if that is true on single-cpu -current's or just for MP
    current's.

    You can revert my KASSERT to get rid of the panic but at this time I
    think my KASSERT is correct, and some piece of code somewhere is
    blowing something up.

    I would recommend *NOT* using -current for a production news machine!!!!
    If you can repeat the problem under -stable (which has the same patch
    set), that will give me more of a base to work from.  I'll track down the
    one case I can think of to see if I can reproduce the bug.

                                                -Matt


Index: sys/vm/vm_pageout.c
===================================================================
RCS file: /home/ncvs/src/sys/vm/vm_pageout.c,v
retrieving revision 1.151.2.5
diff -u -r1.151.2.5 vm_pageout.c
--- vm_pageout.c        2000/11/26 02:55:14     1.151.2.5
+++ vm_pageout.c        2000/12/10 22:50:43
@@ -372,7 +372,7 @@
         */
 
        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 dirty page", mc[i], i, count));
                vm_page_io_start(mc[i]);
                vm_page_protect(mc[i], VM_PROT_READ);
        }


To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-current" in the body of the message

Reply via email to