ext4: factor out ext4_hash_info_init()
authorJason Yan <yanaijie@huawei.com>
Thu, 23 Mar 2023 14:05:10 +0000 (22:05 +0800)
committerTheodore Ts'o <tytso@mit.edu>
Sat, 15 Apr 2023 03:08:02 +0000 (23:08 -0400)
Factor out ext4_hash_info_init() to simplify __ext4_fill_super(). No
functional change.

Signed-off-by: Jason Yan <yanaijie@huawei.com>
Link: https://lore.kernel.org/r/20230323140517.1070239-2-yanaijie@huawei.com
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
fs/ext4/super.c

index 690faf766d23a7503f22e4e81ebb8dca5078b3af..13c0345c53873a07b8c5935e43665243daec3ab4 100644 (file)
@@ -5024,6 +5024,35 @@ out:
        return ret;
 }
 
+static void ext4_hash_info_init(struct super_block *sb)
+{
+       struct ext4_sb_info *sbi = EXT4_SB(sb);
+       struct ext4_super_block *es = sbi->s_es;
+       unsigned int i;
+
+       for (i = 0; i < 4; i++)
+               sbi->s_hash_seed[i] = le32_to_cpu(es->s_hash_seed[i]);
+
+       sbi->s_def_hash_version = es->s_def_hash_version;
+       if (ext4_has_feature_dir_index(sb)) {
+               i = le32_to_cpu(es->s_flags);
+               if (i & EXT2_FLAGS_UNSIGNED_HASH)
+                       sbi->s_hash_unsigned = 3;
+               else if ((i & EXT2_FLAGS_SIGNED_HASH) == 0) {
+#ifdef __CHAR_UNSIGNED__
+                       if (!sb_rdonly(sb))
+                               es->s_flags |=
+                                       cpu_to_le32(EXT2_FLAGS_UNSIGNED_HASH);
+                       sbi->s_hash_unsigned = 3;
+#else
+                       if (!sb_rdonly(sb))
+                               es->s_flags |=
+                                       cpu_to_le32(EXT2_FLAGS_SIGNED_HASH);
+#endif
+               }
+       }
+}
+
 static int __ext4_fill_super(struct fs_context *fc, struct super_block *sb)
 {
        struct ext4_super_block *es = NULL;
@@ -5179,26 +5208,7 @@ static int __ext4_fill_super(struct fs_context *fc, struct super_block *sb)
        sbi->s_addr_per_block_bits = ilog2(EXT4_ADDR_PER_BLOCK(sb));
        sbi->s_desc_per_block_bits = ilog2(EXT4_DESC_PER_BLOCK(sb));
 
-       for (i = 0; i < 4; i++)
-               sbi->s_hash_seed[i] = le32_to_cpu(es->s_hash_seed[i]);
-       sbi->s_def_hash_version = es->s_def_hash_version;
-       if (ext4_has_feature_dir_index(sb)) {
-               i = le32_to_cpu(es->s_flags);
-               if (i & EXT2_FLAGS_UNSIGNED_HASH)
-                       sbi->s_hash_unsigned = 3;
-               else if ((i & EXT2_FLAGS_SIGNED_HASH) == 0) {
-#ifdef __CHAR_UNSIGNED__
-                       if (!sb_rdonly(sb))
-                               es->s_flags |=
-                                       cpu_to_le32(EXT2_FLAGS_UNSIGNED_HASH);
-                       sbi->s_hash_unsigned = 3;
-#else
-                       if (!sb_rdonly(sb))
-                               es->s_flags |=
-                                       cpu_to_le32(EXT2_FLAGS_SIGNED_HASH);
-#endif
-               }
-       }
+       ext4_hash_info_init(sb);
 
        if (ext4_handle_clustersize(sb))
                goto failed_mount;