Re: [PATCH 2/2] ext4: check free inode count before allocaing an inode
From: Yongqiang Yang <hidden>
Date: 2012-09-05 02:17:54
On Sun, Sep 2, 2012 at 5:45 PM, Yongqiang Yang [off-list ref] 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.
quoted hunk ↗ jump to hunk
count was overflow. This patch teaches ext4 to check free inode count before allocaing an inode. Signed-off-by: Yongqiang Yang <redacted> --- 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