From a40e197e73e12d580aeaac2a93996ec6ec197073 Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Wed, 7 Jun 2023 21:41:49 +0200 Subject: [PATCH] 6.1-stable patches added patches: ext4-enable-the-lazy-init-thread-when-remounting-read-write.patch --- ...it-thread-when-remounting-read-write.patch | 71 +++++++++++++++++++ queue-6.1/series | 1 + 2 files changed, 72 insertions(+) create mode 100644 queue-6.1/ext4-enable-the-lazy-init-thread-when-remounting-read-write.patch diff --git a/queue-6.1/ext4-enable-the-lazy-init-thread-when-remounting-read-write.patch b/queue-6.1/ext4-enable-the-lazy-init-thread-when-remounting-read-write.patch new file mode 100644 index 00000000000..0b2465f971c --- /dev/null +++ b/queue-6.1/ext4-enable-the-lazy-init-thread-when-remounting-read-write.patch @@ -0,0 +1,71 @@ +From eb1f822c76beeaa76ab8b6737ab9dc9f9798408c Mon Sep 17 00:00:00 2001 +From: Theodore Ts'o +Date: Fri, 26 May 2023 23:57:29 -0400 +Subject: ext4: enable the lazy init thread when remounting read/write + +From: Theodore Ts'o + +commit eb1f822c76beeaa76ab8b6737ab9dc9f9798408c upstream. + +In commit a44be64bbecb ("ext4: don't clear SB_RDONLY when remounting +r/w until quota is re-enabled") we defer clearing tyhe SB_RDONLY flag +in struct super. However, we didn't defer when we checked sb_rdonly() +to determine the lazy itable init thread should be enabled, with the +next result that the lazy inode table initialization would not be +properly started. This can cause generic/231 to fail in ext4's +nojournal mode. + +Fix this by moving when we decide to start or stop the lazy itable +init thread to after we clear the SB_RDONLY flag when we are +remounting the file system read/write. + +Fixes a44be64bbecb ("ext4: don't clear SB_RDONLY when remounting r/w until...") + +Signed-off-by: Theodore Ts'o +Link: https://lore.kernel.org/r/20230527035729.1001605-1-tytso@mit.edu +Signed-off-by: Theodore Ts'o +Signed-off-by: Greg Kroah-Hartman +--- + fs/ext4/super.c | 24 ++++++++++++------------ + 1 file changed, 12 insertions(+), 12 deletions(-) + +--- a/fs/ext4/super.c ++++ b/fs/ext4/super.c +@@ -6542,18 +6542,6 @@ static int __ext4_remount(struct fs_cont + } + + /* +- * Reinitialize lazy itable initialization thread based on +- * current settings +- */ +- if (sb_rdonly(sb) || !test_opt(sb, INIT_INODE_TABLE)) +- ext4_unregister_li_request(sb); +- else { +- ext4_group_t first_not_zeroed; +- first_not_zeroed = ext4_has_uninit_itable(sb); +- ext4_register_li_request(sb, first_not_zeroed); +- } +- +- /* + * Handle creation of system zone data early because it can fail. + * Releasing of existing data is done when we are sure remount will + * succeed. +@@ -6590,6 +6578,18 @@ static int __ext4_remount(struct fs_cont + if (enable_rw) + sb->s_flags &= ~SB_RDONLY; + ++ /* ++ * Reinitialize lazy itable initialization thread based on ++ * current settings ++ */ ++ if (sb_rdonly(sb) || !test_opt(sb, INIT_INODE_TABLE)) ++ ext4_unregister_li_request(sb); ++ else { ++ ext4_group_t first_not_zeroed; ++ first_not_zeroed = ext4_has_uninit_itable(sb); ++ ext4_register_li_request(sb, first_not_zeroed); ++ } ++ + if (!ext4_has_feature_mmp(sb) || sb_rdonly(sb)) + ext4_stop_mmpd(sbi); + diff --git a/queue-6.1/series b/queue-6.1/series index 9ec46abd038..e1e960db4c1 100644 --- a/queue-6.1/series +++ b/queue-6.1/series @@ -222,3 +222,4 @@ arm64-efi-use-smbios-processor-version-to-key-off-ampere-quirk.patch selftests-mptcp-diag-skip-if-mptcp-is-not-supported.patch selftests-mptcp-simult-flows-skip-if-mptcp-is-not-supported.patch selftests-mptcp-join-avoid-using-cmp-bytes.patch +ext4-enable-the-lazy-init-thread-when-remounting-read-write.patch -- 2.47.3