Hi,
On Wed, 12 Jan 2000 07:21:17 -0500 (EST), Ingo Molnar <[EMAIL PROTECTED]>
said:
> On Wed, 12 Jan 2000, Gadi Oxman wrote:
>> As far as I know, we took care not to poke into the buffer cache to
>> find clean buffers -- in raid5.c, the only code which does a find_buffer()
>> is:
> yep, this is still the case.
OK, that's good to know.
> Especially the reconstruction code is a rathole. Unfortunately
> blocking reconstruction if b_count == 0 is not acceptable because
> several filesystems (such as ext2fs) keep metadata caches around
> (eg. the block group descriptors in the ext2fs case) which have
> b_count == 1 for a longer time.
That's not a problem: we don't need reconstruction to interact with the
buffer cache at all.
Ideally, what I'd like to see the reconstruction code do is to:
* lock a stripe
* read a new copy of that stripe locally
* recalc parity and write back whatever disks are necessary for the stripe
* unlock the stripe
so that the data never goes through the buffer cache at all, but that
the stripe is locked with respect to other IOs going on below the level
of ll_rw_block (remember there may be IOs coming in to ll_rw_block which
are not from the buffer cache, eg. swap or journal IOs).
> We are '100% journal-safe' if power fails during resync.
Except for the fact that resync isn't remotely journal-safe in the first
place, yes. :-)
--Stephen