]> Gentwo Git Trees - linux/.git/commitdiff
ext4: align max orphan file size with e2fsprogs limit
authorBaokun Li <libaokun1@huawei.com>
Thu, 20 Nov 2025 13:42:33 +0000 (21:42 +0800)
committerTheodore Ts'o <tytso@mit.edu>
Wed, 26 Nov 2025 22:13:34 +0000 (17:13 -0500)
Kernel commit 0a6ce20c1564 ("ext4: verify orphan file size is not too big")
limits the maximum supported orphan file size to 8 << 20.

However, in e2fsprogs, the orphan file size is set to 32–512 filesystem
blocks when creating a filesystem.

With 64k block size, formatting an ext4 fs >32G gives an orphan file bigger
than the kernel allows, so mount prints an error and fails:

    EXT4-fs (vdb): orphan file too big: 8650752
    EXT4-fs (vdb): mount failed

To prevent this issue and allow previously created 64KB filesystems to
mount, we updates the maximum allowed orphan file size in the kernel to
512 filesystem blocks.

Fixes: 0a6ce20c1564 ("ext4: verify orphan file size is not too big")
Signed-off-by: Baokun Li <libaokun1@huawei.com>
Reviewed-by: Jan Kara <jack@suse.cz>
Message-ID: <20251120134233.2994147-1-libaokun@huaweicloud.com>
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
Cc: stable@kernel.org
fs/ext4/orphan.c

index 82d5e750145559fa3badee386baa3e9a2256cac2..fb57bba0d19d1e916d49d49be0aec96173d6f655 100644 (file)
@@ -8,6 +8,8 @@
 #include "ext4.h"
 #include "ext4_jbd2.h"
 
+#define EXT4_MAX_ORPHAN_FILE_BLOCKS 512
+
 static int ext4_orphan_file_add(handle_t *handle, struct inode *inode)
 {
        int i, j, start;
@@ -588,7 +590,7 @@ int ext4_init_orphan_info(struct super_block *sb)
         * consuming absurd amounts of memory when pinning blocks of orphan
         * file in memory.
         */
-       if (inode->i_size > 8 << 20) {
+       if (inode->i_size > (EXT4_MAX_ORPHAN_FILE_BLOCKS << inode->i_blkbits)) {
                ext4_msg(sb, KERN_ERR, "orphan file too big: %llu",
                         (unsigned long long)inode->i_size);
                ret = -EFSCORRUPTED;