From owner-freebsd-current Sun Mar 5 18:45:29 1995 Return-Path: current-owner Received: (from majordom@localhost) by freefall.cdrom.com (8.6.10/8.6.6) id SAA18598 for current-outgoing; Sun, 5 Mar 1995 18:45:29 -0800 Received: from Root.COM (implode.Root.COM [198.145.90.1]) by freefall.cdrom.com (8.6.10/8.6.6) with ESMTP id SAA18592 for ; Sun, 5 Mar 1995 18:45:26 -0800 Received: from corbin.Root.COM (corbin.Root.COM [198.145.90.18]) by Root.COM (8.6.8/8.6.5) with ESMTP id SAA01798; Sun, 5 Mar 1995 18:45:08 -0800 Received: from localhost (localhost [127.0.0.1]) by corbin.Root.COM (8.6.9/8.6.5) with SMTP id SAA00283; Sun, 5 Mar 1995 18:45:07 -0800 Message-Id: <199503060245.SAA00283@corbin.Root.COM> X-Authentication-Warning: corbin.Root.COM: Host localhost didn't use HELO protocol To: starkhome!gene@sbstark.cs.sunysb.edu (Gene Stark) cc: current@FreeBSD.org, dyson@Root.COM Subject: Re: Page fault panics during make world in -current In-reply-to: Your message of "Sun, 05 Mar 95 21:20:01 EST." <199503060220.VAA01300@starkhome.cs.sunysb.edu> From: David Greenman Reply-To: davidg@Root.COM Date: Sun, 05 Mar 1995 18:45:07 -0800 Sender: current-owner@FreeBSD.org Precedence: bulk (fixed the CC: this time) >It appears to me that the problem is the negative logical block number >is filtering down to the call to allocbuf(). From the way the logical >block numbers are used in allocbuf() to compute offsets into VM objects >(which are unsigned, at least they used to be, and it is hard to imagine >things changing that substantially), it looks like allocbuf() is not >supposed to be called with a negative logical block numbers and vmio=1. >Is this right? In our current scheme of things, file metadata is supposed to be cached in the vm object...so the behavior your seeing is at least partially correct. It is certainly conceivable that this isn't handled completely correctly. You might notice the following in vnode_pager_output: if ((int) m[0]->offset < 0) { printf("vnode_pager_output: attempt to write meta-data!!! -- 0x%x\n", m[0]->offset); m[0]->dirty = 0; rtvals[0] = VM_PAGER_OK; return VM_PAGER_OK; } ...to make sure that file metadata doesn't getting written back to the file itself. There may indeed by problems with doing that right thing in other places. Another item for the whiteboard. -DG