bug-hurd
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH] ext2fs and large stores (> 1.5G)


From: Neal H. Walfield
Subject: Re: [PATCH] ext2fs and large stores (> 1.5G)
Date: 30 Apr 2003 15:21:07 -0400
User-agent: Gnus/5.0808 (Gnus v5.8.8) Emacs/21.2

> On Wed, Apr 30, 2003 at 05:48:05PM +0300, Ognyan Kulev wrote:
> > Here is the big problem that corrupts data:  When a block is requested 
> > and the block cache is full, I _reuse_ VM page from the block cache but 
> > I can't force Mach to reload it.  Mach must reload it because I assign 
> > different mapping between the memory page and the backing store.  I 
> > tried pager_flush_some and pager_offer_page but they don't work or I do 
> > something incorrectly.
> 
> I don't think it is possible to force GNU Mach to drop a page or reload it,
> once it is loaded it is in the page cache until GNU Mach decides to evict it
> on its own (due to memory pressure).  Thomas, am I right?

memory_object_lock_request causes mach to flush pages from its cache.
Mach does not care about the actual mapping insofar as the value of
the page is concerned (it really cares about who will supply the page
on the fault, i.e. which server).  Thus, if server S has a page <obj:
obj, offset: 0, size: 4k> mapped to block B and there is an extant
user U, when S flushes <obj, 0, 4k>, S needs to be prepared to restore
<obj, 0, 4k> when user U faults the page back in.  If S supplies block
C on that fault (which is completely legal), then user U will be
confused and may even crash.  If there are no extant users of a page
then when S flushes <obj, 0, 4k> from the physical cache, S
essentially owns the mapping and can freely associate it with block C
or any other block.




reply via email to

[Prev in Thread] Current Thread [Next in Thread]