This provides default feature set by version, for mkfs.btrfs through the new option '-O comp=<x.y>|<x.y.z>', where x.y.z is the minimum kernel version that should be supported.
Signed-off-by: Anand Jain <anand.j...@oracle.com> --- mkfs.c | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/mkfs.c b/mkfs.c index 6cb998b..34ba77d 100644 --- a/mkfs.c +++ b/mkfs.c @@ -324,7 +324,9 @@ static void print_usage(int ret) fprintf(stderr, "\t-s|--sectorsize SIZE min block allocation (may not mountable by current kernel)\n"); fprintf(stderr, "\t-r|--rootdir DIR the source directory\n"); fprintf(stderr, "\t-K|--nodiscard do not perform whole device TRIM\n"); - fprintf(stderr, "\t-O|--features LIST comma separated list of filesystem features, use '-O list-all' to list features\n"); + fprintf(stderr, "\t-O|--features LIST comma separated list of filesystem features\n"); + fprintf(stderr, "\t use '-O list-all' to list features\n"); + fprintf(stderr, "\t use '-O comp=<x.y>|<x.y.z>' x.y.z is the minimum kernel version to be supported\n"); fprintf(stderr, "\t-U|--uuid UUID specify the filesystem UUID\n"); fprintf(stderr, "\t-q|--quiet no messages except errors\n"); fprintf(stderr, "\t-V|--version print the mkfs.btrfs version and exit\n"); @@ -1439,7 +1441,24 @@ int main(int ac, char **av) case 'O': { char *orig = strdup(optarg); char *tmp = orig; - + char *tok; + + tok = strtok(tmp, "="); + if (!strcmp(tok, "comp")) { + tok = strtok(NULL, "="); + if (!tok) { + fprintf(stderr, + "Provide a version for 'comp=' option, ref to 'mkfs.btrfs -O list-all'\n"); + exit(1); + } + if (btrfs_features_allowed_by_version(tok, &features) < 0) { + fprintf(stderr, "Wrong version format: '%s'\n", tok); + exit(1); + } + features &= BTRFS_MKFS_DEFAULT_FEATURES; + goto cont; + } + tmp = orig; tmp = btrfs_parse_fs_features(tmp, &features); if (tmp) { fprintf(stderr, @@ -1448,6 +1467,7 @@ int main(int ac, char **av) free(orig); exit(1); } +cont: free(orig); if (features & BTRFS_FEATURE_LIST_ALL) { btrfs_list_all_fs_features(0); -- 2.6.2 -- To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html