Re: ext3: bogus i_mode errors with 2.6.18.1

From: Andre Noll
Date: Fri Oct 27 2006 - 11:35:24 EST


On 12:01, Andreas Dilger wrote:
> On Oct 26, 2006 18:02 +0200, Andre Noll wrote:
> > On 03:36, Andreas Dilger wrote:
> > > The other issue is that you need to potentially set "num" bits in the
> > > bitmap here, if those all overlap metadata. In fact, it might just
> > > make more sense at this stage to walk all of the bits in the bitmaps,
> > > the inode table and the backup superblock and group descriptor to see
> > > if they need fixing also.
> >
> > I tried to implement this, but I could not find out how to check at this
> > point whether a given bit (in the block bitmap, say) needs fixing.
>
> Well, since we know at least one bit needs fixing and results in the block
> being written to disk then setting the bits for all of the other metadata
> blocks in this group has no extra IO cost (only a tiny amount of CPU).
> Re-setting the bits if they are already set is not harmful.

I.e, something like

int i;
ext3_fsblk_t bit;
unsigned long gdblocks = EXT3_SB(sb)->s_gdb_count;

for (i = 0, bit = 1; i < gdblocks; i++, bit++)
ext3_set_bit(bit, gdp_bh->b_data);

Is that correct?

Andre
--
The only person who always got his work done by Friday was Robinson Crusoe

Attachment: signature.asc
Description: Digital signature