diff mbox series

[bug#71210] gnu: grub: Ignore metadata-csum-seed feature of ext4.

Message ID a23729caaaee62e63a72e4031eccd09df68f8636.1716736558.git.lars@6xq.net
State New
Headers show
Series [bug#71210] gnu: grub: Ignore metadata-csum-seed feature of ext4. | expand

Commit Message

Lars-Dominik Braun May 26, 2024, 3:19 p.m. UTC
* gnu/packages/patches/grub-ignore-metadata-csum-seed.patch: New file.
* gnu/local.mk: Register it.
* gnu/packages/bootloaders.scm (grub): Use it.

Change-Id: I3bfed24b38ecf31b85ed4ac654399fca2d2e12f6
---

This patch fixes issue 70480. Validated using the root-unmount system test.

 gnu/local.mk                                  |  1 +
 gnu/packages/bootloaders.scm                  |  3 +-
 .../grub-ignore-metadata-csum-seed.patch      | 54 +++++++++++++++++++
 3 files changed, 57 insertions(+), 1 deletion(-)
 create mode 100644 gnu/packages/patches/grub-ignore-metadata-csum-seed.patch


base-commit: 83fc6c7f72fcab3a68c82dd02f872429d632a2c0
prerequisite-patch-id: f5b496d7bc4037f90bafa2f243ec14cc4440fb70

Comments

Lars-Dominik Braun May 27, 2024, 5:32 p.m. UTC | #1
Hi,

I pushed this patch as 00384aedbc6a371aaf90ca344a446952fdd5a6b3 after (positive) feedback from IRC.

Lars
diff mbox series

Patch

diff --git a/gnu/local.mk b/gnu/local.mk
index 502e97ecd5..7e9e1ebcf0 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1415,6 +1415,7 @@  dist_patch_DATA =						\
   %D%/packages/patches/groovy-add-exceptionutilsgenerator.patch	\
   %D%/packages/patches/grub-efi-fat-serial-number.patch		\
   %D%/packages/patches/grub-setup-root.patch			\
+  %D%/packages/patches/grub-ignore-metadata-csum-seed.patch			\
   %D%/packages/patches/guile-1.8-cpp-4.5.patch			\
   %D%/packages/patches/guile-2.2-skip-oom-test.patch            \
   %D%/packages/patches/guile-2.2-skip-so-test.patch             \
diff --git a/gnu/packages/bootloaders.scm b/gnu/packages/bootloaders.scm
index 20af6fcee1..f37344c25b 100644
--- a/gnu/packages/bootloaders.scm
+++ b/gnu/packages/bootloaders.scm
@@ -113,7 +113,8 @@  (define-public grub
                 "1qbycnxkx07arj9f2nlsi9kp0dyldspbv07ysdyd34qvz55a97mp"))
               (patches (search-patches
                         "grub-efi-fat-serial-number.patch"
-                        "grub-setup-root.patch"))
+                        "grub-setup-root.patch"
+                        "grub-ignore-metadata-csum-seed.patch"))
               (modules '((guix build utils)))
               (snippet
                '(begin
diff --git a/gnu/packages/patches/grub-ignore-metadata-csum-seed.patch b/gnu/packages/patches/grub-ignore-metadata-csum-seed.patch
new file mode 100644
index 0000000000..cd9b897aa6
--- /dev/null
+++ b/gnu/packages/patches/grub-ignore-metadata-csum-seed.patch
@@ -0,0 +1,54 @@ 
+commit 7fd5feff97c4b1f446f8fcf6d37aca0c64e7c763
+Author: Javier Martinez Canillas <javierm@redhat.com>
+Date:   Fri Jun 11 21:36:16 2021 +0200
+
+    fs/ext2: Ignore checksum seed incompat feature
+    
+    This incompat feature is used to denote that the filesystem stored its
+    metadata checksum seed in the superblock. This is used to allow tune2fs
+    changing the UUID on a mounted metdata_csum filesystem without having
+    to rewrite all the disk metadata. However, the GRUB doesn't use the
+    metadata checksum at all. So, it can just ignore this feature if it
+    is enabled. This is consistent with the GRUB filesystem code in general
+    which just does a best effort to access the filesystem's data.
+    
+    The checksum seed incompat feature has to be removed from the ignore
+    list if the support for metadata checksum verification is added to the
+    GRUB ext2 driver later.
+    
+    Suggested-by: Eric Sandeen <esandeen@redhat.com>
+    Suggested-by: Lukas Czerner <lczerner@redhat.com>
+    Signed-off-by: Javier Martinez Canillas <javierm@redhat.com>
+    Reviewed-by: Lukas Czerner <lczerner@redhat.com>
+    Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
+
+diff --git a/grub-core/fs/ext2.c b/grub-core/fs/ext2.c
+index e7dd78e66..4953a1591 100644
+--- a/grub-core/fs/ext2.c
++++ b/grub-core/fs/ext2.c
+@@ -103,6 +103,7 @@ GRUB_MOD_LICENSE ("GPLv3+");
+ #define EXT4_FEATURE_INCOMPAT_64BIT		0x0080
+ #define EXT4_FEATURE_INCOMPAT_MMP		0x0100
+ #define EXT4_FEATURE_INCOMPAT_FLEX_BG		0x0200
++#define EXT4_FEATURE_INCOMPAT_CSUM_SEED		0x2000
+ #define EXT4_FEATURE_INCOMPAT_ENCRYPT          0x10000
+ 
+ /* The set of back-incompatible features this driver DOES support. Add (OR)
+@@ -123,10 +124,15 @@ GRUB_MOD_LICENSE ("GPLv3+");
+  * mmp:            Not really back-incompatible - was added as such to
+  *                 avoid multiple read-write mounts. Safe to ignore for this
+  *                 RO driver.
++ * checksum seed:  Not really back-incompatible - was added to allow tools
++ *                 such as tune2fs to change the UUID on a mounted metadata
++ *                 checksummed filesystem. Safe to ignore for now since the
++ *                 driver doesn't support checksum verification. However, it
++ *                 has to be removed from this list if the support is added later.
+  */
+ #define EXT2_DRIVER_IGNORED_INCOMPAT ( EXT3_FEATURE_INCOMPAT_RECOVER \
+-				     | EXT4_FEATURE_INCOMPAT_MMP)
+-
++				     | EXT4_FEATURE_INCOMPAT_MMP \
++				     | EXT4_FEATURE_INCOMPAT_CSUM_SEED)
+ 
+ #define EXT3_JOURNAL_MAGIC_NUMBER	0xc03b3998U
+