diff options
author | David Sterba <dsterba@suse.com> | 2015-10-10 17:16:50 +0200 |
---|---|---|
committer | Chris Mason <clm@fb.com> | 2015-10-27 03:38:28 +0100 |
commit | 12907fc79818a62a2478f84f7795afa774bf7f9c (patch) | |
tree | c7df6fd783c99feef090a00c38e7268515488430 /include/uapi | |
parent | btrfs: fix use after free iterating extrefs (diff) | |
download | linux-12907fc79818a62a2478f84f7795afa774bf7f9c.tar.xz linux-12907fc79818a62a2478f84f7795afa774bf7f9c.zip |
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 { __u64 flags; - __u64 limit; /* limit number of processed chunks */ + /* + * BTRFS_BALANCE_ARGS_LIMIT with value 'limit' + * BTRFS_BALANCE_ARGS_LIMIT_RANGE - the extend version can use minimum + * and maximum + */ + union { + __u64 limit; /* limit number of processed chunks */ + struct { + __u32 limit_min; + __u32 limit_max; + }; + }; __u64 unused[7]; } __attribute__ ((__packed__)); |