On Sun, Sep 2, 2012 at 5:45 PM, Yongqiang Yang <xiaoqiangnk@xxxxxxxxx> wrote: > Recnetly, I ecountered some corrupted filesystems in which some > groups' free inode counts were negative, it seemed that free inode This comment is not exactly, it is not negative but 65535. I will resend the patch later. Thanks, Yongqiang. > count was overflow. This patch teaches ext4 to check free inode > count before allocaing an inode. > > Signed-off-by: Yongqiang Yang <xiaoqiangnk@xxxxxxxxx> > --- > fs/ext4/ialloc.c | 9 +++++++++ > 1 files changed, 9 insertions(+), 0 deletions(-) > > diff --git a/fs/ext4/ialloc.c b/fs/ext4/ialloc.c > index 26154b8..fa36372 100644 > --- a/fs/ext4/ialloc.c > +++ b/fs/ext4/ialloc.c > @@ -697,6 +697,15 @@ got_group: > if (!gdp) > goto fail; > > + /* > + * Check free inodes count before loading bitmap. > + */ > + if (ext4_free_inodes_count(sb, gdp) == 0) { > + if (++group == ngroups) > + group = 0; > + continue; > + } > + > brelse(inode_bitmap_bh); > inode_bitmap_bh = ext4_read_inode_bitmap(sb, group); > if (!inode_bitmap_bh) > -- > 1.7.5.1 > -- Best Wishes Yongqiang Yang -- 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