]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
ext4: make 'abort' mount option handling standard
authorJan Kara <jack@suse.cz>
Fri, 16 Jun 2023 16:50:50 +0000 (18:50 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 27 Jun 2025 10:05:37 +0000 (11:05 +0100)
commit 22b8d707b07e6e06f50fe1d9ca8756e1f894eb0d upstream.

'abort' mount option is the only mount option that has special handling
and sets a bit in sbi->s_mount_flags. There is not strong reason for
that so just simplify the code and make 'abort' set a bit in
sbi->s_mount_opt2 as any other mount option. This simplifies the code
and will allow us to drop EXT4_MF_FS_ABORTED completely in the following
patch.

Signed-off-by: Jan Kara <jack@suse.cz>
Link: https://lore.kernel.org/r/20230616165109.21695-4-jack@suse.cz
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
Stable-dep-of: 76486b104168 ("ext4: avoid remount errors with 'abort' mount option")
Signed-off-by: Amir Goldstein <amir73il@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
fs/ext4/ext4.h
fs/ext4/super.c

index bdf5ff29489824934fb05b0849bba2f015e03fbd..ed477af15b6b48d14011cad320344c46a10be844 100644 (file)
@@ -1255,6 +1255,7 @@ struct ext4_inode_info {
 #define EXT4_MOUNT2_MB_OPTIMIZE_SCAN   0x00000080 /* Optimize group
                                                    * scanning in mballoc
                                                    */
+#define EXT4_MOUNT2_ABORT              0x00000100 /* Abort filesystem */
 
 #define clear_opt(sb, opt)             EXT4_SB(sb)->s_mount_opt &= \
                                                ~EXT4_MOUNT_##opt
index 01fad455425543dc37ecf2518a86715f5a97f137..7ce25cdf933424745df802c3e3cf243879985478 100644 (file)
@@ -2023,6 +2023,7 @@ static const struct mount_opts {
         MOPT_SET | MOPT_2 | MOPT_EXT4_ONLY},
        {Opt_fc_debug_max_replay, 0, MOPT_GTE0},
 #endif
+       {Opt_abort, EXT4_MOUNT2_ABORT, MOPT_SET | MOPT_2},
        {Opt_err, 0, 0}
 };
 
@@ -2143,9 +2144,6 @@ static int handle_mount_opt(struct super_block *sb, char *opt, int token,
        case Opt_removed:
                ext4_msg(sb, KERN_WARNING, "Ignoring removed %s option", opt);
                return 1;
-       case Opt_abort:
-               ext4_set_mount_flag(sb, EXT4_MF_FS_ABORTED);
-               return 1;
        case Opt_i_version:
                sb->s_flags |= SB_I_VERSION;
                return 1;
@@ -5851,7 +5849,7 @@ static int ext4_remount(struct super_block *sb, int *flags, char *data)
                goto restore_opts;
        }
 
-       if (ext4_test_mount_flag(sb, EXT4_MF_FS_ABORTED))
+       if (test_opt2(sb, ABORT))
                ext4_abort(sb, ESHUTDOWN, "Abort forced by user");
 
        sb->s_flags = (sb->s_flags & ~SB_POSIXACL) |