]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
6.3-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 7 Jun 2023 19:27:56 +0000 (21:27 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 7 Jun 2023 19:27:56 +0000 (21:27 +0200)
added patches:
ext4-enable-the-lazy-init-thread-when-remounting-read-write.patch

queue-6.3/ext4-enable-the-lazy-init-thread-when-remounting-read-write.patch [new file with mode: 0644]
queue-6.3/series

diff --git a/queue-6.3/ext4-enable-the-lazy-init-thread-when-remounting-read-write.patch b/queue-6.3/ext4-enable-the-lazy-init-thread-when-remounting-read-write.patch
new file mode 100644 (file)
index 0000000..429599d
--- /dev/null
@@ -0,0 +1,71 @@
+From eb1f822c76beeaa76ab8b6737ab9dc9f9798408c Mon Sep 17 00:00:00 2001
+From: Theodore Ts'o <tytso@mit.edu>
+Date: Fri, 26 May 2023 23:57:29 -0400
+Subject: ext4: enable the lazy init thread when remounting read/write
+
+From: Theodore Ts'o <tytso@mit.edu>
+
+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 <tytso@mit.edu>
+Link: https://lore.kernel.org/r/20230527035729.1001605-1-tytso@mit.edu
+Signed-off-by: Theodore Ts'o <tytso@mit.edu>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ fs/ext4/super.c |   24 ++++++++++++------------
+ 1 file changed, 12 insertions(+), 12 deletions(-)
+
+--- a/fs/ext4/super.c
++++ b/fs/ext4/super.c
+@@ -6555,18 +6555,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.
+@@ -6603,6 +6591,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);
index 1be078d051a1316f865f70f6b2f6ff54613d6fef..b169ef6ae76faa2b1abfd57834f03f9db94aa55f 100644 (file)
@@ -283,3 +283,4 @@ tpm-tpm_tis-request-threaded-interrupt-handler.patch
 iommu-amd-pgtbl_v2-fix-domain-max-address.patch
 xfs-verify-buffer-contents-when-we-skip-log-replay.patch
 riscv-vmlinux.lds.s-explicitly-handle-.got-section.patch
+ext4-enable-the-lazy-init-thread-when-remounting-read-write.patch