grub-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH] fs/ext2: ignore the large_dir incompat feature


From: Theodore Ts'o
Subject: [PATCH] fs/ext2: ignore the large_dir incompat feature
Date: Tue, 30 Aug 2022 22:41:59 -0400

Recently, ext4 added the a large_dRecently, ext4 added the a large_dir
feature, which adds support for a 3 level htree directory support.

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), 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 gub to ignore the large_dir incompat feature.

Fixes: https://savannah.gnu.org/bugs/?61606

Signed-off-by: Theodore Ts'o <tytso@mit.edu>
---

I submitted this patch back in December 2021, not realizing that
apparently no one is actually scanning the bug tracking system on
savannah.gnu.org even though it is listed as the official bug tracking
system for GRUB.  So I'm trying to submit this via grub-devel.

 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..654580e9d 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-lvl 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 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.31.0




reply via email to

[Prev in Thread] Current Thread [Next in Thread]