Whamcloud - gitweb
debugfs: output large directory size
authorArtem Blagodarenko <artem.blagodarenko@gmail.com>
Fri, 14 Dec 2018 07:50:54 +0000 (10:50 +0300)
committerLi Dongyang <dongyangli@ddn.com>
Wed, 19 Dec 2018 22:41:04 +0000 (09:41 +1100)
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>
debugfs/debugfs.c
debugfs/ls.c

index 0b04508..faae12d 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 2b631f8..c00aa4a 100644 (file)
@@ -189,9 +189,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);
                if ((ls->options & DIRDATA_OPT) != 0)