Message ID | 20200310150156.641-1-dmonakhov@gmail.com |
---|---|
State | Accepted |
Headers | show |
Series | ext4: mark block bitmap corrupted when found instead of BUGON | expand |
On Mar 10, 2020, at 9:01 AM, Dmitry Monakhov <dmonakhov@gmail.com> wrote: > > We already has similar code in ext4_mb_complex_scan_group(), but > ext4_mb_simple_scan_group() still affected. > > Other reports: https://www.spinics.net/lists/linux-ext4/msg60231.html > > Signed-off-by: Dmitry Monakhov <dmonakhov@gmail.com> Reviewed-by: Andreas Dilger <adilger@dilger.ca> > --- > fs/ext4/mballoc.c | 11 +++++++++-- > 1 file changed, 9 insertions(+), 2 deletions(-) > > diff --git a/fs/ext4/mballoc.c b/fs/ext4/mballoc.c > index 1027e01..97cd1a2 100644 > --- a/fs/ext4/mballoc.c > +++ b/fs/ext4/mballoc.c > @@ -1901,8 +1901,15 @@ void ext4_mb_simple_scan_group(struct ext4_allocation_context *ac, > BUG_ON(buddy == NULL); > > k = mb_find_next_zero_bit(buddy, max, 0); > - BUG_ON(k >= max); > - > + if (k >= max) { > + ext4_grp_locked_error(ac->ac_sb, e4b->bd_group, 0, 0, > + "%d free clusters of order %d. But found 0", > + grp->bb_counters[i], i); > + ext4_mark_group_bitmap_corrupted(ac->ac_sb, > + e4b->bd_group, > + EXT4_GROUP_INFO_BBITMAP_CORRUPT); > + break; > + } > ac->ac_found++; > > ac->ac_b_ex.fe_len = 1 << i; > -- > 2.7.4 > Cheers, Andreas
On Tue, Mar 10, 2020 at 05:02:26PM -0600, Andreas Dilger wrote: > On Mar 10, 2020, at 9:01 AM, Dmitry Monakhov <dmonakhov@gmail.com> wrote: > > > > We already has similar code in ext4_mb_complex_scan_group(), but > > ext4_mb_simple_scan_group() still affected. > > > > Other reports: https://www.spinics.net/lists/linux-ext4/msg60231.html > > > > Signed-off-by: Dmitry Monakhov <dmonakhov@gmail.com> > > Reviewed-by: Andreas Dilger <adilger@dilger.ca> Thanks, applied. - Ted
diff --git a/fs/ext4/mballoc.c b/fs/ext4/mballoc.c index 1027e01..97cd1a2 100644 --- a/fs/ext4/mballoc.c +++ b/fs/ext4/mballoc.c @@ -1901,8 +1901,15 @@ void ext4_mb_simple_scan_group(struct ext4_allocation_context *ac, BUG_ON(buddy == NULL); k = mb_find_next_zero_bit(buddy, max, 0); - BUG_ON(k >= max); - + if (k >= max) { + ext4_grp_locked_error(ac->ac_sb, e4b->bd_group, 0, 0, + "%d free clusters of order %d. But found 0", + grp->bb_counters[i], i); + ext4_mark_group_bitmap_corrupted(ac->ac_sb, + e4b->bd_group, + EXT4_GROUP_INFO_BBITMAP_CORRUPT); + break; + } ac->ac_found++; ac->ac_b_ex.fe_len = 1 << i;
We already has similar code in ext4_mb_complex_scan_group(), but ext4_mb_simple_scan_group() still affected. Other reports: https://www.spinics.net/lists/linux-ext4/msg60231.html Signed-off-by: Dmitry Monakhov <dmonakhov@gmail.com> --- fs/ext4/mballoc.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-)