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 | ||
