ext4: Rename ext4_free_blks_{count,set}() to refer to clusters
The field bg_free_blocks_count_{lo,high} in the block group descriptor has been repurposed to hold the number of free clusters for bigalloc functions. So rename the functions so it makes it easier to read and audit the block allocation and block freeing code. Note: at this point in bigalloc development we doesn't support online resize, so this also makes it really obvious all of the places we need to fix up to add support for online resize. Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
This commit is contained in:
parent
6f16b60690
commit
021b65bb1e
|
@ -168,7 +168,7 @@ void ext4_init_block_bitmap(struct super_block *sb, struct buffer_head *bh,
|
||||||
* essentially implementing a per-group read-only flag. */
|
* essentially implementing a per-group read-only flag. */
|
||||||
if (!ext4_group_desc_csum_verify(sbi, block_group, gdp)) {
|
if (!ext4_group_desc_csum_verify(sbi, block_group, gdp)) {
|
||||||
ext4_error(sb, "Checksum bad for group %u", block_group);
|
ext4_error(sb, "Checksum bad for group %u", block_group);
|
||||||
ext4_free_blks_set(sb, gdp, 0);
|
ext4_free_group_clusters_set(sb, gdp, 0);
|
||||||
ext4_free_inodes_set(sb, gdp, 0);
|
ext4_free_inodes_set(sb, gdp, 0);
|
||||||
ext4_itable_unused_set(sb, gdp, 0);
|
ext4_itable_unused_set(sb, gdp, 0);
|
||||||
memset(bh->b_data, 0xff, sb->s_blocksize);
|
memset(bh->b_data, 0xff, sb->s_blocksize);
|
||||||
|
@ -550,7 +550,7 @@ ext4_fsblk_t ext4_count_free_blocks(struct super_block *sb)
|
||||||
gdp = ext4_get_group_desc(sb, i, NULL);
|
gdp = ext4_get_group_desc(sb, i, NULL);
|
||||||
if (!gdp)
|
if (!gdp)
|
||||||
continue;
|
continue;
|
||||||
desc_count += ext4_free_blks_count(sb, gdp);
|
desc_count += ext4_free_group_clusters(sb, gdp);
|
||||||
brelse(bitmap_bh);
|
brelse(bitmap_bh);
|
||||||
bitmap_bh = ext4_read_block_bitmap(sb, i);
|
bitmap_bh = ext4_read_block_bitmap(sb, i);
|
||||||
if (bitmap_bh == NULL)
|
if (bitmap_bh == NULL)
|
||||||
|
@ -558,7 +558,7 @@ ext4_fsblk_t ext4_count_free_blocks(struct super_block *sb)
|
||||||
|
|
||||||
x = ext4_count_free(bitmap_bh, sb->s_blocksize);
|
x = ext4_count_free(bitmap_bh, sb->s_blocksize);
|
||||||
printk(KERN_DEBUG "group %u: stored = %d, counted = %u\n",
|
printk(KERN_DEBUG "group %u: stored = %d, counted = %u\n",
|
||||||
i, ext4_free_blks_count(sb, gdp), x);
|
i, ext4_free_group_clusters(sb, gdp), x);
|
||||||
bitmap_count += x;
|
bitmap_count += x;
|
||||||
}
|
}
|
||||||
brelse(bitmap_bh);
|
brelse(bitmap_bh);
|
||||||
|
@ -572,7 +572,7 @@ ext4_fsblk_t ext4_count_free_blocks(struct super_block *sb)
|
||||||
gdp = ext4_get_group_desc(sb, i, NULL);
|
gdp = ext4_get_group_desc(sb, i, NULL);
|
||||||
if (!gdp)
|
if (!gdp)
|
||||||
continue;
|
continue;
|
||||||
desc_count += ext4_free_blks_count(sb, gdp);
|
desc_count += ext4_free_group_clusters(sb, gdp);
|
||||||
}
|
}
|
||||||
|
|
||||||
return desc_count;
|
return desc_count;
|
||||||
|
|
|
@ -1978,7 +1978,7 @@ extern ext4_fsblk_t ext4_inode_bitmap(struct super_block *sb,
|
||||||
struct ext4_group_desc *bg);
|
struct ext4_group_desc *bg);
|
||||||
extern ext4_fsblk_t ext4_inode_table(struct super_block *sb,
|
extern ext4_fsblk_t ext4_inode_table(struct super_block *sb,
|
||||||
struct ext4_group_desc *bg);
|
struct ext4_group_desc *bg);
|
||||||
extern __u32 ext4_free_blks_count(struct super_block *sb,
|
extern __u32 ext4_free_group_clusters(struct super_block *sb,
|
||||||
struct ext4_group_desc *bg);
|
struct ext4_group_desc *bg);
|
||||||
extern __u32 ext4_free_inodes_count(struct super_block *sb,
|
extern __u32 ext4_free_inodes_count(struct super_block *sb,
|
||||||
struct ext4_group_desc *bg);
|
struct ext4_group_desc *bg);
|
||||||
|
@ -1992,8 +1992,9 @@ extern void ext4_inode_bitmap_set(struct super_block *sb,
|
||||||
struct ext4_group_desc *bg, ext4_fsblk_t blk);
|
struct ext4_group_desc *bg, ext4_fsblk_t blk);
|
||||||
extern void ext4_inode_table_set(struct super_block *sb,
|
extern void ext4_inode_table_set(struct super_block *sb,
|
||||||
struct ext4_group_desc *bg, ext4_fsblk_t blk);
|
struct ext4_group_desc *bg, ext4_fsblk_t blk);
|
||||||
extern void ext4_free_blks_set(struct super_block *sb,
|
extern void ext4_free_group_clusters_set(struct super_block *sb,
|
||||||
struct ext4_group_desc *bg, __u32 count);
|
struct ext4_group_desc *bg,
|
||||||
|
__u32 count);
|
||||||
extern void ext4_free_inodes_set(struct super_block *sb,
|
extern void ext4_free_inodes_set(struct super_block *sb,
|
||||||
struct ext4_group_desc *bg, __u32 count);
|
struct ext4_group_desc *bg, __u32 count);
|
||||||
extern void ext4_used_dirs_set(struct super_block *sb,
|
extern void ext4_used_dirs_set(struct super_block *sb,
|
||||||
|
|
|
@ -78,7 +78,7 @@ static unsigned ext4_init_inode_bitmap(struct super_block *sb,
|
||||||
* allocation, essentially implementing a per-group read-only flag. */
|
* allocation, essentially implementing a per-group read-only flag. */
|
||||||
if (!ext4_group_desc_csum_verify(sbi, block_group, gdp)) {
|
if (!ext4_group_desc_csum_verify(sbi, block_group, gdp)) {
|
||||||
ext4_error(sb, "Checksum bad for group %u", block_group);
|
ext4_error(sb, "Checksum bad for group %u", block_group);
|
||||||
ext4_free_blks_set(sb, gdp, 0);
|
ext4_free_group_clusters_set(sb, gdp, 0);
|
||||||
ext4_free_inodes_set(sb, gdp, 0);
|
ext4_free_inodes_set(sb, gdp, 0);
|
||||||
ext4_itable_unused_set(sb, gdp, 0);
|
ext4_itable_unused_set(sb, gdp, 0);
|
||||||
memset(bh->b_data, 0xff, sb->s_blocksize);
|
memset(bh->b_data, 0xff, sb->s_blocksize);
|
||||||
|
@ -322,8 +322,8 @@ static int find_group_dir(struct super_block *sb, struct inode *parent,
|
||||||
if (ext4_free_inodes_count(sb, desc) < avefreei)
|
if (ext4_free_inodes_count(sb, desc) < avefreei)
|
||||||
continue;
|
continue;
|
||||||
if (!best_desc ||
|
if (!best_desc ||
|
||||||
(ext4_free_blks_count(sb, desc) >
|
(ext4_free_group_clusters(sb, desc) >
|
||||||
ext4_free_blks_count(sb, best_desc))) {
|
ext4_free_group_clusters(sb, best_desc))) {
|
||||||
*best_group = group;
|
*best_group = group;
|
||||||
best_desc = desc;
|
best_desc = desc;
|
||||||
ret = 0;
|
ret = 0;
|
||||||
|
@ -434,7 +434,7 @@ static void get_orlov_stats(struct super_block *sb, ext4_group_t g,
|
||||||
desc = ext4_get_group_desc(sb, g, NULL);
|
desc = ext4_get_group_desc(sb, g, NULL);
|
||||||
if (desc) {
|
if (desc) {
|
||||||
stats->free_inodes = ext4_free_inodes_count(sb, desc);
|
stats->free_inodes = ext4_free_inodes_count(sb, desc);
|
||||||
stats->free_clusters = ext4_free_blks_count(sb, desc);
|
stats->free_clusters = ext4_free_group_clusters(sb, desc);
|
||||||
stats->used_dirs = ext4_used_dirs_count(sb, desc);
|
stats->used_dirs = ext4_used_dirs_count(sb, desc);
|
||||||
} else {
|
} else {
|
||||||
stats->free_inodes = 0;
|
stats->free_inodes = 0;
|
||||||
|
@ -662,7 +662,7 @@ static int find_group_other(struct super_block *sb, struct inode *parent,
|
||||||
*group = parent_group;
|
*group = parent_group;
|
||||||
desc = ext4_get_group_desc(sb, *group, NULL);
|
desc = ext4_get_group_desc(sb, *group, NULL);
|
||||||
if (desc && ext4_free_inodes_count(sb, desc) &&
|
if (desc && ext4_free_inodes_count(sb, desc) &&
|
||||||
ext4_free_blks_count(sb, desc))
|
ext4_free_group_clusters(sb, desc))
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -686,7 +686,7 @@ static int find_group_other(struct super_block *sb, struct inode *parent,
|
||||||
*group -= ngroups;
|
*group -= ngroups;
|
||||||
desc = ext4_get_group_desc(sb, *group, NULL);
|
desc = ext4_get_group_desc(sb, *group, NULL);
|
||||||
if (desc && ext4_free_inodes_count(sb, desc) &&
|
if (desc && ext4_free_inodes_count(sb, desc) &&
|
||||||
ext4_free_blks_count(sb, desc))
|
ext4_free_group_clusters(sb, desc))
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -960,7 +960,7 @@ got:
|
||||||
ext4_lock_group(sb, group);
|
ext4_lock_group(sb, group);
|
||||||
if (gdp->bg_flags & cpu_to_le16(EXT4_BG_BLOCK_UNINIT)) {
|
if (gdp->bg_flags & cpu_to_le16(EXT4_BG_BLOCK_UNINIT)) {
|
||||||
gdp->bg_flags &= cpu_to_le16(~EXT4_BG_BLOCK_UNINIT);
|
gdp->bg_flags &= cpu_to_le16(~EXT4_BG_BLOCK_UNINIT);
|
||||||
ext4_free_blks_set(sb, gdp,
|
ext4_free_group_clusters_set(sb, gdp,
|
||||||
ext4_free_blocks_after_init(sb, group, gdp));
|
ext4_free_blocks_after_init(sb, group, gdp));
|
||||||
gdp->bg_checksum = ext4_group_desc_csum(sbi, group,
|
gdp->bg_checksum = ext4_group_desc_csum(sbi, group,
|
||||||
gdp);
|
gdp);
|
||||||
|
|
|
@ -2256,7 +2256,7 @@ int ext4_mb_add_groupinfo(struct super_block *sb, ext4_group_t group,
|
||||||
ext4_free_blocks_after_init(sb, group, desc);
|
ext4_free_blocks_after_init(sb, group, desc);
|
||||||
} else {
|
} else {
|
||||||
meta_group_info[i]->bb_free =
|
meta_group_info[i]->bb_free =
|
||||||
ext4_free_blks_count(sb, desc);
|
ext4_free_group_clusters(sb, desc);
|
||||||
}
|
}
|
||||||
|
|
||||||
INIT_LIST_HEAD(&meta_group_info[i]->bb_prealloc_list);
|
INIT_LIST_HEAD(&meta_group_info[i]->bb_prealloc_list);
|
||||||
|
@ -2799,7 +2799,7 @@ ext4_mb_mark_diskspace_used(struct ext4_allocation_context *ac,
|
||||||
goto out_err;
|
goto out_err;
|
||||||
|
|
||||||
ext4_debug("using block group %u(%d)\n", ac->ac_b_ex.fe_group,
|
ext4_debug("using block group %u(%d)\n", ac->ac_b_ex.fe_group,
|
||||||
ext4_free_blks_count(sb, gdp));
|
ext4_free_group_clusters(sb, gdp));
|
||||||
|
|
||||||
err = ext4_journal_get_write_access(handle, gdp_bh);
|
err = ext4_journal_get_write_access(handle, gdp_bh);
|
||||||
if (err)
|
if (err)
|
||||||
|
@ -2839,12 +2839,12 @@ ext4_mb_mark_diskspace_used(struct ext4_allocation_context *ac,
|
||||||
ac->ac_b_ex.fe_len);
|
ac->ac_b_ex.fe_len);
|
||||||
if (gdp->bg_flags & cpu_to_le16(EXT4_BG_BLOCK_UNINIT)) {
|
if (gdp->bg_flags & cpu_to_le16(EXT4_BG_BLOCK_UNINIT)) {
|
||||||
gdp->bg_flags &= cpu_to_le16(~EXT4_BG_BLOCK_UNINIT);
|
gdp->bg_flags &= cpu_to_le16(~EXT4_BG_BLOCK_UNINIT);
|
||||||
ext4_free_blks_set(sb, gdp,
|
ext4_free_group_clusters_set(sb, gdp,
|
||||||
ext4_free_blocks_after_init(sb,
|
ext4_free_blocks_after_init(sb,
|
||||||
ac->ac_b_ex.fe_group, gdp));
|
ac->ac_b_ex.fe_group, gdp));
|
||||||
}
|
}
|
||||||
len = ext4_free_blks_count(sb, gdp) - ac->ac_b_ex.fe_len;
|
len = ext4_free_group_clusters(sb, gdp) - ac->ac_b_ex.fe_len;
|
||||||
ext4_free_blks_set(sb, gdp, len);
|
ext4_free_group_clusters_set(sb, gdp, len);
|
||||||
gdp->bg_checksum = ext4_group_desc_csum(sbi, ac->ac_b_ex.fe_group, gdp);
|
gdp->bg_checksum = ext4_group_desc_csum(sbi, ac->ac_b_ex.fe_group, gdp);
|
||||||
|
|
||||||
ext4_unlock_group(sb, ac->ac_b_ex.fe_group);
|
ext4_unlock_group(sb, ac->ac_b_ex.fe_group);
|
||||||
|
@ -4702,8 +4702,8 @@ do_more:
|
||||||
mb_free_blocks(inode, &e4b, bit, count_clusters);
|
mb_free_blocks(inode, &e4b, bit, count_clusters);
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = ext4_free_blks_count(sb, gdp) + count_clusters;
|
ret = ext4_free_group_clusters(sb, gdp) + count_clusters;
|
||||||
ext4_free_blks_set(sb, gdp, ret);
|
ext4_free_group_clusters_set(sb, gdp, ret);
|
||||||
gdp->bg_checksum = ext4_group_desc_csum(sbi, block_group, gdp);
|
gdp->bg_checksum = ext4_group_desc_csum(sbi, block_group, gdp);
|
||||||
ext4_unlock_group(sb, block_group);
|
ext4_unlock_group(sb, block_group);
|
||||||
percpu_counter_add(&sbi->s_freeclusters_counter, count_clusters);
|
percpu_counter_add(&sbi->s_freeclusters_counter, count_clusters);
|
||||||
|
@ -4846,8 +4846,8 @@ int ext4_group_add_blocks(handle_t *handle, struct super_block *sb,
|
||||||
ext4_lock_group(sb, block_group);
|
ext4_lock_group(sb, block_group);
|
||||||
mb_clear_bits(bitmap_bh->b_data, bit, count);
|
mb_clear_bits(bitmap_bh->b_data, bit, count);
|
||||||
mb_free_blocks(NULL, &e4b, bit, count);
|
mb_free_blocks(NULL, &e4b, bit, count);
|
||||||
blk_free_count = blocks_freed + ext4_free_blks_count(sb, desc);
|
blk_free_count = blocks_freed + ext4_free_group_clusters(sb, desc);
|
||||||
ext4_free_blks_set(sb, desc, blk_free_count);
|
ext4_free_group_clusters_set(sb, desc, blk_free_count);
|
||||||
desc->bg_checksum = ext4_group_desc_csum(sbi, block_group, desc);
|
desc->bg_checksum = ext4_group_desc_csum(sbi, block_group, desc);
|
||||||
ext4_unlock_group(sb, block_group);
|
ext4_unlock_group(sb, block_group);
|
||||||
percpu_counter_add(&sbi->s_freeclusters_counter,
|
percpu_counter_add(&sbi->s_freeclusters_counter,
|
||||||
|
|
|
@ -875,7 +875,7 @@ int ext4_group_add(struct super_block *sb, struct ext4_new_group_data *input)
|
||||||
ext4_block_bitmap_set(sb, gdp, input->block_bitmap); /* LV FIXME */
|
ext4_block_bitmap_set(sb, gdp, input->block_bitmap); /* LV FIXME */
|
||||||
ext4_inode_bitmap_set(sb, gdp, input->inode_bitmap); /* LV FIXME */
|
ext4_inode_bitmap_set(sb, gdp, input->inode_bitmap); /* LV FIXME */
|
||||||
ext4_inode_table_set(sb, gdp, input->inode_table); /* LV FIXME */
|
ext4_inode_table_set(sb, gdp, input->inode_table); /* LV FIXME */
|
||||||
ext4_free_blks_set(sb, gdp, input->free_blocks_count);
|
ext4_free_group_clusters_set(sb, gdp, input->free_blocks_count);
|
||||||
ext4_free_inodes_set(sb, gdp, EXT4_INODES_PER_GROUP(sb));
|
ext4_free_inodes_set(sb, gdp, EXT4_INODES_PER_GROUP(sb));
|
||||||
gdp->bg_flags = cpu_to_le16(EXT4_BG_INODE_ZEROED);
|
gdp->bg_flags = cpu_to_le16(EXT4_BG_INODE_ZEROED);
|
||||||
gdp->bg_checksum = ext4_group_desc_csum(sbi, input->group, gdp);
|
gdp->bg_checksum = ext4_group_desc_csum(sbi, input->group, gdp);
|
||||||
|
|
|
@ -163,7 +163,7 @@ ext4_fsblk_t ext4_inode_table(struct super_block *sb,
|
||||||
(ext4_fsblk_t)le32_to_cpu(bg->bg_inode_table_hi) << 32 : 0);
|
(ext4_fsblk_t)le32_to_cpu(bg->bg_inode_table_hi) << 32 : 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
__u32 ext4_free_blks_count(struct super_block *sb,
|
__u32 ext4_free_group_clusters(struct super_block *sb,
|
||||||
struct ext4_group_desc *bg)
|
struct ext4_group_desc *bg)
|
||||||
{
|
{
|
||||||
return le16_to_cpu(bg->bg_free_blocks_count_lo) |
|
return le16_to_cpu(bg->bg_free_blocks_count_lo) |
|
||||||
|
@ -219,7 +219,7 @@ void ext4_inode_table_set(struct super_block *sb,
|
||||||
bg->bg_inode_table_hi = cpu_to_le32(blk >> 32);
|
bg->bg_inode_table_hi = cpu_to_le32(blk >> 32);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ext4_free_blks_set(struct super_block *sb,
|
void ext4_free_group_clusters_set(struct super_block *sb,
|
||||||
struct ext4_group_desc *bg, __u32 count)
|
struct ext4_group_desc *bg, __u32 count)
|
||||||
{
|
{
|
||||||
bg->bg_free_blocks_count_lo = cpu_to_le16((__u16)count);
|
bg->bg_free_blocks_count_lo = cpu_to_le16((__u16)count);
|
||||||
|
@ -2034,7 +2034,7 @@ static int ext4_fill_flex_info(struct super_block *sb)
|
||||||
flex_group = ext4_flex_group(sbi, i);
|
flex_group = ext4_flex_group(sbi, i);
|
||||||
atomic_add(ext4_free_inodes_count(sb, gdp),
|
atomic_add(ext4_free_inodes_count(sb, gdp),
|
||||||
&sbi->s_flex_groups[flex_group].free_inodes);
|
&sbi->s_flex_groups[flex_group].free_inodes);
|
||||||
atomic_add(ext4_free_blks_count(sb, gdp),
|
atomic_add(ext4_free_group_clusters(sb, gdp),
|
||||||
&sbi->s_flex_groups[flex_group].free_clusters);
|
&sbi->s_flex_groups[flex_group].free_clusters);
|
||||||
atomic_add(ext4_used_dirs_count(sb, gdp),
|
atomic_add(ext4_used_dirs_count(sb, gdp),
|
||||||
&sbi->s_flex_groups[flex_group].used_dirs);
|
&sbi->s_flex_groups[flex_group].used_dirs);
|
||||||
|
|
Loading…
Reference in New Issue