diff options
author | David Sterba <dsterba@suse.com> | 2015-10-10 11:16:50 -0400 |
---|---|---|
committer | Chris Mason <clm@fb.com> | 2015-10-26 22:38:28 -0400 |
commit | 12907fc79818a62a2478f84f7795afa774bf7f9c (patch) | |
tree | c7df6fd783c99feef090a00c38e7268515488430 /include/uapi | |
parent | 2849a854224487bc578b73b64422c3cb3ef93ff5 (diff) |
btrfs: extend balance filter limit to take minimum and maximum
The 'limit' filter is underdesigned, it should have been a range for
[min,max], with some relaxed semantics when one of the bounds is
missing. Besides that, using a full u64 for a single value is a waste of
bytes.
Let's fix both by extending the use of the u64 bytes for the [min,max]
range. This can be done in a backward compatible way, the range will be
interpreted only if the appropriate flag is set
(BTRFS_BALANCE_ARGS_LIMIT_RANGE).
Signed-off-by: David Sterba <dsterba@suse.com>
Signed-off-by: Chris Mason <clm@fb.com>
Diffstat (limited to 'include/uapi')
-rw-r--r-- | include/uapi/linux/btrfs.h | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/include/uapi/linux/btrfs.h b/include/uapi/linux/btrfs.h index b6dec05c7196..11f13108b78b 100644 --- a/include/uapi/linux/btrfs.h +++ b/include/uapi/linux/btrfs.h | |||
@@ -217,7 +217,18 @@ struct btrfs_balance_args { | |||
217 | 217 | ||
218 | __u64 flags; | 218 | __u64 flags; |
219 | 219 | ||
220 | __u64 limit; /* limit number of processed chunks */ | 220 | /* |
221 | * BTRFS_BALANCE_ARGS_LIMIT with value 'limit' | ||
222 | * BTRFS_BALANCE_ARGS_LIMIT_RANGE - the extend version can use minimum | ||
223 | * and maximum | ||
224 | */ | ||
225 | union { | ||
226 | __u64 limit; /* limit number of processed chunks */ | ||
227 | struct { | ||
228 | __u32 limit_min; | ||
229 | __u32 limit_max; | ||
230 | }; | ||
231 | }; | ||
221 | __u64 unused[7]; | 232 | __u64 unused[7]; |
222 | } __attribute__ ((__packed__)); | 233 | } __attribute__ ((__packed__)); |
223 | 234 | ||