]> git.ipfire.org Git - thirdparty/e2fsprogs.git/commitdiff
debugfs: output large directory size
authorArtem Blagodarenko <artem.blagodarenko@gmail.com>
Tue, 5 Feb 2019 22:10:05 +0000 (17:10 -0500)
committerTheodore Ts'o <tytso@mit.edu>
Tue, 5 Feb 2019 22:11:26 +0000 (17:11 -0500)
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 <artem.blagodarenko@gmail.com>
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
debugfs/debugfs.c
debugfs/ls.c

index 0b04508efae493b984b730d8a94acacc1493648b..faae12da25ecbdd1c2b0a4c1f90d09253cec03eb 100644 (file)
@@ -840,7 +840,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);
index bfc28cb689ed4d3c8d6e5649c54968bf73910921..4198ae38ab3c51429255df3775949f5c739efbd6 100644 (file)
@@ -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);