diff options
author | Gabríel Arthúr Pétursson <gabriel@system.is> | 2015-09-28 22:33:04 +0000 |
---|---|---|
committer | David Sterba <dsterba@suse.com> | 2016-01-12 15:01:04 +0100 |
commit | 0826a8ddb90e577c5c359d8bca2571f167029f7e (patch) | |
tree | 43cad92e0e3f810d3df3c3d07edb421f1723d5e4 /cmds-balance.c | |
parent | 7dff5c9c9b980e9848e1716434606eb01c16914e (diff) | |
download | btrfs-progs-0826a8ddb90e577c5c359d8bca2571f167029f7e.tar.gz |
btrfs-progs: balance: add stripes filter
Add new balance filter 'stripes=<range>' to process only chunks that are
spread accross given number of chunks.
The range minimum and maximum are inclusive.
Signed-off-by: Gabríel Arthúr Pétursson <gabriel@system.is>
[ reworked a bit to use the range helpers, dropped the single value
for stripes ]
Signed-off-by: David Sterba <dsterba@suse.com>
Diffstat (limited to 'cmds-balance.c')
-rw-r--r-- | cmds-balance.c | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/cmds-balance.c b/cmds-balance.c index 1715f36..2453101 100644 --- a/cmds-balance.c +++ b/cmds-balance.c @@ -319,6 +319,18 @@ static int parse_filters(char *filters, struct btrfs_balance_args *args) args->flags &= ~BTRFS_BALANCE_ARGS_LIMIT_RANGE; args->flags |= BTRFS_BALANCE_ARGS_LIMIT; } + } else if (!strcmp(this_char, "stripes")) { + if (!value || !*value) { + fprintf(stderr, + "the stripes filter requires an argument\n"); + return 1; + } + if (parse_range_u32(value, &args->stripes_min, + &args->stripes_max)) { + fprintf(stderr, "Invalid stripes argument\n"); + return 1; + } + args->flags |= BTRFS_BALANCE_ARGS_STRIPES_RANGE; } else { fprintf(stderr, "Unrecognized balance option '%s'\n", this_char); @@ -359,6 +371,10 @@ static void dump_balance_args(struct btrfs_balance_args *args) printf(", limit="); print_range_u32(args->limit_min, args->limit_max); } + if (args->flags & BTRFS_BALANCE_ARGS_STRIPES_RANGE) { + printf(", stripes="); + print_range_u32(args->stripes_min, args->stripes_max); + } printf("\n"); } |