[PATCH] erofs-utils: mkfs: error return if meets an unknown extended option
Yifan Zhao
zhaoyifan at sjtu.edu.cn
Sat Sep 9 22:36:50 AEST 2023
Currently mkfs would ignore any unknown extended option, which keeps
silent if a mistyped option is given. Return failure in this case allows
users to catch their errors more easily.
---
mkfs/main.c | 27 ++++++++++++++++-----------
1 file changed, 16 insertions(+), 11 deletions(-)
diff --git a/mkfs/main.c b/mkfs/main.c
index 607c883..4caf267 100644
--- a/mkfs/main.c
+++ b/mkfs/main.c
@@ -186,55 +186,55 @@ static int parse_extended_opts(const char *opts)
cfg.c_legacy_compress = true;
}
- if (MATCH_EXTENTED_OPT("force-inode-compact", token, keylen)) {
+ else if (MATCH_EXTENTED_OPT("force-inode-compact", token, keylen)) {
if (vallen)
return -EINVAL;
cfg.c_force_inodeversion = FORCE_INODE_COMPACT;
cfg.c_ignore_mtime = true;
}
- if (MATCH_EXTENTED_OPT("force-inode-extended", token, keylen)) {
+ else if (MATCH_EXTENTED_OPT("force-inode-extended", token, keylen)) {
if (vallen)
return -EINVAL;
cfg.c_force_inodeversion = FORCE_INODE_EXTENDED;
}
- if (MATCH_EXTENTED_OPT("nosbcrc", token, keylen)) {
+ else if (MATCH_EXTENTED_OPT("nosbcrc", token, keylen)) {
if (vallen)
return -EINVAL;
erofs_sb_clear_sb_chksum(&sbi);
}
- if (MATCH_EXTENTED_OPT("noinline_data", token, keylen)) {
+ else if (MATCH_EXTENTED_OPT("noinline_data", token, keylen)) {
if (vallen)
return -EINVAL;
cfg.c_noinline_data = true;
}
- if (MATCH_EXTENTED_OPT("force-inode-blockmap", token, keylen)) {
+ else if (MATCH_EXTENTED_OPT("force-inode-blockmap", token, keylen)) {
if (vallen)
return -EINVAL;
cfg.c_force_chunkformat = FORCE_INODE_BLOCK_MAP;
}
- if (MATCH_EXTENTED_OPT("force-chunk-indexes", token, keylen)) {
+ else if (MATCH_EXTENTED_OPT("force-chunk-indexes", token, keylen)) {
if (vallen)
return -EINVAL;
cfg.c_force_chunkformat = FORCE_INODE_CHUNK_INDEXES;
}
- if (MATCH_EXTENTED_OPT("ztailpacking", token, keylen)) {
+ else if (MATCH_EXTENTED_OPT("ztailpacking", token, keylen)) {
if (vallen)
return -EINVAL;
cfg.c_ztailpacking = true;
}
- if (MATCH_EXTENTED_OPT("all-fragments", token, keylen)) {
+ else if (MATCH_EXTENTED_OPT("all-fragments", token, keylen)) {
cfg.c_all_fragments = true;
goto handle_fragment;
}
- if (MATCH_EXTENTED_OPT("fragments", token, keylen)) {
+ else if (MATCH_EXTENTED_OPT("fragments", token, keylen)) {
char *endptr;
u64 i;
@@ -251,17 +251,22 @@ handle_fragment:
}
}
- if (MATCH_EXTENTED_OPT("dedupe", token, keylen)) {
+ else if (MATCH_EXTENTED_OPT("dedupe", token, keylen)) {
if (vallen)
return -EINVAL;
cfg.c_dedupe = true;
}
- if (MATCH_EXTENTED_OPT("xattr-name-filter", token, keylen)) {
+ else if (MATCH_EXTENTED_OPT("xattr-name-filter", token, keylen)) {
if (vallen)
return -EINVAL;
cfg.c_xattr_name_filter = !clear;
}
+
+ else {
+ erofs_err("unknown extended option %s", token);
+ return -EINVAL;
+ }
}
return 0;
}
--
2.42.0
More information about the Linux-erofs
mailing list