forked from pool/grub2
- add 0001-fs-ext2-Ignore-checksum-seed-incompat-feature.patch,
0001-fs-ext2-Ignore-the-large_dir-incompat-feature.patch: * support more featureful extX filesystems (backport from upstream git) OBS-URL: https://build.opensuse.org/package/show/Base:System/grub2?expand=0&rev=455
This commit is contained in:
parent
0b52761bc4
commit
d7b8a8f31b
59
0001-fs-ext2-Ignore-checksum-seed-incompat-feature.patch
Normal file
59
0001-fs-ext2-Ignore-checksum-seed-incompat-feature.patch
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
From 7fd5feff97c4b1f446f8fcf6d37aca0c64e7c763 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Javier Martinez Canillas <javierm@redhat.com>
|
||||||
|
Date: Fri, 11 Jun 2021 21:36:16 +0200
|
||||||
|
Subject: [PATCH] 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>
|
||||||
|
---
|
||||||
|
grub-core/fs/ext2.c | 10 ++++++++--
|
||||||
|
1 file changed, 8 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
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
|
||||||
|
|
||||||
|
--
|
||||||
|
2.40.1
|
||||||
|
|
58
0001-fs-ext2-Ignore-the-large_dir-incompat-feature.patch
Normal file
58
0001-fs-ext2-Ignore-the-large_dir-incompat-feature.patch
Normal file
@ -0,0 +1,58 @@
|
|||||||
|
From 2e9fa73a040462b81bfbfe56c0bc7ad2d30b446b Mon Sep 17 00:00:00 2001
|
||||||
|
From: Theodore Ts'o <tytso@mit.edu>
|
||||||
|
Date: Tue, 30 Aug 2022 22:41:59 -0400
|
||||||
|
Subject: [PATCH] fs/ext2: Ignore the large_dir incompat feature
|
||||||
|
|
||||||
|
Recently, ext4 added the large_dir feature, which adds support for
|
||||||
|
a 3 level htree directory support.
|
||||||
|
|
||||||
|
The GRUB supports existing file systems with htree directories by
|
||||||
|
ignoring their existence, and since the index nodes for the hash tree
|
||||||
|
look like deleted directory entries (by design), the GRUB can simply do
|
||||||
|
a brute force O(n) linear search of directories. The same is true for
|
||||||
|
3 level deep htrees indicated by large_dir feature flag.
|
||||||
|
|
||||||
|
Hence, it is safe for the GRUB to ignore the large_dir incompat feature.
|
||||||
|
|
||||||
|
Fixes: https://savannah.gnu.org/bugs/?61606
|
||||||
|
|
||||||
|
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
|
||||||
|
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
|
||||||
|
---
|
||||||
|
grub-core/fs/ext2.c | 10 +++++++++-
|
||||||
|
1 file changed, 9 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/grub-core/fs/ext2.c b/grub-core/fs/ext2.c
|
||||||
|
index 0989e26e1..e1cc5e62a 100644
|
||||||
|
--- a/grub-core/fs/ext2.c
|
||||||
|
+++ b/grub-core/fs/ext2.c
|
||||||
|
@@ -104,6 +104,7 @@ GRUB_MOD_LICENSE ("GPLv3+");
|
||||||
|
#define EXT4_FEATURE_INCOMPAT_MMP 0x0100
|
||||||
|
#define EXT4_FEATURE_INCOMPAT_FLEX_BG 0x0200
|
||||||
|
#define EXT4_FEATURE_INCOMPAT_CSUM_SEED 0x2000
|
||||||
|
+#define EXT4_FEATURE_INCOMPAT_LARGEDIR 0x4000 /* >2GB or 3 level htree */
|
||||||
|
#define EXT4_FEATURE_INCOMPAT_ENCRYPT 0x10000
|
||||||
|
|
||||||
|
/* The set of back-incompatible features this driver DOES support. Add (OR)
|
||||||
|
@@ -129,10 +130,17 @@ GRUB_MOD_LICENSE ("GPLv3+");
|
||||||
|
* 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.
|
||||||
|
+ * large_dir: Not back-incompatible given that the GRUB ext2 driver does
|
||||||
|
+ * not implement EXT2_FEATURE_COMPAT_DIR_INDEX. If the GRUB
|
||||||
|
+ * eventually supports the htree feature (aka dir_index)
|
||||||
|
+ * it should support 3 level htrees and then move
|
||||||
|
+ * EXT4_FEATURE_INCOMPAT_LARGEDIR to
|
||||||
|
+ * EXT2_DRIVER_SUPPORTED_INCOMPAT.
|
||||||
|
*/
|
||||||
|
#define EXT2_DRIVER_IGNORED_INCOMPAT ( EXT3_FEATURE_INCOMPAT_RECOVER \
|
||||||
|
| EXT4_FEATURE_INCOMPAT_MMP \
|
||||||
|
- | EXT4_FEATURE_INCOMPAT_CSUM_SEED)
|
||||||
|
+ | EXT4_FEATURE_INCOMPAT_CSUM_SEED \
|
||||||
|
+ | EXT4_FEATURE_INCOMPAT_LARGEDIR)
|
||||||
|
|
||||||
|
#define EXT3_JOURNAL_MAGIC_NUMBER 0xc03b3998U
|
||||||
|
|
||||||
|
--
|
||||||
|
2.40.1
|
||||||
|
|
@ -1,3 +1,11 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Tue May 30 11:03:54 UTC 2023 - Dirk Müller <dmueller@suse.com>
|
||||||
|
|
||||||
|
- add 0001-fs-ext2-Ignore-checksum-seed-incompat-feature.patch,
|
||||||
|
0001-fs-ext2-Ignore-the-large_dir-incompat-feature.patch:
|
||||||
|
* support more featureful extX filesystems (backport from
|
||||||
|
upstream git)
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Thu May 4 06:58:12 UTC 2023 - Michael Chang <mchang@suse.com>
|
Thu May 4 06:58:12 UTC 2023 - Michael Chang <mchang@suse.com>
|
||||||
|
|
||||||
|
@ -504,6 +504,9 @@ Patch979: 0001-openfw-Ensure-get_devargs-and-get_devname-functions-.patch
|
|||||||
Patch980: 0002-prep_loadenv-Fix-regex-for-Open-Firmware-device-spec.patch
|
Patch980: 0002-prep_loadenv-Fix-regex-for-Open-Firmware-device-spec.patch
|
||||||
Patch981: 0001-kern-ieee1275-init-Convert-plain-numbers-to-constant.patch
|
Patch981: 0001-kern-ieee1275-init-Convert-plain-numbers-to-constant.patch
|
||||||
Patch982: 0002-kern-ieee1275-init-Extended-support-in-Vec5.patch
|
Patch982: 0002-kern-ieee1275-init-Extended-support-in-Vec5.patch
|
||||||
|
# support newer extX filesystem defaults
|
||||||
|
Patch990: 0001-fs-ext2-Ignore-checksum-seed-incompat-feature.patch
|
||||||
|
Patch991: 0001-fs-ext2-Ignore-the-large_dir-incompat-feature.patch
|
||||||
|
|
||||||
Requires: gettext-runtime
|
Requires: gettext-runtime
|
||||||
%if 0%{?suse_version} >= 1140
|
%if 0%{?suse_version} >= 1140
|
||||||
|
Loading…
Reference in New Issue
Block a user