btrfs-progs: check option conflict for btrfs-convert
authorGui Hecheng <guihc.fnst@cn.fujitsu.com>
Thu, 7 Aug 2014 02:35:57 +0000 (10:35 +0800)
committerDavid Sterba <dsterba@suse.cz>
Fri, 22 Aug 2014 13:07:04 +0000 (15:07 +0200)
The -d, -i, -n options make no sense to rollback.
Check the improper usages such as:
# btrfs-convert -r -d <dev>

Signed-off-by: Gui Hecheng <guihc.fnst@cn.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.cz>
btrfs-convert.c

index 952e3e6..b30b91b 100644 (file)
@@ -2699,6 +2699,7 @@ int main(int argc, char *argv[])
        int noxattr = 0;
        int datacsum = 1;
        int rollback = 0;
+       int usage_error = 0;
        char *file;
        while(1) {
                int c = getopt(argc, argv, "dinr");
@@ -2729,6 +2730,17 @@ int main(int argc, char *argv[])
                return 1;
        }
 
+       if (rollback && (!datacsum || noxattr || !packing)) {
+               fprintf(stderr,
+                       "Usage error: -d, -i, -n options do not apply to rollback\n");
+               usage_error++;
+       }
+
+       if (usage_error) {
+               print_usage();
+               return 1;
+       }
+
        file = argv[optind];
        ret = check_mounted(file);
        if (ret < 0) {