]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
ext4: factor out ext4_hash_info_init()
authorJason Yan <yanaijie@huawei.com>
Thu, 8 Jan 2026 15:04:08 +0000 (12:04 -0300)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sun, 11 Jan 2026 14:19:26 +0000 (15:19 +0100)
commit db9345d9e6f075e1ec26afadf744078ead935fec upstream.

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>
Stable-dep-of: a2187431c395 ("ext4: fix error message when rejecting the default hash")
Signed-off-by: Thadeu Lima de Souza Cascardo <cascardo@igalia.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
fs/ext4/super.c

index 75a3a02a77fc7cbd3ac5db461730dde707162a19..91d9873df8d45facab3ac1b162985462e3ce9868 100644 (file)
@@ -5043,6 +5043,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;
@@ -5195,26 +5224,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;