All of lore.kernel.org
 help / color / mirror / Atom feed
* [Buildroot] [PATCH 1/1] boot/grub2: fix incompat e2fsprogs feature use
@ 2023-09-17 20:01 Jens Maus via buildroot
  2023-09-22 18:04 ` Arnout Vandecappelle via buildroot
  2023-09-22 18:48 ` [Buildroot] [PATCH v2] " Jens Maus via buildroot
  0 siblings, 2 replies; 5+ messages in thread
From: Jens Maus via buildroot @ 2023-09-17 20:01 UTC (permalink / raw)
  To: buildroot; +Cc: Thomas Petazzoni

With bump of package/e2fsprogs to 1.47.0 [1] a freshly generated
ext4 fs has unfortunately different default features enabled
(e.g. metadata_csum_seed). This and some other newer fs features
(e.g. large_dir) are however not supported by our grub2.
Thus, newly generated ext-based rootfs won't be recognized by grub2
and are therefore not bootable/usable from grub2 anymore. This is
an issue already known to other Linux derivates [2],[3],[4].

This commit introduces two additional upstream patches to
package/grub2 which adds EXT4_FEATURE_INCOMPAT_CSUM_SEED and
EXT4_FEATURE_INCOMPAT_LARGEDIR to the EXT2_DRIVER_IGNORED_INCOMPAT
list of ignored incompatible ext features, allowing grub2 to
use ext filesystems with these newer default feature sets.

[1] https://git.buildroot.net/buildroot/commit/?id=6a21733f839478d902f3eab287a82b456e55f708
[2] https://bugs.launchpad.net/ubuntu/+source/grub2/+bug/1844012
[3] https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1031325
[4] https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1030939

Signed-off-by: Jens Maus <mail@jens-maus.de>
---
 ...gnore-checksum-seed-incompat-feature.patch | 59 +++++++++++++++++++
 ...gnore-the-large_dir-incompat-feature.patch | 58 ++++++++++++++++++
 2 files changed, 117 insertions(+)
 create mode 100644 boot/grub2/0019-Ignore-checksum-seed-incompat-feature.patch
 create mode 100644 boot/grub2/0020-Ignore-the-large_dir-incompat-feature.patch

diff --git a/boot/grub2/0019-Ignore-checksum-seed-incompat-feature.patch b/boot/grub2/0019-Ignore-checksum-seed-incompat-feature.patch
new file mode 100644
index 0000000000..27b2277c40
--- /dev/null
+++ b/boot/grub2/0019-Ignore-checksum-seed-incompat-feature.patch
@@ -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: 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 e7dd78e..4953a15 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
+ 
+-- 
+cgit v1.1
+
diff --git a/boot/grub2/0020-Ignore-the-large_dir-incompat-feature.patch b/boot/grub2/0020-Ignore-the-large_dir-incompat-feature.patch
new file mode 100644
index 0000000000..957b66f2c1
--- /dev/null
+++ b/boot/grub2/0020-Ignore-the-large_dir-incompat-feature.patch
@@ -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: 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 0989e26..e1cc5e6 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
+ 
+-- 
+cgit v1.1
+
-- 
2.34.1

_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [Buildroot] [PATCH 1/1] boot/grub2: fix incompat e2fsprogs feature use
  2023-09-17 20:01 [Buildroot] [PATCH 1/1] boot/grub2: fix incompat e2fsprogs feature use Jens Maus via buildroot
@ 2023-09-22 18:04 ` Arnout Vandecappelle via buildroot
  2023-09-22 18:48 ` [Buildroot] [PATCH v2] " Jens Maus via buildroot
  1 sibling, 0 replies; 5+ messages in thread
From: Arnout Vandecappelle via buildroot @ 2023-09-22 18:04 UTC (permalink / raw)
  To: Jens Maus, buildroot; +Cc: Thomas Petazzoni

  Hi Jens,

On 17/09/2023 22:01, Jens Maus via buildroot wrote:
> With bump of package/e2fsprogs to 1.47.0 [1] a freshly generated
> ext4 fs has unfortunately different default features enabled
> (e.g. metadata_csum_seed). This and some other newer fs features
> (e.g. large_dir) are however not supported by our grub2.
> Thus, newly generated ext-based rootfs won't be recognized by grub2
> and are therefore not bootable/usable from grub2 anymore. This is
> an issue already known to other Linux derivates [2],[3],[4].
> 
> This commit introduces two additional upstream patches to
> package/grub2 which adds EXT4_FEATURE_INCOMPAT_CSUM_SEED and
> EXT4_FEATURE_INCOMPAT_LARGEDIR to the EXT2_DRIVER_IGNORED_INCOMPAT
> list of ignored incompatible ext features, allowing grub2 to
> use ext filesystems with these newer default feature sets.
> 
> [1] https://git.buildroot.net/buildroot/commit/?id=6a21733f839478d902f3eab287a82b456e55f708
> [2] https://bugs.launchpad.net/ubuntu/+source/grub2/+bug/1844012
> [3] https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1031325
> [4] https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1030939
> 
> Signed-off-by: Jens Maus <mail@jens-maus.de>
> ---
>   ...gnore-checksum-seed-incompat-feature.patch | 59 +++++++++++++++++++
>   ...gnore-the-large_dir-incompat-feature.patch | 58 ++++++++++++++++++
>   2 files changed, 117 insertions(+)
>   create mode 100644 boot/grub2/0019-Ignore-checksum-seed-incompat-feature.patch
>   create mode 100644 boot/grub2/0020-Ignore-the-large_dir-incompat-feature.patch
> 
> diff --git a/boot/grub2/0019-Ignore-checksum-seed-incompat-feature.patch b/boot/grub2/0019-Ignore-checksum-seed-incompat-feature.patch
> new file mode 100644
> index 0000000000..27b2277c40
> --- /dev/null
> +++ b/boot/grub2/0019-Ignore-checksum-seed-incompat-feature.patch
> @@ -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: 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>

  This is missing your Signed-off-by and upstream link (as reported by 
check-package).

  The signed-off-by is needed separately on patches because the patches may be 
copied outside of Buildroot, thus loosing the provenance trail.

  For the upstream link, preferably point to the right commit in 
https://git.savannah.gnu.org/cgit/grub.git


  Regards,
  Arnout

> +---
> + 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 e7dd78e..4953a15 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
> +
> +--
> +cgit v1.1
> +
> diff --git a/boot/grub2/0020-Ignore-the-large_dir-incompat-feature.patch b/boot/grub2/0020-Ignore-the-large_dir-incompat-feature.patch
> new file mode 100644
> index 0000000000..957b66f2c1
> --- /dev/null
> +++ b/boot/grub2/0020-Ignore-the-large_dir-incompat-feature.patch
> @@ -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: 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 0989e26..e1cc5e6 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
> +
> +--
> +cgit v1.1
> +
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [Buildroot] [PATCH v2] boot/grub2: fix incompat e2fsprogs feature use
  2023-09-17 20:01 [Buildroot] [PATCH 1/1] boot/grub2: fix incompat e2fsprogs feature use Jens Maus via buildroot
  2023-09-22 18:04 ` Arnout Vandecappelle via buildroot
@ 2023-09-22 18:48 ` Jens Maus via buildroot
  2023-09-30  9:55   ` Peter Korsgaard
  1 sibling, 1 reply; 5+ messages in thread
From: Jens Maus via buildroot @ 2023-09-22 18:48 UTC (permalink / raw)
  To: buildroot; +Cc: Thomas Petazzoni

With bump of package/e2fsprogs to 1.47.0 [1] a freshly generated
ext4 fs has unfortunately different default features enabled
(e.g. metadata_csum_seed). This and some other newer fs features
(e.g. large_dir) are however not supported by our grub2.
Thus, newly generated ext-based rootfs won't be recognized by grub2
and are therefore not bootable/usable from grub2 anymore. This is
an issue already known to other Linux derivates [2],[3],[4].

This commit introduces two additional upstream patches to
package/grub2 which adds EXT4_FEATURE_INCOMPAT_CSUM_SEED and
EXT4_FEATURE_INCOMPAT_LARGEDIR to the EXT2_DRIVER_IGNORED_INCOMPAT
list of ignored incompatible ext features, allowing grub2 to
use ext filesystems with these newer default feature sets.

[1] https://git.buildroot.net/buildroot/commit/?id=6a21733f839478d902f3eab287a82b456e55f708
[2] https://bugs.launchpad.net/ubuntu/+source/grub2/+bug/1844012
[3] https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1031325
[4] https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1030939

Signed-off-by: Jens Maus <mail@jens-maus.de>

---
Changes v1 -> v2:
  - added Signed-off-by and Upstream link in patches (Arnout)

Signed-off-by: Jens Maus <mail@jens-maus.de>
---
 ...gnore-checksum-seed-incompat-feature.patch | 61 +++++++++++++++++++
 ...gnore-the-large_dir-incompat-feature.patch | 60 ++++++++++++++++++
 2 files changed, 121 insertions(+)
 create mode 100644 boot/grub2/0019-fs-ext2-Ignore-checksum-seed-incompat-feature.patch
 create mode 100644 boot/grub2/0020-fs-ext2-Ignore-the-large_dir-incompat-feature.patch

diff --git a/boot/grub2/0019-fs-ext2-Ignore-checksum-seed-incompat-feature.patch b/boot/grub2/0019-fs-ext2-Ignore-checksum-seed-incompat-feature.patch
new file mode 100644
index 0000000000..9a913e2279
--- /dev/null
+++ b/boot/grub2/0019-fs-ext2-Ignore-checksum-seed-incompat-feature.patch
@@ -0,0 +1,61 @@
+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>
+Upstream: 7fd5feff97c4b1f446f8fcf6d37aca0c64e7c763
+Signed-off-by: Jens Maus <mail@jens-maus.de>
+---
+ 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.34.1
+
diff --git a/boot/grub2/0020-fs-ext2-Ignore-the-large_dir-incompat-feature.patch b/boot/grub2/0020-fs-ext2-Ignore-the-large_dir-incompat-feature.patch
new file mode 100644
index 0000000000..43b182f968
--- /dev/null
+++ b/boot/grub2/0020-fs-ext2-Ignore-the-large_dir-incompat-feature.patch
@@ -0,0 +1,60 @@
+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>
+Upstream: 2e9fa73a040462b81bfbfe56c0bc7ad2d30b446b
+Signed-off-by: Jens Maus <mail@jens-maus.de>
+---
+ 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.34.1
+
-- 
2.34.1

_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [Buildroot] [PATCH v2] boot/grub2: fix incompat e2fsprogs feature use
  2023-09-22 18:48 ` [Buildroot] [PATCH v2] " Jens Maus via buildroot
@ 2023-09-30  9:55   ` Peter Korsgaard
  2023-10-12 16:40     ` Peter Korsgaard
  0 siblings, 1 reply; 5+ messages in thread
From: Peter Korsgaard @ 2023-09-30  9:55 UTC (permalink / raw)
  To: Jens Maus via buildroot; +Cc: Thomas Petazzoni, Jens Maus

>>>>> "Jens" == Jens Maus via buildroot <buildroot@buildroot.org> writes:

 > With bump of package/e2fsprogs to 1.47.0 [1] a freshly generated
 > ext4 fs has unfortunately different default features enabled
 > (e.g. metadata_csum_seed). This and some other newer fs features
 > (e.g. large_dir) are however not supported by our grub2.
 > Thus, newly generated ext-based rootfs won't be recognized by grub2
 > and are therefore not bootable/usable from grub2 anymore. This is
 > an issue already known to other Linux derivates [2],[3],[4].

 > This commit introduces two additional upstream patches to
 > package/grub2 which adds EXT4_FEATURE_INCOMPAT_CSUM_SEED and
 > EXT4_FEATURE_INCOMPAT_LARGEDIR to the EXT2_DRIVER_IGNORED_INCOMPAT
 > list of ignored incompatible ext features, allowing grub2 to
 > use ext filesystems with these newer default feature sets.

 > [1] https://git.buildroot.net/buildroot/commit/?id=6a21733f839478d902f3eab287a82b456e55f708
 > [2] https://bugs.launchpad.net/ubuntu/+source/grub2/+bug/1844012
 > [3] https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1031325
 > [4] https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1030939

 > Signed-off-by: Jens Maus <mail@jens-maus.de>

 > ---
 > Changes v1 -> v2:
 >   - added Signed-off-by and Upstream link in patches (Arnout)

Committed, thanks.

Hopefully other bootloaders will not have similar issues.

-- 
Bye, Peter Korsgaard
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [Buildroot] [PATCH v2] boot/grub2: fix incompat e2fsprogs feature use
  2023-09-30  9:55   ` Peter Korsgaard
@ 2023-10-12 16:40     ` Peter Korsgaard
  0 siblings, 0 replies; 5+ messages in thread
From: Peter Korsgaard @ 2023-10-12 16:40 UTC (permalink / raw)
  To: Jens Maus via buildroot; +Cc: Jens Maus, Thomas Petazzoni

>>>>> "Peter" == Peter Korsgaard <peter@korsgaard.com> writes:

>>>>> "Jens" == Jens Maus via buildroot <buildroot@buildroot.org> writes:
 >> With bump of package/e2fsprogs to 1.47.0 [1] a freshly generated
 >> ext4 fs has unfortunately different default features enabled
 >> (e.g. metadata_csum_seed). This and some other newer fs features
 >> (e.g. large_dir) are however not supported by our grub2.
 >> Thus, newly generated ext-based rootfs won't be recognized by grub2
 >> and are therefore not bootable/usable from grub2 anymore. This is
 >> an issue already known to other Linux derivates [2],[3],[4].

 >> This commit introduces two additional upstream patches to
 >> package/grub2 which adds EXT4_FEATURE_INCOMPAT_CSUM_SEED and
 >> EXT4_FEATURE_INCOMPAT_LARGEDIR to the EXT2_DRIVER_IGNORED_INCOMPAT
 >> list of ignored incompatible ext features, allowing grub2 to
 >> use ext filesystems with these newer default feature sets.

 >> [1] https://git.buildroot.net/buildroot/commit/?id=6a21733f839478d902f3eab287a82b456e55f708
 >> [2] https://bugs.launchpad.net/ubuntu/+source/grub2/+bug/1844012
 >> [3] https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1031325
 >> [4] https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1030939

 >> Signed-off-by: Jens Maus <mail@jens-maus.de>

 >> ---
 >> Changes v1 -> v2:
 >> - added Signed-off-by and Upstream link in patches (Arnout)

 > Committed, thanks.

 > Hopefully other bootloaders will not have similar issues.

Committed to 2023.08.x, thanks.

-- 
Bye, Peter Korsgaard
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2023-10-12 16:40 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-09-17 20:01 [Buildroot] [PATCH 1/1] boot/grub2: fix incompat e2fsprogs feature use Jens Maus via buildroot
2023-09-22 18:04 ` Arnout Vandecappelle via buildroot
2023-09-22 18:48 ` [Buildroot] [PATCH v2] " Jens Maus via buildroot
2023-09-30  9:55   ` Peter Korsgaard
2023-10-12 16:40     ` Peter Korsgaard

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.