[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