* [PATCH 2/2] debugfs: output large directory size
2018-12-13 21:31 [PATCH 1/2] e2fsck: allow to check >2GB sized directory Artem Blagodarenko
@ 2018-12-13 21:31 ` Artem Blagodarenko
2018-12-14 3:11 ` Theodore Y. Ts'o
2018-12-14 3:10 ` [PATCH 1/2] e2fsck: allow to check >2GB sized directory Theodore Y. Ts'o
1 sibling, 1 reply; 4+ messages in thread
From: Artem Blagodarenko @ 2018-12-13 21:31 UTC (permalink / raw)
To: linux-ext4; +Cc: adilger.kernel
Use hight part of directory size in debugfs output.
Signed-off-by: Artem Blagodarenko <artem.blagodarenko@gmail.com>
---
debugfs/debugfs.c | 2 +-
debugfs/ls.c | 3 ---
2 files changed, 1 insertion(+), 4 deletions(-)
diff --git a/debugfs/debugfs.c b/debugfs/debugfs.c
index e03519c4..2e600b92 100644
--- a/debugfs/debugfs.c
+++ b/debugfs/debugfs.c
@@ -848,7 +848,7 @@ void internal_dump_inode(FILE *out, const char *prefix,
if (is_large_inode && large_inode->i_extra_isize >= 32)
fprintf(out, " Project: %5d", large_inode->i_projid);
fputs(" Size: ", out);
- if (LINUX_S_ISREG(inode->i_mode))
+ if (LINUX_S_ISREG(inode->i_mode) || LINUX_S_ISDIR(inode->i_mode))
fprintf(out, "%llu\n", EXT2_I_SIZE(inode));
else
fprintf(out, "%d\n", inode->i_size);
diff --git a/debugfs/ls.c b/debugfs/ls.c
index a1e8f4e9..41af15d2 100644
--- a/debugfs/ls.c
+++ b/debugfs/ls.c
@@ -152,9 +152,6 @@ static int list_dir_proc(ext2_ino_t dir EXT2FS_ATTR((unused)),
fprintf(ls->f, "(%d) %5d %5d ",
ext2fs_dirent_file_type(dirent),
inode_uid(inode), inode_gid(inode));
- if (LINUX_S_ISDIR(inode.i_mode))
- fprintf(ls->f, "%5d", inode.i_size);
- else
fprintf(ls->f, "%5llu", EXT2_I_SIZE(&inode));
fprintf(ls->f, " %s ", datestr);
print_filename(ls->f, dirent, options);
--
2.14.3
^ permalink raw reply related [flat|nested] 4+ messages in thread* Re: [PATCH 1/2] e2fsck: allow to check >2GB sized directory
2018-12-13 21:31 [PATCH 1/2] e2fsck: allow to check >2GB sized directory Artem Blagodarenko
2018-12-13 21:31 ` [PATCH 2/2] debugfs: output large directory size Artem Blagodarenko
@ 2018-12-14 3:10 ` Theodore Y. Ts'o
1 sibling, 0 replies; 4+ messages in thread
From: Theodore Y. Ts'o @ 2018-12-14 3:10 UTC (permalink / raw)
To: Artem Blagodarenko; +Cc: linux-ext4, adilger.kernel
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
^ permalink raw reply [flat|nested] 4+ messages in thread