From 00384aedbc6a371aaf90ca344a446952fdd5a6b3 Mon Sep 17 00:00:00 2001 From: Lars-Dominik Braun Date: Sun, 26 May 2024 17:03:01 +0200 Subject: [PATCH] gnu: grub: Ignore metadata-csum-seed feature of ext4. * 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 --- 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 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 @@ "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 +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 + Suggested-by: Lukas Czerner + Signed-off-by: Javier Martinez Canillas + Reviewed-by: Lukas Czerner + Reviewed-by: Daniel Kiper + +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 +