[PATCH] erofs-utils: dump: display minimum kernel version for ondisk features
Gao Xiang
hsiangkao at linux.alibaba.com
Wed Aug 6 13:07:47 AEST 2025
Allow users to identify the minimum supported upstream kernel version.
Signed-off-by: Gao Xiang <hsiangkao at linux.alibaba.com>
---
dump/main.c | 52 +++++++++++++++++++++++++++++++++-------------------
1 file changed, 33 insertions(+), 19 deletions(-)
diff --git a/dump/main.c b/dump/main.c
index 38cc8a2..0388830 100644
--- a/dump/main.c
+++ b/dump/main.c
@@ -87,25 +87,26 @@ static struct option long_options[] = {
struct erofsdump_feature {
bool compat;
+ u16 lkver;
u32 flag;
const char *name;
};
static struct erofsdump_feature feature_lists[] = {
- { true, EROFS_FEATURE_COMPAT_SB_CHKSUM, "sb_csum" },
- { true, EROFS_FEATURE_COMPAT_MTIME, "mtime" },
- { true, EROFS_FEATURE_COMPAT_XATTR_FILTER, "xattr_filter" },
- { false, EROFS_FEATURE_INCOMPAT_ZERO_PADDING, "0padding" },
- { false, EROFS_FEATURE_INCOMPAT_COMPR_CFGS, "compr_cfgs" },
- { false, EROFS_FEATURE_INCOMPAT_BIG_PCLUSTER, "big_pcluster" },
- { false, EROFS_FEATURE_INCOMPAT_CHUNKED_FILE, "chunked_file" },
- { false, EROFS_FEATURE_INCOMPAT_DEVICE_TABLE, "device_table" },
- { false, EROFS_FEATURE_INCOMPAT_ZTAILPACKING, "ztailpacking" },
- { false, EROFS_FEATURE_INCOMPAT_FRAGMENTS, "fragments" },
- { false, EROFS_FEATURE_INCOMPAT_DEDUPE, "dedupe" },
- { false, EROFS_FEATURE_INCOMPAT_XATTR_PREFIXES, "xattr_prefixes" },
- { false, EROFS_FEATURE_INCOMPAT_48BIT, "48bit" },
- { false, EROFS_FEATURE_INCOMPAT_METABOX, "metabox" },
+ { true, 0, EROFS_FEATURE_COMPAT_SB_CHKSUM, "sb_csum" },
+ { true, 0, EROFS_FEATURE_COMPAT_MTIME, "mtime" },
+ { true, 0, EROFS_FEATURE_COMPAT_XATTR_FILTER, "xattr_filter" },
+ { false, 504U, EROFS_FEATURE_INCOMPAT_ZERO_PADDING, "0padding" },
+ { false, 513U, EROFS_FEATURE_INCOMPAT_COMPR_CFGS, "compr_cfgs" },
+ { false, 513U, EROFS_FEATURE_INCOMPAT_BIG_PCLUSTER, "big_pcluster" },
+ { false, 515U, EROFS_FEATURE_INCOMPAT_CHUNKED_FILE, "chunked_file" },
+ { false, 516U, EROFS_FEATURE_INCOMPAT_DEVICE_TABLE, "device_table" },
+ { false, 517U, EROFS_FEATURE_INCOMPAT_ZTAILPACKING, "ztailpacking" },
+ { false, 601U, EROFS_FEATURE_INCOMPAT_FRAGMENTS, "fragments" },
+ { false, 601U, EROFS_FEATURE_INCOMPAT_DEDUPE, "dedupe" },
+ { false, 604U, EROFS_FEATURE_INCOMPAT_XATTR_PREFIXES, "xattr_prefixes" },
+ { false, 615U, EROFS_FEATURE_INCOMPAT_48BIT, "48bit" },
+ { false, 617U, EROFS_FEATURE_INCOMPAT_METABOX, "metabox" },
};
static int erofsdump_readdir(struct erofs_dir_context *ctx);
@@ -630,8 +631,9 @@ static void erofsdump_print_supported_compressors(FILE *f, unsigned int mask)
static void erofsdump_show_superblock(void)
{
time_t time = g_sbi.epoch + g_sbi.build_time;
+ unsigned int minkver = 0;
char uuid_str[37];
- int i = 0;
+ int i;
fprintf(stdout, "Filesystem magic number: 0x%04X\n",
EROFS_SUPER_MAGIC_V1);
@@ -666,16 +668,28 @@ static void erofsdump_show_superblock(void)
fprintf(stdout, "Filesystem created: %s",
ctime(&time));
fprintf(stdout, "Filesystem features: ");
- for (; i < ARRAY_SIZE(feature_lists); i++) {
+ for (i = 0; i < ARRAY_SIZE(feature_lists); i++) {
u32 feat = le32_to_cpu(feature_lists[i].compat ?
g_sbi.feature_compat :
g_sbi.feature_incompat);
- if (feat & feature_lists[i].flag)
+ if (feat & feature_lists[i].flag) {
fprintf(stdout, "%s ", feature_lists[i].name);
+ if (feature_lists[i].lkver > minkver)
+ minkver = feature_lists[i].lkver;
+ }
}
erofs_uuid_unparse_lower(g_sbi.uuid, uuid_str);
- fprintf(stdout, "\nFilesystem UUID: %s\n",
- uuid_str);
+ fprintf(stdout, "\nFilesystem UUID: %s",
+ uuid_str);
+ if ((g_sbi.available_compr_algs >> Z_EROFS_COMPRESSION_LZMA) & 1)
+ minkver = max(minkver, 516U);
+ if ((g_sbi.available_compr_algs >> Z_EROFS_COMPRESSION_DEFLATE) & 1)
+ minkver = max(minkver, 606U);
+ if ((g_sbi.available_compr_algs >> Z_EROFS_COMPRESSION_ZSTD) & 1)
+ minkver = max(minkver, 612U);
+ if (minkver)
+ fprintf(stdout, "\nRequired upstream Linux kernel version: %u.%u\n",
+ minkver / 100, minkver % 100);
}
static void erofsdump_show_file_content(void)
--
2.43.5
More information about the Linux-erofs
mailing list