From owner-freebsd-current Sun Dec 10 15:35:13 2000 From owner-freebsd-current@FreeBSD.ORG Sun Dec 10 15:35:10 2000 Return-Path: Delivered-To: freebsd-current@freebsd.org Received: from earth.backplane.com (placeholder-dcat-1076843399.broadbandoffice.net [64.47.83.135]) by hub.freebsd.org (Postfix) with ESMTP id 55A2337B400 for ; Sun, 10 Dec 2000 15:35:10 -0800 (PST) Received: (from dillon@localhost) by earth.backplane.com (8.11.1/8.9.3) id eBANYWm87853; Sun, 10 Dec 2000 15:34:32 -0800 (PST) (envelope-from dillon) Date: Sun, 10 Dec 2000 15:34:32 -0800 (PST) From: Matt Dillon Message-Id: <200012102334.eBANYWm87853@earth.backplane.com> To: Philipp Mergenthaler Cc: freebsd-current@FreeBSD.ORG Subject: fix for pageout_flush panic (was Re: panic: vm_pageout_flush: partially dirty page) References: <20001210033546.A13896@rz.uni-karlsruhe.de> Sender: owner-freebsd-current@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.ORG : : : 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 majordomo@FreeBSD.org with "unsubscribe freebsd-current" in the body of the message