From: Junling Zheng Date: Sun, 8 Apr 2018 04:09:13 +0000 (+0800) Subject: mkfs.f2fs: support multiple features with one "-O" X-Git-Tag: v1.12.0~59 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=28c3b13e7d12df7e2cf0645b2884bfea55707efb;p=platform%2Fupstream%2Ff2fs-tools.git mkfs.f2fs: support multiple features with one "-O" Now one "-O" option can support multiple features separated by a comma or blank, such as: feature1,feature2,... or "feature1 feature2 ..." Signed-off-by: Junling Zheng Reviewed-by: Chao Yu Signed-off-by: Jaegeuk Kim --- diff --git a/man/mkfs.f2fs.8 b/man/mkfs.f2fs.8 index 442c0ea..29dd68f 100644 --- a/man/mkfs.f2fs.8 +++ b/man/mkfs.f2fs.8 @@ -112,7 +112,8 @@ is hidden to users, and utilized by F2FS cleaner. If not specified, the best number will be assigned automatically accoring to the partition size. .TP .BI \-O " feature-list" -Specify a feature list in order f2fs filesystem will supports. +Specify a feature list like feature1[feature2,feature3,...] in order f2fs +filesystem will supports. e.g "encrypt" and so on. .TP .BI \-q diff --git a/mkfs/f2fs_format_main.c b/mkfs/f2fs_format_main.c index 449a0ed..a6e4474 100644 --- a/mkfs/f2fs_format_main.c +++ b/mkfs/f2fs_format_main.c @@ -51,7 +51,7 @@ static void mkfs_usage() MSG(0, " -l label\n"); MSG(0, " -m support zoned block device [default:0]\n"); MSG(0, " -o overprovision ratio [default:5]\n"); - MSG(0, " -O [feature list] e.g. \"encrypt\"\n"); + MSG(0, " -O feature1[feature2,feature3,...] e.g. \"encrypt\"\n"); MSG(0, " -q quiet mode\n"); MSG(0, " -s # of segments per section [default:1]\n"); MSG(0, " -S sparse mode\n"); @@ -81,10 +81,8 @@ static void f2fs_show_info() MSG(0, "Info: Trim is %s\n", c.trim ? "enabled": "disabled"); } -static void parse_feature(const char *features) +static void set_feature_bits(char *features) { - while (*features == ' ') - features++; if (!strcmp(features, "encrypt")) { c.feature |= cpu_to_le32(F2FS_FEATURE_ENCRYPT); } else if (!strcmp(features, "verity")) { @@ -109,6 +107,33 @@ static void parse_feature(const char *features) } } +static void parse_feature(const char *features) +{ + char *buf, *sub, *next; + + buf = calloc(strlen(features) + 1, sizeof(char)); + ASSERT(buf); + strncpy(buf, features, strlen(features) + 1); + + for (sub = buf; sub && *sub; sub = next ? next + 1 : NULL) { + /* Skip the beginning blanks */ + while (*sub && *sub == ' ') + sub++; + next = sub; + /* Skip a feature word */ + while (*next && *next != ' ' && *next != ',') + next++; + + if (*next == 0) + next = NULL; + else + *next = 0; + + set_feature_bits(sub); + } + free(buf); +} + static void f2fs_parse_options(int argc, char *argv[]) { static const char *option_string = "qa:c:d:e:E:il:mo:O:s:S:z:t:fw:";