2018-12-14 07:51:28

by Artem Blagodarenko

[permalink] [raw]
Subject: [PATCH v2 1/2] e2fsck: allow to check >2GB sized directory

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 <[email protected]>
---
e2fsck/pass1.c | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/e2fsck/pass1.c b/e2fsck/pass1.c
index 5c0b92d5..5c413610 100644
--- a/e2fsck/pass1.c
+++ b/e2fsck/pass1.c
@@ -3647,9 +3647,12 @@ 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_dir && p->num_blocks + 1 >= p->max_blocks)
+ problem = PR_1_TOOBIG_DIR;
+ if (p->is_reg && 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;
--
2.14.3


2018-12-14 07:51:32

by Artem Blagodarenko

[permalink] [raw]
Subject: [PATCH v2 2/2] debugfs: output large directory size

large_dir option allows to create directory with size > 2GB.
debugfs utility outputs negative size value for large directories
and ignores high part of directory size.

Fix debugfs to use high part of directory size in debugfs output
and use appropriate output format.

Signed-off-by: Artem Blagodarenko <[email protected]>
---
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

2019-01-30 09:01:33

by Artem Blagodarenko

[permalink] [raw]
Subject: Re: [PATCH v2 1/2] e2fsck: allow to check >2GB sized directory

Hello, Theodore.

Do I need fix something in this patch series?

Thank you.

> On 14 Dec 2018, at 10:50, Artem Blagodarenko <[email protected]> wrote:
>
> 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 <[email protected]>
> ---
> e2fsck/pass1.c | 7 +++++--
> 1 file changed, 5 insertions(+), 2 deletions(-)
>
> diff --git a/e2fsck/pass1.c b/e2fsck/pass1.c
> index 5c0b92d5..5c413610 100644
> --- a/e2fsck/pass1.c
> +++ b/e2fsck/pass1.c
> @@ -3647,9 +3647,12 @@ 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_dir && p->num_blocks + 1 >= p->max_blocks)
> + problem = PR_1_TOOBIG_DIR;
> + if (p->is_reg && 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;
> --
> 2.14.3
>


2019-01-30 17:59:03

by Andreas Dilger

[permalink] [raw]
Subject: Re: [PATCH v2 1/2] e2fsck: allow to check >2GB sized directory

On Dec 14, 2018, at 12:50 AM, Artem Blagodarenko <[email protected]> wrote:
>
> 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 <[email protected]>

Reviewed-by: Andreas Dilger <[email protected]>

> ---
> e2fsck/pass1.c | 7 +++++--
> 1 file changed, 5 insertions(+), 2 deletions(-)
>
> diff --git a/e2fsck/pass1.c b/e2fsck/pass1.c
> index 5c0b92d5..5c413610 100644
> --- a/e2fsck/pass1.c
> +++ b/e2fsck/pass1.c
> @@ -3647,9 +3647,12 @@ 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_dir && p->num_blocks + 1 >= p->max_blocks)
> + problem = PR_1_TOOBIG_DIR;
> + if (p->is_reg && 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;
> --
> 2.14.3
>


Cheers, Andreas






Attachments:
signature.asc (873.00 B)
Message signed with OpenPGP

2019-02-05 22:10:36

by Theodore Ts'o

[permalink] [raw]
Subject: Re: [PATCH v2 1/2] e2fsck: allow to check >2GB sized directory

On Fri, Dec 14, 2018 at 10:50:53AM +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.
>
> Signed-off-by: Artem Blagodarenko <[email protected]>

Applied, thanks.

- Ted

2019-02-05 22:11:02

by Theodore Ts'o

[permalink] [raw]
Subject: Re: [PATCH v2 2/2] debugfs: output large directory size

On Fri, Dec 14, 2018 at 10:50:54AM +0300, Artem Blagodarenko wrote:
> large_dir option allows to create directory with size > 2GB.
> debugfs utility outputs negative size value for large directories
> and ignores high part of directory size.
>
> Fix debugfs to use high part of directory size in debugfs output
> and use appropriate output format.
>
> Signed-off-by: Artem Blagodarenko <[email protected]>

Applied, thanks.

- Ted