Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 05 Mar 1995 18:45:07 -0800
From:      David Greenman <davidg@Root.COM>
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 
Message-ID:  <199503060245.SAA00283@corbin.Root.COM>
In-Reply-To: Your message of "Sun, 05 Mar 95 21:20:01 EST." <199503060220.VAA01300@starkhome.cs.sunysb.edu> 

next in thread | previous in thread | raw e-mail | index | archive | help
(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



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199503060245.SAA00283>