[PATCH 0/3 v2] Add btrfs ioctl support
Jeff Mahoney
jeffm at suse.com
Thu Apr 28 15:26:58 UTC 2016
Hi all -
This short series adds support for the btrfs ioctls. Its structures
make heavy use of __u64 so rather than cast every single member, I added
new PRI* macros to print them properly. It also uses 64-bit flags and
defines values that are larger than can be described by a 32-bit
variable, so I've converted xlat to use a 64-bit val field internally
and added 64-bit versions to API functions as needed.
Thanks, Dmitry, for the review.
Changes since v2:
- Use print_quoted_string to print strings from the user
- Many corrections of output text
- Load elements in user-sized arrays individually to avoid arbitrary
user-specified memory allocations
- Don't print arrays with user defined lengths in abbrev mode
- Only print max_strlen elements in arrays in verbose mode
- Added new ioctls added in the Linux 4.6 cycle
- Added file_ioctl.c to contain generic file ioctls
- BTRFS_IOC_CLONE -> FICLONE
- BTRFS_IOC_CLONE_RANGE -> FICLONERANGE
- BTRFS_IOC_FILE_EXTENT_SAME -> FIDEDUPERANGE
- Proper printing of flags when none are set
- Broke out complex printing into separate routines
- Use "UINT64_MAX" instead of "-1" to print -1ULL for objectids
Changes since v1:
- Change addflags, printflags, and sprintflags to use unsigned int vals.
- Introduce 64-bit variants for all three.
- Convert all three to wrappers around the 64-bit versions
- Use pointers to uint64_ts instead of casting ints for bsearch
- Use SIZEOF_LONG instead of BITS_PER_LONG
- Fix missing comma for ioctls that return a signed int value
- Don't test for exiting(tcp) if we've already returned a nonzero value
in entering mode
- Use stdint types when defining structs
- Don't define separate macros for testing structs
- Add UUID_STRING_SIZE macro
- Don't test for error if umove* will be called immediately afterward
- Various style fixes
- Don't assume btrfs.h will be available
Thanks,
-Jeff
Jeff Mahoney (3):
util: change type of struct xlat.val to uint64_t
defs: define PRI__[uxs]64 to print __[su]64 values
Add btrfs ioctl support.
Makefile.am | 1 +
btrfs.c | 1219 ++++++++++++++++++++++++++++++++++++
configure.ac | 8 +
defs.h | 38 +-
ioctl.c | 4 +
util.c | 46 +-
xlat/btrfs_balance_flags.in | 12 +
xlat/btrfs_defrag_flags.in | 2 +
xlat/btrfs_dev_replace_cmds.in | 3 +
xlat/btrfs_dev_replace_results.in | 4 +
xlat/btrfs_dev_replace_state.in | 5 +
xlat/btrfs_dev_stats_flags.in | 1 +
xlat/btrfs_dev_stats_values.in | 11 +
xlat/btrfs_features_compat.in | 0
xlat/btrfs_features_compat_ro.in | 1 +
xlat/btrfs_features_incompat.in | 10 +
xlat/btrfs_key_types.in | 40 ++
xlat/btrfs_qgroup_ctl_cmds.in | 3 +
xlat/btrfs_qgroup_inherit_flags.in | 1 +
xlat/btrfs_qgroup_limit_flags.in | 6 +
xlat/btrfs_qgroup_status_flags.in | 2 +
xlat/btrfs_scrub_flags.in | 1 +
xlat/btrfs_snap_flags_v2.in | 3 +
xlat/btrfs_space_info_flags.in | 11 +
xlat/btrfs_tree_objectids.in | 12 +
25 files changed, 1423 insertions(+), 21 deletions(-)
create mode 100644 btrfs.c
create mode 100644 xlat/btrfs_balance_flags.in
create mode 100644 xlat/btrfs_defrag_flags.in
create mode 100644 xlat/btrfs_dev_replace_cmds.in
create mode 100644 xlat/btrfs_dev_replace_results.in
create mode 100644 xlat/btrfs_dev_replace_state.in
create mode 100644 xlat/btrfs_dev_stats_flags.in
create mode 100644 xlat/btrfs_dev_stats_values.in
create mode 100644 xlat/btrfs_features_compat.in
create mode 100644 xlat/btrfs_features_compat_ro.in
create mode 100644 xlat/btrfs_features_incompat.in
create mode 100644 xlat/btrfs_key_types.in
create mode 100644 xlat/btrfs_qgroup_ctl_cmds.in
create mode 100644 xlat/btrfs_qgroup_inherit_flags.in
create mode 100644 xlat/btrfs_qgroup_limit_flags.in
create mode 100644 xlat/btrfs_qgroup_status_flags.in
create mode 100644 xlat/btrfs_scrub_flags.in
create mode 100644 xlat/btrfs_snap_flags_v2.in
create mode 100644 xlat/btrfs_space_info_flags.in
create mode 100644 xlat/btrfs_tree_objectids.in
--
1.8.5.6
More information about the Strace-devel
mailing list