diff options
| author | Eric Sandeen <sandeen@redhat.com> | 2010-03-23 21:32:00 -0400 |
|---|---|---|
| committer | Theodore Ts'o <tytso@mit.edu> | 2010-03-23 21:32:00 -0400 |
| commit | c4caae25187ff3f5e837c6f04eb1acc2723c72d3 (patch) | |
| tree | 530f3dac932045e288366e260e446e96dd7f2fb7 | |
| parent | ba69f9ab7df844125898104e854e063b47c26637 (diff) | |
ext4: Fixed inode allocator to correctly track a flex_bg's used_dirs
When used_dirs was introduced for the flex_groups struct, it looks
like the accounting was not put into place properly, in some places
manipulating free_inodes rather than used_dirs.
Signed-off-by: Eric Sandeen <sandeen@redhat.com>
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
| -rw-r--r-- | fs/ext4/ialloc.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/fs/ext4/ialloc.c b/fs/ext4/ialloc.c index 361c0b9962a8..57f6eef6ccd6 100644 --- a/fs/ext4/ialloc.c +++ b/fs/ext4/ialloc.c | |||
| @@ -263,7 +263,7 @@ void ext4_free_inode(handle_t *handle, struct inode *inode) | |||
| 263 | ext4_group_t f; | 263 | ext4_group_t f; |
| 264 | 264 | ||
| 265 | f = ext4_flex_group(sbi, block_group); | 265 | f = ext4_flex_group(sbi, block_group); |
| 266 | atomic_dec(&sbi->s_flex_groups[f].free_inodes); | 266 | atomic_dec(&sbi->s_flex_groups[f].used_dirs); |
| 267 | } | 267 | } |
| 268 | 268 | ||
| 269 | } | 269 | } |
| @@ -773,7 +773,7 @@ static int ext4_claim_inode(struct super_block *sb, | |||
| 773 | if (sbi->s_log_groups_per_flex) { | 773 | if (sbi->s_log_groups_per_flex) { |
| 774 | ext4_group_t f = ext4_flex_group(sbi, group); | 774 | ext4_group_t f = ext4_flex_group(sbi, group); |
| 775 | 775 | ||
| 776 | atomic_inc(&sbi->s_flex_groups[f].free_inodes); | 776 | atomic_inc(&sbi->s_flex_groups[f].used_dirs); |
| 777 | } | 777 | } |
| 778 | } | 778 | } |
| 779 | gdp->bg_checksum = ext4_group_desc_csum(sbi, group, gdp); | 779 | gdp->bg_checksum = ext4_group_desc_csum(sbi, group, gdp); |
