| Submitter | Yongqiang Yang |
|---|---|
| Date | Sept. 2, 2012, 9:45 a.m. |
| Message ID | <1346579109-25016-2-git-send-email-xiaoqiangnk@gmail.com> |
| Download | mbox | patch |
| Permalink | /patch/181174/ |
| State | Superseded |
| Headers | show |
Comments
On Sun, Sep 2, 2012 at 5:45 PM, Yongqiang Yang <xiaoqiangnk@gmail.com> 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@gmail.com> > --- > 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 >
Patch
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)
Recnetly, I ecountered some corrupted filesystems in which some groups' free inode counts were negative, it seemed that free inode count was overflow. This patch teaches ext4 to check free inode count before allocaing an inode. Signed-off-by: Yongqiang Yang <xiaoqiangnk@gmail.com> --- fs/ext4/ialloc.c | 9 +++++++++ 1 files changed, 9 insertions(+), 0 deletions(-)