On Mon, 1 Jun 2015, Andreas Dilger wrote: > Date: Mon, 1 Jun 2015 13:15:35 -0600 > From: Andreas Dilger <adilger@xxxxxxxxx> > To: Lukas Czerner <lczerner@xxxxxxxxxx> > Cc: linux-ext4@xxxxxxxxxxxxxxx > Subject: Re: [PATCH 2/3] ext4: Try to initialize all groups we can in case of > failure on ppc64 > > > > On Jun 1, 2015, at 1:55 AM, Lukas Czerner <lczerner@xxxxxxxxxx> wrote: > > > > Currently on the machines with page size > block size when initializing > > block group buddy cache we initialize it for all the block group bitmaps > > in the page. However in the case of read error, checksum error, or if > > a single bitmap is in any way corrupted we would fail to initialize all > > of the bitmaps. This is problematic because we will not have access to > > the other allocation groups even though those might be perfectly fine > > and usable. > > > > Fix this by reading all the bitmaps instead of error out on the first > > problem and simply skip the bitmaps which were either not read properly, > > or are not valid. > > > > Signed-off-by: Lukas Czerner <lczerner@xxxxxxxxxx> > > --- > > fs/ext4/mballoc.c | 10 +++++++--- > > 1 file changed, 7 insertions(+), 3 deletions(-) > > > > diff --git a/fs/ext4/mballoc.c b/fs/ext4/mballoc.c > > index 8d1e602..5677a03 100644 > > --- a/fs/ext4/mballoc.c > > +++ b/fs/ext4/mballoc.c > > @@ -882,10 +882,8 @@ static int ext4_mb_init_cache(struct page *page, char *incore) > > > > /* wait for I/O completion */ > > for (i = 0, group = first_group; i < groups_per_page; i++, group++) { > > - if (bh[i] && ext4_wait_block_bitmap(sb, group, bh[i])) { > > + if (bh[i] && ext4_wait_block_bitmap(sb, group, bh[i])) > > err = -EIO; > > - goto out; > > - } > > } > > > > first_block = page->index * blocks_per_page; > > @@ -898,6 +896,12 @@ static int ext4_mb_init_cache(struct page *page, char *incore) > > /* skip initialized uptodate buddy */ > > continue; > > > > + if (!buffer_verified(bh[group - first_group])) > > + /* Skip faulty bitmaps */ > > + continue; > > + else > > + err = 0; > > Not really a need for "else" here after the "continue" line, but that > is mostly harmless. > > Cheers, Andreas Good point, I can fix that. Thanks! -Lukas -- To unsubscribe from this list: send the line "unsubscribe linux-ext4" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html