linux-ext4.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 5.15 0/2] fix LTP regression in fanotify22
@ 2025-06-17 21:09 Amir Goldstein
  2025-06-17 21:09 ` [PATCH 5.15 1/2] ext4: make 'abort' mount option handling standard Amir Goldstein
                   ` (3 more replies)
  0 siblings, 4 replies; 5+ messages in thread
From: Amir Goldstein @ 2025-06-17 21:09 UTC (permalink / raw)
  To: Jan Kara
  Cc: Theodore Ts'o, Sasha Levin, Greg Kroah-Hartman, linux-ext4,
	ltp, stable

Jan,

I noticed that fanotify22, the FAN_FS_ERROR test has regressed in the
5.15.y stable tree.

This is because commit d3476f3dad4a ("ext4: don't set SB_RDONLY after
filesystem errors") was backported to 5.15.y and the later Fixes
commit could not be cleanly applied to 5.15.y over the new mount api
re-factoring.

I am not sure it is critical to fix this regression, because it is
mostly a regression in a test feature, but I think the backport is
pretty simple, although I could be missing something.

Please ACK if you agree that this backport should be applied to 5.15.y.

Thanks,
Amir.

Amir Goldstein (2):
  ext4: make 'abort' mount option handling standard
  ext4: avoid remount errors with 'abort' mount option

 fs/ext4/ext4.h  |  1 +
 fs/ext4/super.c | 15 +++++++++------
 2 files changed, 10 insertions(+), 6 deletions(-)

-- 
2.47.1


^ permalink raw reply	[flat|nested] 5+ messages in thread

* [PATCH 5.15 1/2] ext4: make 'abort' mount option handling standard
  2025-06-17 21:09 [PATCH 5.15 0/2] fix LTP regression in fanotify22 Amir Goldstein
@ 2025-06-17 21:09 ` Amir Goldstein
  2025-06-17 21:09 ` [PATCH 5.15 2/2] ext4: avoid remount errors with 'abort' mount option Amir Goldstein
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 5+ messages in thread
From: Amir Goldstein @ 2025-06-17 21:09 UTC (permalink / raw)
  To: Jan Kara
  Cc: Theodore Ts'o, Sasha Levin, Greg Kroah-Hartman, linux-ext4,
	ltp, stable

[ Upstream commit 22b8d707b07e6e06f50fe1d9ca8756e1f894eb0d ]

[amir: partial backport to 5.15.y without removing s_mount_flags]

'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>
---
 fs/ext4/ext4.h  | 1 +
 fs/ext4/super.c | 6 ++----
 2 files changed, 3 insertions(+), 4 deletions(-)

diff --git a/fs/ext4/ext4.h b/fs/ext4/ext4.h
index e1a5ec7362ad..2ee8c3dc25f5 100644
--- a/fs/ext4/ext4.h
+++ b/fs/ext4/ext4.h
@@ -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
diff --git a/fs/ext4/super.c b/fs/ext4/super.c
index 01fad4554255..7ce25cdf9334 100644
--- a/fs/ext4/super.c
+++ b/fs/ext4/super.c
@@ -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) |
-- 
2.47.1


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [PATCH 5.15 2/2] ext4: avoid remount errors with 'abort' mount option
  2025-06-17 21:09 [PATCH 5.15 0/2] fix LTP regression in fanotify22 Amir Goldstein
  2025-06-17 21:09 ` [PATCH 5.15 1/2] ext4: make 'abort' mount option handling standard Amir Goldstein
@ 2025-06-17 21:09 ` Amir Goldstein
  2025-06-17 21:16 ` [PATCH 5.15 0/2] fix LTP regression in fanotify22 Amir Goldstein
  2025-06-18 15:30 ` Jan Kara
  3 siblings, 0 replies; 5+ messages in thread
From: Amir Goldstein @ 2025-06-17 21:09 UTC (permalink / raw)
  To: Jan Kara
  Cc: Theodore Ts'o, Sasha Levin, Greg Kroah-Hartman, linux-ext4,
	ltp, stable, Jan Stancek

[ Upstream commit 76486b104168ae59703190566e372badf433314b ]

[amir: backport to 5.15.y pre new mount api]

When we remount filesystem with 'abort' mount option while changing
other mount options as well (as is LTP test doing), we can return error
from the system call after commit d3476f3dad4a ("ext4: don't set
SB_RDONLY after filesystem errors") because the application of mount
option changes detects shutdown filesystem and refuses to do anything.
The behavior of application of other mount options in presence of
'abort' mount option is currently rather arbitary as some mount option
changes are handled before 'abort' and some after it.

Move aborting of the filesystem to the end of remount handling so all
requested changes are properly applied before the filesystem is shutdown
to have a reasonably consistent behavior.

Fixes: d3476f3dad4a ("ext4: don't set SB_RDONLY after filesystem errors")
Reported-by: Jan Stancek <jstancek@redhat.com>
Link: https://lore.kernel.org/all/Zvp6L+oFnfASaoHl@t14s
Signed-off-by: Jan Kara <jack@suse.cz>
Tested-by: Jan Stancek <jstancek@redhat.com>
Link: https://patch.msgid.link/20241004221556.19222-1-jack@suse.cz
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
Signed-off-by: Amir Goldstein <amir73il@gmail.com>
---
 fs/ext4/super.c | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/fs/ext4/super.c b/fs/ext4/super.c
index 7ce25cdf9334..4d270874d04e 100644
--- a/fs/ext4/super.c
+++ b/fs/ext4/super.c
@@ -5849,9 +5849,6 @@ static int ext4_remount(struct super_block *sb, int *flags, char *data)
 		goto restore_opts;
 	}
 
-	if (test_opt2(sb, ABORT))
-		ext4_abort(sb, ESHUTDOWN, "Abort forced by user");
-
 	sb->s_flags = (sb->s_flags & ~SB_POSIXACL) |
 		(test_opt(sb, POSIX_ACL) ? SB_POSIXACL : 0);
 
@@ -6027,6 +6024,14 @@ static int ext4_remount(struct super_block *sb, int *flags, char *data)
 	 */
 	*flags = (*flags & ~vfs_flags) | (sb->s_flags & vfs_flags);
 
+	/*
+	 * Handle aborting the filesystem as the last thing during remount to
+	 * avoid obsure errors during remount when some option changes fail to
+	 * apply due to shutdown filesystem.
+	 */
+	if (test_opt2(sb, ABORT))
+		ext4_abort(sb, ESHUTDOWN, "Abort forced by user");
+
 	ext4_msg(sb, KERN_INFO, "re-mounted. Opts: %s. Quota mode: %s.",
 		 orig_data, ext4_quota_mode(sb));
 	kfree(orig_data);
-- 
2.47.1


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [PATCH 5.15 0/2] fix LTP regression in fanotify22
  2025-06-17 21:09 [PATCH 5.15 0/2] fix LTP regression in fanotify22 Amir Goldstein
  2025-06-17 21:09 ` [PATCH 5.15 1/2] ext4: make 'abort' mount option handling standard Amir Goldstein
  2025-06-17 21:09 ` [PATCH 5.15 2/2] ext4: avoid remount errors with 'abort' mount option Amir Goldstein
@ 2025-06-17 21:16 ` Amir Goldstein
  2025-06-18 15:30 ` Jan Kara
  3 siblings, 0 replies; 5+ messages in thread
From: Amir Goldstein @ 2025-06-17 21:16 UTC (permalink / raw)
  To: Jan Kara
  Cc: Theodore Ts'o, Sasha Levin, Greg Kroah-Hartman, linux-ext4,
	stable, LTP List, Jan Stancek

[CC to the correct LTP list address]

On Tue, Jun 17, 2025 at 11:10 PM Amir Goldstein <amir73il@gmail.com> wrote:
>
> Jan,
>
> I noticed that fanotify22, the FAN_FS_ERROR test has regressed in the
> 5.15.y stable tree.
>
> This is because commit d3476f3dad4a ("ext4: don't set SB_RDONLY after
> filesystem errors") was backported to 5.15.y and the later Fixes
> commit could not be cleanly applied to 5.15.y over the new mount api
> re-factoring.
>
> I am not sure it is critical to fix this regression, because it is
> mostly a regression in a test feature, but I think the backport is
> pretty simple, although I could be missing something.
>
> Please ACK if you agree that this backport should be applied to 5.15.y.
>
> Thanks,
> Amir.
>
> Amir Goldstein (2):
>   ext4: make 'abort' mount option handling standard
>   ext4: avoid remount errors with 'abort' mount option
>
>  fs/ext4/ext4.h  |  1 +
>  fs/ext4/super.c | 15 +++++++++------
>  2 files changed, 10 insertions(+), 6 deletions(-)
>
> --
> 2.47.1
>

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH 5.15 0/2] fix LTP regression in fanotify22
  2025-06-17 21:09 [PATCH 5.15 0/2] fix LTP regression in fanotify22 Amir Goldstein
                   ` (2 preceding siblings ...)
  2025-06-17 21:16 ` [PATCH 5.15 0/2] fix LTP regression in fanotify22 Amir Goldstein
@ 2025-06-18 15:30 ` Jan Kara
  3 siblings, 0 replies; 5+ messages in thread
From: Jan Kara @ 2025-06-18 15:30 UTC (permalink / raw)
  To: Amir Goldstein
  Cc: Jan Kara, Theodore Ts'o, Sasha Levin, Greg Kroah-Hartman,
	linux-ext4, ltp, stable

Hi!

On Tue 17-06-25 23:09:54, Amir Goldstein wrote:
> I noticed that fanotify22, the FAN_FS_ERROR test has regressed in the
> 5.15.y stable tree.
> 
> This is because commit d3476f3dad4a ("ext4: don't set SB_RDONLY after
> filesystem errors") was backported to 5.15.y and the later Fixes
> commit could not be cleanly applied to 5.15.y over the new mount api
> re-factoring.
> 
> I am not sure it is critical to fix this regression, because it is
> mostly a regression in a test feature, but I think the backport is
> pretty simple, although I could be missing something.
> 
> Please ACK if you agree that this backport should be applied to 5.15.y.

Yes, I think these are fine to pull into 5.15 kernels...

								Honza

> 
> Thanks,
> Amir.
> 
> Amir Goldstein (2):
>   ext4: make 'abort' mount option handling standard
>   ext4: avoid remount errors with 'abort' mount option
> 
>  fs/ext4/ext4.h  |  1 +
>  fs/ext4/super.c | 15 +++++++++------
>  2 files changed, 10 insertions(+), 6 deletions(-)
> 
> -- 
> 2.47.1
> 
-- 
Jan Kara <jack@suse.com>
SUSE Labs, CR

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2025-06-18 15:30 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-06-17 21:09 [PATCH 5.15 0/2] fix LTP regression in fanotify22 Amir Goldstein
2025-06-17 21:09 ` [PATCH 5.15 1/2] ext4: make 'abort' mount option handling standard Amir Goldstein
2025-06-17 21:09 ` [PATCH 5.15 2/2] ext4: avoid remount errors with 'abort' mount option Amir Goldstein
2025-06-17 21:16 ` [PATCH 5.15 0/2] fix LTP regression in fanotify22 Amir Goldstein
2025-06-18 15:30 ` Jan Kara

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).