summaryrefslogtreecommitdiff
path: root/cmds-balance.c
diff options
context:
space:
mode:
Diffstat (limited to 'cmds-balance.c')
-rw-r--r--cmds-balance.c29
1 files changed, 24 insertions, 5 deletions
diff --git a/cmds-balance.c b/cmds-balance.c
index 2c5d2eb1..e73bfcf8 100644
--- a/cmds-balance.c
+++ b/cmds-balance.c
@@ -244,11 +244,30 @@ static int parse_filters(char *filters, struct btrfs_balance_args *args)
"an argument\n");
return 1;
}
- if (parse_u64(value, &args->usage) ||
- args->usage > 100) {
- fprintf(stderr, "Invalid usage argument: %s\n",
- value);
- return 1;
+ if (parse_u64(value, &args->usage)) {
+ if (parse_range_u32(value, &args->usage_min,
+ &args->usage_max)) {
+ fprintf(stderr,
+ "Invalid usage argument: %s\n",
+ value);
+ return 1;
+ }
+ if (args->usage_max > 100) {
+ fprintf(stderr,
+ "Invalid usage argument: %s\n",
+ value);
+ }
+ args->flags &= ~BTRFS_BALANCE_ARGS_USAGE;
+ args->flags |= BTRFS_BALANCE_ARGS_USAGE_RANGE;
+ } else {
+ if (args->usage > 100) {
+ fprintf(stderr,
+ "Invalid usage argument: %s\n",
+ value);
+ return 1;
+ }
+ args->flags &= ~BTRFS_BALANCE_ARGS_USAGE_RANGE;
+ args->flags |= BTRFS_BALANCE_ARGS_USAGE;
}
args->flags |= BTRFS_BALANCE_ARGS_USAGE;
} else if (!strcmp(this_char, "devid")) {