Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c4caae25 authored by Eric Sandeen's avatar Eric Sandeen Committed by Theodore Ts'o
Browse files

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: default avatarEric Sandeen <sandeen@redhat.com>
Signed-off-by: default avatar"Theodore Ts'o" <tytso@mit.edu>
parent ba69f9ab
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -263,7 +263,7 @@ void ext4_free_inode(handle_t *handle, struct inode *inode)
					ext4_group_t f;

					f = ext4_flex_group(sbi, block_group);
					atomic_dec(&sbi->s_flex_groups[f].free_inodes);
					atomic_dec(&sbi->s_flex_groups[f].used_dirs);
				}

			}
@@ -773,7 +773,7 @@ static int ext4_claim_inode(struct super_block *sb,
		if (sbi->s_log_groups_per_flex) {
			ext4_group_t f = ext4_flex_group(sbi, group);

			atomic_inc(&sbi->s_flex_groups[f].free_inodes);
			atomic_inc(&sbi->s_flex_groups[f].used_dirs);
		}
	}
	gdp->bg_checksum = ext4_group_desc_csum(sbi, group, gdp);