[PATCH] erofs-utils: dump: refine file info statistics

Gao Xiang hsiangkao at linux.alibaba.com
Tue Nov 16 11:06:19 AEDT 2021


Also print the file type when dumping file info.

Cc: Guo Xuenan <guoxuenan at huawei.com>
Signed-off-by: Gao Xiang <hsiangkao at linux.alibaba.com>
---
 dump/main.c           | 16 +++++++++-------
 include/erofs/inode.h |  1 +
 lib/inode.c           |  2 +-
 3 files changed, 11 insertions(+), 8 deletions(-)

diff --git a/dump/main.c b/dump/main.c
index 401e6841aefb..a7199937b8e0 100644
--- a/dump/main.c
+++ b/dump/main.c
@@ -9,6 +9,7 @@
 #include <getopt.h>
 #include <time.h>
 #include "erofs/print.h"
+#include "erofs/inode.h"
 #include "erofs/io.h"
 
 #ifdef HAVE_LIBUUID
@@ -461,16 +462,17 @@ static void erofsdump_show_fileinfo(bool show_extent)
 		if (((access_mode >> i) & 1) == 0)
 			access_mode_str[8 - i] = '-';
 	fprintf(stdout, "File : %s\n", path);
-	fprintf(stdout, "NID: %" PRIu64 "  ", inode.nid);
-	fprintf(stdout, "Links: %u  ", inode.i_nlink);
-	fprintf(stdout, "Layout: %d\n", inode.datalayout);
+	fprintf(stdout, "Size: %" PRIu64"  On-disk size: %" PRIu64 "  %s\n",
+		inode.i_size, size,
+		file_category_types[erofs_mode_to_ftype(inode.i_mode)]);
+	fprintf(stdout, "NID: %" PRIu64 "   ", inode.nid);
+	fprintf(stdout, "Links: %u   ", inode.i_nlink);
+	fprintf(stdout, "Layout: %d   Compression ratio: %.2f%%\n",
+		inode.datalayout,
+		(double)(100 * size) / (double)(inode.i_size));
 	fprintf(stdout, "Inode size: %d   ", inode.inode_isize);
 	fprintf(stdout, "Extent size: %u   ", inode.extent_isize);
 	fprintf(stdout,	"Xattr size: %u\n", inode.xattr_isize);
-	fprintf(stdout, "File size: %" PRIu64"  ", inode.i_size);
-	fprintf(stdout,	"On-disk size: %" PRIu64 "  ", size);
-	fprintf(stdout, "Compression ratio: %.2f%%\n",
-			(double)(100 * size) / (double)(inode.i_size));
 	fprintf(stdout, "Uid: %u   Gid: %u  ", inode.i_uid, inode.i_gid);
 	fprintf(stdout, "Access: %04o/%s\n", access_mode, access_mode_str);
 	fprintf(stdout, "Timestamp: %s.%09d\n", timebuf, inode.i_ctime_nsec);
diff --git a/include/erofs/inode.h b/include/erofs/inode.h
index a73676212ccf..d5343c242aee 100644
--- a/include/erofs/inode.h
+++ b/include/erofs/inode.h
@@ -10,6 +10,7 @@
 
 #include "erofs/internal.h"
 
+unsigned char erofs_mode_to_ftype(umode_t mode);
 void erofs_inode_manager_init(void);
 unsigned int erofs_iput(struct erofs_inode *inode);
 erofs_nid_t erofs_lookupnid(struct erofs_inode *inode);
diff --git a/lib/inode.c b/lib/inode.c
index 6597a26f7ac4..855a0383f31e 100644
--- a/lib/inode.c
+++ b/lib/inode.c
@@ -37,7 +37,7 @@ static unsigned char erofs_ftype_by_mode[S_IFMT >> S_SHIFT] = {
 	[S_IFLNK >> S_SHIFT]  = EROFS_FT_SYMLINK,
 };
 
-static unsigned char erofs_mode_to_ftype(umode_t mode)
+unsigned char erofs_mode_to_ftype(umode_t mode)
 {
 	return erofs_ftype_by_mode[(mode & S_IFMT) >> S_SHIFT];
 }
-- 
2.24.4



More information about the Linux-erofs mailing list