diff options
author | Jason Yan <yanaijie@huawei.com> | 2023-03-23 15:05:15 +0100 |
---|---|---|
committer | Theodore Ts'o <tytso@mit.edu> | 2023-04-15 05:08:03 +0200 |
commit | 269e9226c29fbfe7f66a324d6d32d4a53bcffbbe (patch) | |
tree | 327ea9c35ac8045f9a159735183172c458f6b85c /fs/ext4 | |
parent | ext4: rename two functions with 'check' (diff) | |
download | linux-269e9226c29fbfe7f66a324d6d32d4a53bcffbbe.tar.xz linux-269e9226c29fbfe7f66a324d6d32d4a53bcffbbe.zip |
ext4: move s_reserved_gdt_blocks and addressable checking into ext4_check_geometry()
These two checkings are more suitable to be put into
ext4_check_geometry() rather than spreading outside.
Signed-off-by: Jason Yan <yanaijie@huawei.com>
Link: https://lore.kernel.org/r/20230323140517.1070239-7-yanaijie@huawei.com
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
Diffstat (limited to 'fs/ext4')
-rw-r--r-- | fs/ext4/super.c | 38 |
1 files changed, 19 insertions, 19 deletions
diff --git a/fs/ext4/super.c b/fs/ext4/super.c index 53e2945236b0..6e069f82934c 100644 --- a/fs/ext4/super.c +++ b/fs/ext4/super.c @@ -4718,6 +4718,25 @@ static int ext4_check_geometry(struct super_block *sb, { struct ext4_sb_info *sbi = EXT4_SB(sb); __u64 blocks_count; + int err; + + if (le16_to_cpu(sbi->s_es->s_reserved_gdt_blocks) > (sb->s_blocksize / 4)) { + ext4_msg(sb, KERN_ERR, + "Number of reserved GDT blocks insanely large: %d", + le16_to_cpu(sbi->s_es->s_reserved_gdt_blocks)); + return -EINVAL; + } + /* + * Test whether we have more sectors than will fit in sector_t, + * and whether the max offset is addressable by the page cache. + */ + err = generic_check_addressable(sb->s_blocksize_bits, + ext4_blocks_count(es)); + if (err) { + ext4_msg(sb, KERN_ERR, "filesystem" + " too large to mount safely on this system"); + return err; + } /* check blocks count against device size */ blocks_count = sb_bdev_nr_blocks(sb); @@ -5174,13 +5193,6 @@ static int __ext4_fill_super(struct fs_context *fc, struct super_block *sb) if (ext4_check_feature_compatibility(sb, es, silent)) goto failed_mount; - if (le16_to_cpu(sbi->s_es->s_reserved_gdt_blocks) > (sb->s_blocksize / 4)) { - ext4_msg(sb, KERN_ERR, - "Number of reserved GDT blocks insanely large: %d", - le16_to_cpu(sbi->s_es->s_reserved_gdt_blocks)); - goto failed_mount; - } - if (sbi->s_daxdev) { if (sb->s_blocksize == PAGE_SIZE) set_bit(EXT4_FLAGS_BDEV_IS_DAX, &sbi->s_ext4_flags); @@ -5252,18 +5264,6 @@ static int __ext4_fill_super(struct fs_context *fc, struct super_block *sb) if (ext4_handle_clustersize(sb)) goto failed_mount; - /* - * Test whether we have more sectors than will fit in sector_t, - * and whether the max offset is addressable by the page cache. - */ - err = generic_check_addressable(sb->s_blocksize_bits, - ext4_blocks_count(es)); - if (err) { - ext4_msg(sb, KERN_ERR, "filesystem" - " too large to mount safely on this system"); - goto failed_mount; - } - if (ext4_check_geometry(sb, es)) goto failed_mount; |