mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-12-27 13:30:45 -05:00
ext4: align max orphan file size with e2fsprogs limit
Kernel commit0a6ce20c15("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:8650752EXT4-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:0a6ce20c15("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
This commit is contained in:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user