From: Jan Stancek <jstancek@redhat.com>
To: Jan Kara <jack@suse.cz>, ltp@lists.linux.it
Cc: Ted Tso <tytso@mit.edu>,
linux-ext4@vger.kernel.org,
Christian Brauner <brauner@kernel.org>,
linux-fsdevel@vger.kernel.org
Subject: Re: [PATCH] ext4: don't set SB_RDONLY after filesystem errors
Date: Mon, 30 Sep 2024 12:15:11 +0200 [thread overview]
Message-ID: <Zvp6L+oFnfASaoHl@t14s> (raw)
In-Reply-To: <20240805201241.27286-1-jack@suse.cz>
On Mon, Aug 05, 2024 at 10:12:41PM +0200, Jan Kara wrote:
>When the filesystem is mounted with errors=remount-ro, we were setting
>SB_RDONLY flag to stop all filesystem modifications. We knew this misses
>proper locking (sb->s_umount) and does not go through proper filesystem
>remount procedure but it has been the way this worked since early ext2
>days and it was good enough for catastrophic situation damage
>mitigation. Recently, syzbot has found a way (see link) to trigger
>warnings in filesystem freezing because the code got confused by
>SB_RDONLY changing under its hands. Since these days we set
>EXT4_FLAGS_SHUTDOWN on the superblock which is enough to stop all
>filesystem modifications, modifying SB_RDONLY shouldn't be needed. So
>stop doing that.
>
>Link: https://lore.kernel.org/all/000000000000b90a8e061e21d12f@google.com
>Reported-by: Christian Brauner <brauner@kernel.org>
>Signed-off-by: Jan Kara <jack@suse.cz>
>---
> fs/ext4/super.c | 9 +++++----
> 1 file changed, 5 insertions(+), 4 deletions(-)
>
>Note that this patch introduces fstests failure with generic/459 test because
>it assumes that either freezing succeeds or 'ro' is among mount options. But
>we fail the freeze with EFSCORRUPTED. This needs fixing in the test but at this
>point I'm not sure how exactly.
>
>diff --git a/fs/ext4/super.c b/fs/ext4/super.c
>index e72145c4ae5a..93c016b186c0 100644
>--- a/fs/ext4/super.c
>+++ b/fs/ext4/super.c
>@@ -735,11 +735,12 @@ static void ext4_handle_error(struct super_block *sb, bool force_ro, int error,
>
> ext4_msg(sb, KERN_CRIT, "Remounting filesystem read-only");
> /*
>- * Make sure updated value of ->s_mount_flags will be visible before
>- * ->s_flags update
>+ * EXT4_FLAGS_SHUTDOWN was set which stops all filesystem
>+ * modifications. We don't set SB_RDONLY because that requires
>+ * sb->s_umount semaphore and setting it without proper remount
>+ * procedure is confusing code such as freeze_super() leading to
>+ * deadlocks and other problems.
> */
>- smp_wmb();
>- sb->s_flags |= SB_RDONLY;
Hi,
shouldn't the SB_RDONLY still be set (in __ext4_remount()) for the case
when user triggers the abort with mount(.., "abort")? Because now we seem
to always hit the condition that returns EROFS to user-space.
I'm seeing LTP's fanotify22 failing for a about week (roughly since
commit de5cb0dcb74c) on:
fanotify22.c:59: TINFO: Mounting /dev/loop0 to /tmp/LTP_fanqgL299/test_mnt fstyp=ext4 flags=21
fanotify22.c:59: TBROK: mount(/dev/loop0, test_mnt, ext4, 33, 0x4211ed) failed: EROFS (30)
static void trigger_fs_abort(void)
{
SAFE_MOUNT(tst_device->dev, MOUNT_PATH, tst_device->fs_type,
MS_REMOUNT|MS_RDONLY, "abort");
}
Thanks,
Jan
WARNING: multiple messages have this Message-ID (diff)
From: Jan Stancek <jstancek@redhat.com>
To: Jan Kara <jack@suse.cz>, ltp@lists.linux.it
Cc: linux-fsdevel@vger.kernel.org,
Christian Brauner <brauner@kernel.org>,
linux-ext4@vger.kernel.org, Ted Tso <tytso@mit.edu>
Subject: Re: [LTP] [PATCH] ext4: don't set SB_RDONLY after filesystem errors
Date: Mon, 30 Sep 2024 12:15:11 +0200 [thread overview]
Message-ID: <Zvp6L+oFnfASaoHl@t14s> (raw)
In-Reply-To: <20240805201241.27286-1-jack@suse.cz>
On Mon, Aug 05, 2024 at 10:12:41PM +0200, Jan Kara wrote:
>When the filesystem is mounted with errors=remount-ro, we were setting
>SB_RDONLY flag to stop all filesystem modifications. We knew this misses
>proper locking (sb->s_umount) and does not go through proper filesystem
>remount procedure but it has been the way this worked since early ext2
>days and it was good enough for catastrophic situation damage
>mitigation. Recently, syzbot has found a way (see link) to trigger
>warnings in filesystem freezing because the code got confused by
>SB_RDONLY changing under its hands. Since these days we set
>EXT4_FLAGS_SHUTDOWN on the superblock which is enough to stop all
>filesystem modifications, modifying SB_RDONLY shouldn't be needed. So
>stop doing that.
>
>Link: https://lore.kernel.org/all/000000000000b90a8e061e21d12f@google.com
>Reported-by: Christian Brauner <brauner@kernel.org>
>Signed-off-by: Jan Kara <jack@suse.cz>
>---
> fs/ext4/super.c | 9 +++++----
> 1 file changed, 5 insertions(+), 4 deletions(-)
>
>Note that this patch introduces fstests failure with generic/459 test because
>it assumes that either freezing succeeds or 'ro' is among mount options. But
>we fail the freeze with EFSCORRUPTED. This needs fixing in the test but at this
>point I'm not sure how exactly.
>
>diff --git a/fs/ext4/super.c b/fs/ext4/super.c
>index e72145c4ae5a..93c016b186c0 100644
>--- a/fs/ext4/super.c
>+++ b/fs/ext4/super.c
>@@ -735,11 +735,12 @@ static void ext4_handle_error(struct super_block *sb, bool force_ro, int error,
>
> ext4_msg(sb, KERN_CRIT, "Remounting filesystem read-only");
> /*
>- * Make sure updated value of ->s_mount_flags will be visible before
>- * ->s_flags update
>+ * EXT4_FLAGS_SHUTDOWN was set which stops all filesystem
>+ * modifications. We don't set SB_RDONLY because that requires
>+ * sb->s_umount semaphore and setting it without proper remount
>+ * procedure is confusing code such as freeze_super() leading to
>+ * deadlocks and other problems.
> */
>- smp_wmb();
>- sb->s_flags |= SB_RDONLY;
Hi,
shouldn't the SB_RDONLY still be set (in __ext4_remount()) for the case
when user triggers the abort with mount(.., "abort")? Because now we seem
to always hit the condition that returns EROFS to user-space.
I'm seeing LTP's fanotify22 failing for a about week (roughly since
commit de5cb0dcb74c) on:
fanotify22.c:59: TINFO: Mounting /dev/loop0 to /tmp/LTP_fanqgL299/test_mnt fstyp=ext4 flags=21
fanotify22.c:59: TBROK: mount(/dev/loop0, test_mnt, ext4, 33, 0x4211ed) failed: EROFS (30)
static void trigger_fs_abort(void)
{
SAFE_MOUNT(tst_device->dev, MOUNT_PATH, tst_device->fs_type,
MS_REMOUNT|MS_RDONLY, "abort");
}
Thanks,
Jan
--
Mailing list info: https://lists.linux.it/listinfo/ltp
next prev parent reply other threads:[~2024-09-30 10:15 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-08-05 20:12 [PATCH] ext4: don't set SB_RDONLY after filesystem errors Jan Kara
2024-08-06 10:50 ` Christian Brauner
2024-08-08 16:16 ` Jan Kara
2024-08-27 12:47 ` Theodore Ts'o
2024-09-30 10:15 ` Jan Stancek [this message]
2024-09-30 10:15 ` [LTP] " Jan Stancek
2024-09-30 11:34 ` Jan Kara
2024-09-30 11:34 ` [LTP] " Jan Kara
2024-10-04 12:32 ` Amir Goldstein
2024-10-04 12:32 ` Amir Goldstein
2024-10-04 12:50 ` Jan Stancek
2024-10-04 12:50 ` Jan Stancek
2024-10-04 13:28 ` Amir Goldstein
2024-10-04 13:28 ` Amir Goldstein
2024-10-04 14:31 ` Jan Kara
2024-10-04 14:31 ` Jan Kara
2024-10-04 19:33 ` Gabriel Krisman Bertazi
2024-10-04 19:33 ` Gabriel Krisman Bertazi
2024-10-06 3:38 ` Theodore Ts'o
2024-10-06 3:38 ` Theodore Ts'o
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=Zvp6L+oFnfASaoHl@t14s \
--to=jstancek@redhat.com \
--cc=brauner@kernel.org \
--cc=jack@suse.cz \
--cc=linux-ext4@vger.kernel.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=ltp@lists.linux.it \
--cc=tytso@mit.edu \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.