Message ID | 20181213213156.44773-1-artem.blagodarenko@gmail.com |
---|---|
State | Superseded |
Headers | show |
Series | [1/2] e2fsck: allow to check >2GB sized directory | expand |
On Fri, Dec 14, 2018 at 12:31:55AM +0300, Artem Blagodarenko wrote: > After large_dir feature has been added, e2fsprogs is > ready for directories > 2GB, so we can remove e2fsck > directory size check. > > > - if (p->is_dir && blockcnt > (1 << (21 - fs->super->s_log_block_size))) > + if (p->is_dir && !ext2fs_has_feature_largedir(fs->super) && > + blockcnt > (1 << (21 - fs->super->s_log_block_size))) > problem = PR_1_TOOBIG_DIR; > - if (p->is_reg && p->num_blocks+1 >= p->max_blocks) > + if ((p->is_reg || p->is_dir) && p->num_blocks + 1 >= p->max_blocks) > problem = PR_1_TOOBIG_REG; > if (!p->is_dir && !p->is_reg && blockcnt > 0) > problem = PR_1_TOOBIG_SYMLINK; In the largedir case, if the directory is too big, it will return PR_1_TOOBIG_REG; it should still return PR_1_TOOBIG_DIR, so the message is not confusing. Could you fix this, please? Thanks!! - Ted
diff --git a/e2fsck/pass1.c b/e2fsck/pass1.c index 5c0b92d5..3318d881 100644 --- a/e2fsck/pass1.c +++ b/e2fsck/pass1.c @@ -3647,9 +3647,10 @@ static int process_block(ext2_filsys fs, } } - if (p->is_dir && blockcnt > (1 << (21 - fs->super->s_log_block_size))) + if (p->is_dir && !ext2fs_has_feature_largedir(fs->super) && + blockcnt > (1 << (21 - fs->super->s_log_block_size))) problem = PR_1_TOOBIG_DIR; - if (p->is_reg && p->num_blocks+1 >= p->max_blocks) + if ((p->is_reg || p->is_dir) && p->num_blocks + 1 >= p->max_blocks) problem = PR_1_TOOBIG_REG; if (!p->is_dir && !p->is_reg && blockcnt > 0) problem = PR_1_TOOBIG_SYMLINK;
After large_dir feature has been added, e2fsprogs is ready for directories > 2GB, so we can remove e2fsck directory size check. Signed-off-by: Artem Blagodarenko <artem.blagodarenko@gmail.com> --- e2fsck/pass1.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-)