On Wed, 26 Jul 2000, Daniel Phillips wrote:

> > If so, how do you update buffer_heads in
> > pages that cover the relocated data? 
> 
> We have to be sure that if blocks are buffered then they are buffered in
> exactly one place and you always access them through through the buffer hash
> table.  So far so good, but the picture gets murkier for me when you talk

Not. Data normally is in page. Buffer_heads are not included into buffer
cache. They are refered from the struct page and their ->b_data just
points to appropriate pieces of page. You can not get them via bread().
At all. Buffer cache is only for metadata.

> > BTW, our implementation of UFS is fucked up in  that respect, so variant
> > from there will not work.
> 
> I'm not sure what you mean there...

I mean that UFS has the same problem (relocation of the last fragment) and
our implementation is fucked up (== does not deal with that properly and
eats data). So if you will look for existing solutions - forget about the
UFS one; it isn't. UFS will need fixing, but that's a separate story...

Reply via email to