ext4: Use high 16 bits of the block group descriptor's free counts fields
Rename the lower bits with suffix _lo and add helper to access the values. Also rename bg_itable_unused_hi to bg_pad as in e2fsprogs. Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com> Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
This commit is contained in:
committed by
Theodore Ts'o
parent
e8134b27e3
commit
560671a0d3
@@ -93,6 +93,38 @@ ext4_fsblk_t ext4_inode_table(struct super_block *sb,
|
||||
(ext4_fsblk_t)le32_to_cpu(bg->bg_inode_table_hi) << 32 : 0);
|
||||
}
|
||||
|
||||
__u32 ext4_free_blks_count(struct super_block *sb,
|
||||
struct ext4_group_desc *bg)
|
||||
{
|
||||
return le16_to_cpu(bg->bg_free_blocks_count_lo) |
|
||||
(EXT4_DESC_SIZE(sb) >= EXT4_MIN_DESC_SIZE_64BIT ?
|
||||
(__u32)le16_to_cpu(bg->bg_free_blocks_count_hi) << 16 : 0);
|
||||
}
|
||||
|
||||
__u32 ext4_free_inodes_count(struct super_block *sb,
|
||||
struct ext4_group_desc *bg)
|
||||
{
|
||||
return le16_to_cpu(bg->bg_free_inodes_count_lo) |
|
||||
(EXT4_DESC_SIZE(sb) >= EXT4_MIN_DESC_SIZE_64BIT ?
|
||||
(__u32)le16_to_cpu(bg->bg_free_inodes_count_hi) << 16 : 0);
|
||||
}
|
||||
|
||||
__u32 ext4_used_dirs_count(struct super_block *sb,
|
||||
struct ext4_group_desc *bg)
|
||||
{
|
||||
return le16_to_cpu(bg->bg_used_dirs_count_lo) |
|
||||
(EXT4_DESC_SIZE(sb) >= EXT4_MIN_DESC_SIZE_64BIT ?
|
||||
(__u32)le16_to_cpu(bg->bg_used_dirs_count_hi) << 16 : 0);
|
||||
}
|
||||
|
||||
__u32 ext4_itable_unused_count(struct super_block *sb,
|
||||
struct ext4_group_desc *bg)
|
||||
{
|
||||
return le16_to_cpu(bg->bg_itable_unused_lo) |
|
||||
(EXT4_DESC_SIZE(sb) >= EXT4_MIN_DESC_SIZE_64BIT ?
|
||||
(__u32)le16_to_cpu(bg->bg_itable_unused_hi) << 16 : 0);
|
||||
}
|
||||
|
||||
void ext4_block_bitmap_set(struct super_block *sb,
|
||||
struct ext4_group_desc *bg, ext4_fsblk_t blk)
|
||||
{
|
||||
@@ -117,6 +149,38 @@ void ext4_inode_table_set(struct super_block *sb,
|
||||
bg->bg_inode_table_hi = cpu_to_le32(blk >> 32);
|
||||
}
|
||||
|
||||
void ext4_free_blks_set(struct super_block *sb,
|
||||
struct ext4_group_desc *bg, __u32 count)
|
||||
{
|
||||
bg->bg_free_blocks_count_lo = cpu_to_le16((__u16)count);
|
||||
if (EXT4_DESC_SIZE(sb) >= EXT4_MIN_DESC_SIZE_64BIT)
|
||||
bg->bg_free_blocks_count_hi = cpu_to_le16(count >> 16);
|
||||
}
|
||||
|
||||
void ext4_free_inodes_set(struct super_block *sb,
|
||||
struct ext4_group_desc *bg, __u32 count)
|
||||
{
|
||||
bg->bg_free_inodes_count_lo = cpu_to_le16((__u16)count);
|
||||
if (EXT4_DESC_SIZE(sb) >= EXT4_MIN_DESC_SIZE_64BIT)
|
||||
bg->bg_free_inodes_count_hi = cpu_to_le16(count >> 16);
|
||||
}
|
||||
|
||||
void ext4_used_dirs_set(struct super_block *sb,
|
||||
struct ext4_group_desc *bg, __u32 count)
|
||||
{
|
||||
bg->bg_used_dirs_count_lo = cpu_to_le16((__u16)count);
|
||||
if (EXT4_DESC_SIZE(sb) >= EXT4_MIN_DESC_SIZE_64BIT)
|
||||
bg->bg_used_dirs_count_hi = cpu_to_le16(count >> 16);
|
||||
}
|
||||
|
||||
void ext4_itable_unused_set(struct super_block *sb,
|
||||
struct ext4_group_desc *bg, __u32 count)
|
||||
{
|
||||
bg->bg_itable_unused_lo = cpu_to_le16((__u16)count);
|
||||
if (EXT4_DESC_SIZE(sb) >= EXT4_MIN_DESC_SIZE_64BIT)
|
||||
bg->bg_itable_unused_hi = cpu_to_le16(count >> 16);
|
||||
}
|
||||
|
||||
/*
|
||||
* Wrappers for jbd2_journal_start/end.
|
||||
*
|
||||
@@ -1561,9 +1625,9 @@ static int ext4_fill_flex_info(struct super_block *sb)
|
||||
|
||||
flex_group = ext4_flex_group(sbi, i);
|
||||
sbi->s_flex_groups[flex_group].free_inodes +=
|
||||
le16_to_cpu(gdp->bg_free_inodes_count);
|
||||
ext4_free_inodes_count(sb, gdp);
|
||||
sbi->s_flex_groups[flex_group].free_blocks +=
|
||||
le16_to_cpu(gdp->bg_free_blocks_count);
|
||||
ext4_free_blks_count(sb, gdp);
|
||||
}
|
||||
|
||||
return 1;
|
||||
|
Reference in New Issue
Block a user