From: Greg Kroah-Hartman Date: Wed, 7 Jun 2023 19:32:00 +0000 (+0200) Subject: 5.10-stable patches X-Git-Tag: v4.14.317~11 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=6a621739119754cec81d5a16ffeefcf61c078a40;p=thirdparty%2Fkernel%2Fstable-queue.git 5.10-stable patches added patches: ext4-enable-the-lazy-init-thread-when-remounting-read-write.patch --- diff --git a/queue-5.10/ext4-enable-the-lazy-init-thread-when-remounting-read-write.patch b/queue-5.10/ext4-enable-the-lazy-init-thread-when-remounting-read-write.patch new file mode 100644 index 00000000000..7cae6940af2 --- /dev/null +++ b/queue-5.10/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 +@@ -6006,18 +6006,6 @@ static int ext4_remount(struct super_blo + } + + /* +- * 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. +@@ -6054,6 +6042,18 @@ static int ext4_remount(struct super_blo + 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-5.10/series b/queue-5.10/series index d0978b40952..742556bb406 100644 --- a/queue-5.10/series +++ b/queue-5.10/series @@ -119,3 +119,4 @@ crypto-ccp-play-nice-with-vmalloc-d-memory-for-sev-command-structs.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-skip-if-mptcp-is-not-supported.patch +ext4-enable-the-lazy-init-thread-when-remounting-read-write.patch