summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChengguang Xu <cgxu519@mykernel.net>2019-11-04 19:40:32 +0800
committerJan Kara <jack@suse.cz>2019-11-06 16:25:12 +0100
commiteb9e47fc230aafc3ac1e5eeae6d0d8d5e108bbae (patch)
treee7ff628531849c3402e3045576de90fa8a8ae7e1
parentdae82c7fd0926840c832151f3258ba751f73d348 (diff)
downloadlinux-eb9e47fc230aafc3ac1e5eeae6d0d8d5e108bbae.tar.gz
linux-eb9e47fc230aafc3ac1e5eeae6d0d8d5e108bbae.tar.bz2
linux-eb9e47fc230aafc3ac1e5eeae6d0d8d5e108bbae.zip
ext2: introduce new helper ext2_group_last_block_no()
Introduce new helper ext2_group_last_block_no() to calculate last block num for specific block group, we can replace open coded logic by calling this common helper. Link: https://lore.kernel.org/r/20191104114036.9893-1-cgxu519@mykernel.net Signed-off-by: Chengguang Xu <cgxu519@mykernel.net> Signed-off-by: Jan Kara <jack@suse.cz>
-rw-r--r--fs/ext2/ext2.h12
1 files changed, 12 insertions, 0 deletions
diff --git a/fs/ext2/ext2.h b/fs/ext2/ext2.h
index 10ab238de9a6..8178bd38a9d6 100644
--- a/fs/ext2/ext2.h
+++ b/fs/ext2/ext2.h
@@ -813,6 +813,18 @@ ext2_group_first_block_no(struct super_block *sb, unsigned long group_no)
le32_to_cpu(EXT2_SB(sb)->s_es->s_first_data_block);
}
+static inline ext2_fsblk_t
+ext2_group_last_block_no(struct super_block *sb, unsigned long group_no)
+{
+ struct ext2_sb_info *sbi = EXT2_SB(sb);
+
+ if (group_no == sbi->s_groups_count - 1)
+ return le32_to_cpu(sbi->s_es->s_blocks_count) - 1;
+ else
+ return ext2_group_first_block_no(sb, group_no) +
+ EXT2_BLOCKS_PER_GROUP(sb) - 1;
+}
+
#define ext2_set_bit __test_and_set_bit_le
#define ext2_clear_bit __test_and_clear_bit_le
#define ext2_test_bit test_bit_le