Add btrfs support
Fix MK_ARRAY() -----BEGIN PGP SIGNATURE----- iQJGBAABCAAwFiEEzS913cjjpNwuT1Fz8ww4vT8vvjwFAl9QKi0SHGxhdXJlbnRA dml2aWVyLmV1AAoJEPMMOL0/L748fnMP/iOEIiotDBW7TQ6f2iOejvlSOsYN3Wtz 735srtaD5og/0oaYH+nQ9kVV0cY6ZObe2KA9JeyodogkhuwzXHPjKlKWHBNGUMtB fdur65/1I9tNQDW+FfVc+4uT3Vk3lBoHEMCmmtVVRcB+coa7kAXtntqAQPAkjmow lA7WeGg1sIKVd1Hg+gM9qkboxqi9t90sbd+bhhHy2lPcCJvGFIWFRcgwwvJzIP49 K6h551/zXe7mLQ1dG4dPvNHnpnS+0HhgVzUGuERjx1wNgoQN1adKPO8R3aQl1mr7 ZIPWmZw6blw6neG3rMYEaSvfS+AItPCxE5zlpsJibni34sYHRIrukDhtxj1UMrJX mZmJgFQthUbd1vGYBTJNy6gb0IHc8TyrIhsjclSWDcdZytaEKALm6OmgEqT8VCVA KvWg7gnxi2nuCHWCaGjslBSiH7PjtzeY5g4AOeEYGfi3IBaRYdUDdB4jr1x7zfqT 66ROoi9Uwg5+vnlRenTFX3f0gXFXuqpIJf4AB8HXv3R6dDw+lpeCZM1MFOtNOFCK hKrRF/Jz+g69DqvFbM6L6qSEjsco0PoXVMscyqKJOV8XZdycf3wtEbFofLiV6cPH TyiebOKQjOGszxmQVXkdC7LD8h+jI6ZJb1ox2j9boXBVNTNUpV3ydVDnErfwKNxs 1Xx8F/bOVLlX =Pr4V -----END PGP SIGNATURE----- Merge remote-tracking branch 'remotes/vivier2/tags/linux-user-for-5.2-pull-request' into staging Add btrfs support Fix MK_ARRAY() # gpg: Signature made Thu 03 Sep 2020 00:26:37 BST # gpg: using RSA key CD2F75DDC8E3A4DC2E4F5173F30C38BD3F2FBE3C # gpg: issuer "laurent@vivier.eu" # gpg: Good signature from "Laurent Vivier <lvivier@redhat.com>" [full] # gpg: aka "Laurent Vivier <laurent@vivier.eu>" [full] # gpg: aka "Laurent Vivier (Red Hat) <lvivier@redhat.com>" [full] # Primary key fingerprint: CD2F 75DD C8E3 A4DC 2E4F 5173 F30C 38BD 3F2F BE3C * remotes/vivier2/tags/linux-user-for-5.2-pull-request: linux-user: Add support for btrfs ioctls used to scrub a filesystem linux-user: Add support for btrfs ioctls used to manage quota linux-user: Add support for two btrfs ioctls used for subvolume linux-user: Add support for a group of btrfs inode ioctls linux-user: Add support for btrfs ioctls used to get/set features linux-user: Add support for btrfs ioctls used to manipulate with devices linux-user: Add support for a group of btrfs ioctls used for snapshots linux-user: Add support for a group of btrfs ioctls used for subvolumes linux-user: fix implicit conversion from enumeration type error Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
commit
1133ce5ec9
9
configure
vendored
9
configure
vendored
@ -4920,6 +4920,12 @@ if check_include sys/kcov.h ; then
|
||||
kcov=yes
|
||||
fi
|
||||
|
||||
# check for btrfs filesystem support (kernel must be 3.9+)
|
||||
btrfs=no
|
||||
if check_include linux/btrfs.h ; then
|
||||
btrfs=yes
|
||||
fi
|
||||
|
||||
# If we're making warnings fatal, apply this to Sphinx runs as well
|
||||
sphinx_werror=""
|
||||
if test "$werror" = "yes"; then
|
||||
@ -6898,6 +6904,9 @@ fi
|
||||
if test "$kcov" = "yes" ; then
|
||||
echo "CONFIG_KCOV=y" >> $config_host_mak
|
||||
fi
|
||||
if test "$btrfs" = "yes" ; then
|
||||
echo "CONFIG_BTRFS=y" >> $config_host_mak
|
||||
fi
|
||||
if test "$inotify" = "yes" ; then
|
||||
echo "CONFIG_INOTIFY=y" >> $config_host_mak
|
||||
fi
|
||||
|
@ -42,7 +42,7 @@ typedef enum argtype {
|
||||
} argtype;
|
||||
|
||||
#define MK_PTR(type) TYPE_PTR, type
|
||||
#define MK_ARRAY(type, size) TYPE_ARRAY, size, type
|
||||
#define MK_ARRAY(type, size) TYPE_ARRAY, (int)(size), type
|
||||
#define MK_STRUCT(id) TYPE_STRUCT, id
|
||||
|
||||
#define THUNK_TARGET 0
|
||||
|
@ -174,6 +174,130 @@
|
||||
IOCTL(FS_IOC32_GETVERSION, IOC_R, MK_PTR(TYPE_INT))
|
||||
IOCTL(FS_IOC32_SETVERSION, IOC_W, MK_PTR(TYPE_INT))
|
||||
|
||||
#ifdef BTRFS_IOC_SNAP_CREATE
|
||||
IOCTL(BTRFS_IOC_SNAP_CREATE, IOC_W,
|
||||
MK_PTR(MK_STRUCT(STRUCT_btrfs_ioctl_vol_args)))
|
||||
#endif
|
||||
#ifdef BTRFS_IOC_SCAN_DEV
|
||||
IOCTL(BTRFS_IOC_SCAN_DEV, IOC_W,
|
||||
MK_PTR(MK_STRUCT(STRUCT_btrfs_ioctl_vol_args)))
|
||||
#endif
|
||||
#ifdef BTRFS_IOC_FORGET_DEV
|
||||
IOCTL(BTRFS_IOC_FORGET_DEV, IOC_W,
|
||||
MK_PTR(MK_STRUCT(STRUCT_btrfs_ioctl_vol_args)))
|
||||
#endif
|
||||
#ifdef BTRFS_IOC_ADD_DEV
|
||||
IOCTL(BTRFS_IOC_ADD_DEV, IOC_W,
|
||||
MK_PTR(MK_STRUCT(STRUCT_btrfs_ioctl_vol_args)))
|
||||
#endif
|
||||
#ifdef BTRFS_IOC_RM_DEV
|
||||
IOCTL(BTRFS_IOC_RM_DEV, IOC_W,
|
||||
MK_PTR(MK_STRUCT(STRUCT_btrfs_ioctl_vol_args)))
|
||||
#endif
|
||||
#ifdef BTRFS_IOC_SUBVOL_CREATE
|
||||
IOCTL(BTRFS_IOC_SUBVOL_CREATE, IOC_W,
|
||||
MK_PTR(MK_STRUCT(STRUCT_btrfs_ioctl_vol_args)))
|
||||
#endif
|
||||
#ifdef BTRFS_IOC_SNAP_DESTROY
|
||||
IOCTL(BTRFS_IOC_SNAP_DESTROY, IOC_W,
|
||||
MK_PTR(MK_STRUCT(STRUCT_btrfs_ioctl_vol_args)))
|
||||
#endif
|
||||
#ifdef BTRFS_IOC_INO_LOOKUP
|
||||
IOCTL(BTRFS_IOC_INO_LOOKUP, IOC_RW,
|
||||
MK_PTR(MK_STRUCT(STRUCT_btrfs_ioctl_ino_lookup_args)))
|
||||
#endif
|
||||
#ifdef BTRFS_IOC_DEFAULT_SUBVOL
|
||||
IOCTL(BTRFS_IOC_DEFAULT_SUBVOL, IOC_W, MK_PTR(TYPE_ULONGLONG))
|
||||
#endif
|
||||
#ifdef BTRFS_IOC_SUBVOL_GETFLAGS
|
||||
IOCTL(BTRFS_IOC_SUBVOL_GETFLAGS, IOC_R, MK_PTR(TYPE_ULONGLONG))
|
||||
#endif
|
||||
#ifdef BTRFS_IOC_SUBVOL_SETFLAGS
|
||||
IOCTL(BTRFS_IOC_SUBVOL_SETFLAGS, IOC_W, MK_PTR(TYPE_ULONGLONG))
|
||||
#endif
|
||||
#ifdef BTRFS_IOC_SCRUB
|
||||
IOCTL(BTRFS_IOC_SCRUB, IOC_RW,
|
||||
MK_PTR(MK_STRUCT(STRUCT_btrfs_ioctl_scrub_args)))
|
||||
#endif
|
||||
#ifdef BTRFS_IOC_SCRUB_CANCEL
|
||||
IOCTL(BTRFS_IOC_SCRUB_CANCEL, 0, TYPE_NULL)
|
||||
#endif
|
||||
#ifdef BTRFS_IOC_SCRUB_PROGRESS
|
||||
IOCTL(BTRFS_IOC_SCRUB_PROGRESS, IOC_RW,
|
||||
MK_PTR(MK_STRUCT(STRUCT_btrfs_ioctl_scrub_args)))
|
||||
#endif
|
||||
#ifdef BTRFS_IOC_DEV_INFO
|
||||
IOCTL(BTRFS_IOC_DEV_INFO, IOC_RW,
|
||||
MK_PTR(MK_STRUCT(STRUCT_btrfs_ioctl_dev_info_args)))
|
||||
#endif
|
||||
#ifdef BTRFS_IOC_INO_PATHS
|
||||
IOCTL(BTRFS_IOC_INO_PATHS, IOC_RW,
|
||||
MK_PTR(MK_STRUCT(STRUCT_btrfs_ioctl_ino_path_args)))
|
||||
#endif
|
||||
#ifdef BTRFS_IOC_LOGICAL_INO
|
||||
IOCTL(BTRFS_IOC_LOGICAL_INO, IOC_RW,
|
||||
MK_PTR(MK_STRUCT(STRUCT_btrfs_ioctl_logical_ino_args)))
|
||||
#endif
|
||||
#ifdef BTRFS_IOC_QUOTA_CTL
|
||||
IOCTL(BTRFS_IOC_QUOTA_CTL, IOC_RW,
|
||||
MK_PTR(MK_STRUCT(STRUCT_btrfs_ioctl_quota_ctl_args)))
|
||||
#endif
|
||||
#ifdef BTRFS_IOC_QGROUP_ASSIGN
|
||||
IOCTL(BTRFS_IOC_QGROUP_ASSIGN, IOC_W,
|
||||
MK_PTR(MK_STRUCT(STRUCT_btrfs_ioctl_qgroup_assign_args)))
|
||||
#endif
|
||||
#ifdef BTRFS_IOC_QGROUP_CREATE
|
||||
IOCTL(BTRFS_IOC_QGROUP_CREATE, IOC_W,
|
||||
MK_PTR(MK_STRUCT(STRUCT_btrfs_ioctl_qgroup_create_args)))
|
||||
#endif
|
||||
#ifdef BTRFS_IOC_QGROUP_LIMIT
|
||||
IOCTL(BTRFS_IOC_QGROUP_LIMIT, IOC_R,
|
||||
MK_PTR(MK_STRUCT(STRUCT_btrfs_ioctl_qgroup_limit_args)))
|
||||
#endif
|
||||
#ifdef BTRFS_IOC_QUOTA_RESCAN
|
||||
IOCTL(BTRFS_IOC_QUOTA_RESCAN, IOC_W,
|
||||
MK_PTR(MK_STRUCT(STRUCT_btrfs_ioctl_quota_rescan_args)))
|
||||
#endif
|
||||
#ifdef BTRFS_IOC_QUOTA_RESCAN_STATUS
|
||||
IOCTL(BTRFS_IOC_QUOTA_RESCAN_STATUS, IOC_R,
|
||||
MK_PTR(MK_STRUCT(STRUCT_btrfs_ioctl_quota_rescan_args)))
|
||||
#endif
|
||||
#ifdef BTRFS_IOC_QUOTA_RESCAN_WAIT
|
||||
IOCTL(BTRFS_IOC_QUOTA_RESCAN_WAIT, 0, TYPE_NULL)
|
||||
#endif
|
||||
#ifdef BTRFS_IOC_GET_DEV_STATS
|
||||
IOCTL(BTRFS_IOC_GET_DEV_STATS, IOC_RW,
|
||||
MK_PTR(MK_STRUCT(STRUCT_btrfs_ioctl_get_dev_stats)))
|
||||
#endif
|
||||
#ifdef BTRFS_IOC_GET_FEATURES
|
||||
IOCTL(BTRFS_IOC_GET_FEATURES, IOC_R,
|
||||
MK_PTR(MK_STRUCT(STRUCT_btrfs_ioctl_feature_flags)))
|
||||
#endif
|
||||
#ifdef BTRFS_IOC_SET_FEATURES
|
||||
IOCTL(BTRFS_IOC_SET_FEATURES, IOC_W,
|
||||
MK_PTR(MK_ARRAY(MK_STRUCT(STRUCT_btrfs_ioctl_feature_flags), 2)))
|
||||
#endif
|
||||
#ifdef BTRFS_IOC_GET_SUPPORTED_FEATURES
|
||||
IOCTL(BTRFS_IOC_GET_SUPPORTED_FEATURES, IOC_R,
|
||||
MK_PTR(MK_ARRAY(MK_STRUCT(STRUCT_btrfs_ioctl_feature_flags), 3)))
|
||||
#endif
|
||||
#ifdef BTRFS_IOC_LOGICAL_INO_V2
|
||||
IOCTL(BTRFS_IOC_LOGICAL_INO_V2, IOC_RW,
|
||||
MK_PTR(MK_STRUCT(STRUCT_btrfs_ioctl_logical_ino_args)))
|
||||
#endif
|
||||
#ifdef BTRFS_IOC_GET_SUBVOL_INFO
|
||||
IOCTL(BTRFS_IOC_GET_SUBVOL_INFO, IOC_R,
|
||||
MK_PTR(MK_STRUCT(STRUCT_btrfs_ioctl_get_subvol_info_args)))
|
||||
#endif
|
||||
#ifdef BTRFS_IOC_GET_SUBVOL_ROOTREF
|
||||
IOCTL(BTRFS_IOC_GET_SUBVOL_ROOTREF, IOC_RW,
|
||||
MK_PTR(MK_STRUCT(STRUCT_btrfs_ioctl_get_subvol_rootref_args)))
|
||||
#endif
|
||||
#ifdef BTRFS_IOC_INO_LOOKUP_USER
|
||||
IOCTL(BTRFS_IOC_INO_LOOKUP_USER, IOC_RW,
|
||||
MK_PTR(MK_STRUCT(STRUCT_btrfs_ioctl_ino_lookup_user_args)))
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_USBFS
|
||||
/* USB ioctls */
|
||||
IOCTL(USBDEVFS_CONTROL, IOC_RW,
|
||||
|
@ -112,6 +112,9 @@
|
||||
#include <linux/if_alg.h>
|
||||
#include <linux/rtc.h>
|
||||
#include <sound/asound.h>
|
||||
#ifdef CONFIG_BTRFS
|
||||
#include <linux/btrfs.h>
|
||||
#endif
|
||||
#ifdef HAVE_DRM_H
|
||||
#include <libdrm/drm.h>
|
||||
#include <libdrm/i915_drm.h>
|
||||
|
@ -1005,6 +1005,43 @@ struct target_rtc_pll_info {
|
||||
#define TARGET_FS_IOC32_GETVERSION TARGET_IOR('v', 1, int)
|
||||
#define TARGET_FS_IOC32_SETVERSION TARGET_IOW('v', 2, int)
|
||||
|
||||
/* btrfs ioctls */
|
||||
#define TARGET_BTRFS_IOC_SNAP_CREATE TARGET_IOWU(BTRFS_IOCTL_MAGIC, 1)
|
||||
#define TARGET_BTRFS_IOC_SCAN_DEV TARGET_IOWU(BTRFS_IOCTL_MAGIC, 4)
|
||||
#define TARGET_BTRFS_IOC_FORGET_DEV TARGET_IOWU(BTRFS_IOCTL_MAGIC, 5)
|
||||
#define TARGET_BTRFS_IOC_ADD_DEV TARGET_IOWU(BTRFS_IOCTL_MAGIC, 10)
|
||||
#define TARGET_BTRFS_IOC_RM_DEV TARGET_IOWU(BTRFS_IOCTL_MAGIC, 11)
|
||||
#define TARGET_BTRFS_IOC_SUBVOL_CREATE TARGET_IOWU(BTRFS_IOCTL_MAGIC, 14)
|
||||
#define TARGET_BTRFS_IOC_SNAP_DESTROY TARGET_IOWU(BTRFS_IOCTL_MAGIC, 15)
|
||||
#define TARGET_BTRFS_IOC_INO_LOOKUP TARGET_IOWRU(BTRFS_IOCTL_MAGIC, 18)
|
||||
#define TARGET_BTRFS_IOC_DEFAULT_SUBVOL TARGET_IOW(BTRFS_IOCTL_MAGIC, 19,\
|
||||
abi_ullong)
|
||||
#define TARGET_BTRFS_IOC_SUBVOL_GETFLAGS TARGET_IOR(BTRFS_IOCTL_MAGIC, 25,\
|
||||
abi_ullong)
|
||||
#define TARGET_BTRFS_IOC_SUBVOL_SETFLAGS TARGET_IOW(BTRFS_IOCTL_MAGIC, 26,\
|
||||
abi_ullong)
|
||||
#define TARGET_BTRFS_IOC_SCRUB TARGET_IOWRU(BTRFS_IOCTL_MAGIC, 27)
|
||||
#define TARGET_BTRFS_IOC_SCRUB_CANCEL TARGET_IO(BTRFS_IOCTL_MAGIC, 28)
|
||||
#define TARGET_BTRFS_IOC_SCRUB_PROGRESS TARGET_IOWRU(BTRFS_IOCTL_MAGIC, 29)
|
||||
#define TARGET_BTRFS_IOC_DEV_INFO TARGET_IOWRU(BTRFS_IOCTL_MAGIC, 30)
|
||||
#define TARGET_BTRFS_IOC_INO_PATHS TARGET_IOWRU(BTRFS_IOCTL_MAGIC, 35)
|
||||
#define TARGET_BTRFS_IOC_LOGICAL_INO TARGET_IOWRU(BTRFS_IOCTL_MAGIC, 36)
|
||||
#define TARGET_BTRFS_IOC_QUOTA_CTL TARGET_IOWRU(BTRFS_IOCTL_MAGIC, 40)
|
||||
#define TARGET_BTRFS_IOC_QGROUP_ASSIGN TARGET_IOWU(BTRFS_IOCTL_MAGIC, 41)
|
||||
#define TARGET_BTRFS_IOC_QGROUP_CREATE TARGET_IOWU(BTRFS_IOCTL_MAGIC, 42)
|
||||
#define TARGET_BTRFS_IOC_QGROUP_LIMIT TARGET_IORU(BTRFS_IOCTL_MAGIC, 43)
|
||||
#define TARGET_BTRFS_IOC_QUOTA_RESCAN TARGET_IOWU(BTRFS_IOCTL_MAGIC, 44)
|
||||
#define TARGET_BTRFS_IOC_QUOTA_RESCAN_STATUS TARGET_IORU(BTRFS_IOCTL_MAGIC, 45)
|
||||
#define TARGET_BTRFS_IOC_QUOTA_RESCAN_WAIT TARGET_IO(BTRFS_IOCTL_MAGIC, 46)
|
||||
#define TARGET_BTRFS_IOC_GET_DEV_STATS TARGET_IOWRU(BTRFS_IOCTL_MAGIC, 52)
|
||||
#define TARGET_BTRFS_IOC_GET_FEATURES TARGET_IORU(BTRFS_IOCTL_MAGIC, 57)
|
||||
#define TARGET_BTRFS_IOC_SET_FEATURES TARGET_IOWU(BTRFS_IOCTL_MAGIC, 57)
|
||||
#define TARGET_BTRFS_IOC_GET_SUPPORTED_FEATURES TARGET_IORU(BTRFS_IOCTL_MAGIC, 57)
|
||||
#define TARGET_BTRFS_IOC_LOGICAL_INO_V2 TARGET_IOWRU(BTRFS_IOCTL_MAGIC, 59)
|
||||
#define TARGET_BTRFS_IOC_GET_SUBVOL_INFO TARGET_IORU(BTRFS_IOCTL_MAGIC, 60)
|
||||
#define TARGET_BTRFS_IOC_GET_SUBVOL_ROOTREF TARGET_IOWRU(BTRFS_IOCTL_MAGIC, 61)
|
||||
#define TARGET_BTRFS_IOC_INO_LOOKUP_USER TARGET_IOWRU(BTRFS_IOCTL_MAGIC, 62)
|
||||
|
||||
/* usb ioctls */
|
||||
#define TARGET_USBDEVFS_CONTROL TARGET_IOWRU('U', 0)
|
||||
#define TARGET_USBDEVFS_BULK TARGET_IOWRU('U', 2)
|
||||
|
@ -358,6 +358,169 @@ STRUCT(blkpg_partition,
|
||||
MK_ARRAY(TYPE_CHAR, BLKPG_DEVNAMELTH), /* devname */
|
||||
MK_ARRAY(TYPE_CHAR, BLKPG_VOLNAMELTH)) /* volname */
|
||||
|
||||
#if defined(BTRFS_IOC_SUBVOL_CREATE) || defined(BTRFS_IOC_SNAP_CREATE) || \
|
||||
defined(BTRFS_IOC_SNAP_DESTROY) || defined(BTRFS_IOC_SCAN_DEV) || \
|
||||
defined(BTRFS_IOC_FORGET_DEV) || defined(BTRFS_IOC_ADD_DEV) || \
|
||||
defined(BTRFS_IOC_RM_DEV) || defined(BTRFS_IOC_DEV_INFO)
|
||||
STRUCT(btrfs_ioctl_vol_args,
|
||||
TYPE_LONGLONG, /* fd */
|
||||
MK_ARRAY(TYPE_CHAR, BTRFS_PATH_NAME_MAX + 1)) /* name */
|
||||
#endif
|
||||
|
||||
#ifdef BTRFS_IOC_GET_SUBVOL_INFO
|
||||
STRUCT(btrfs_ioctl_timespec,
|
||||
TYPE_ULONGLONG, /* sec */
|
||||
TYPE_INT) /* nsec */
|
||||
|
||||
STRUCT(btrfs_ioctl_get_subvol_info_args,
|
||||
TYPE_ULONGLONG, /* treeid */
|
||||
MK_ARRAY(TYPE_CHAR, BTRFS_VOL_NAME_MAX + 1),
|
||||
TYPE_ULONGLONG, /* parentid */
|
||||
TYPE_ULONGLONG, /* dirid */
|
||||
TYPE_ULONGLONG, /* generation */
|
||||
TYPE_ULONGLONG, /* flags */
|
||||
MK_ARRAY(TYPE_CHAR, BTRFS_UUID_SIZE), /* uuid */
|
||||
MK_ARRAY(TYPE_CHAR, BTRFS_UUID_SIZE), /* parent_uuid */
|
||||
MK_ARRAY(TYPE_CHAR, BTRFS_UUID_SIZE), /* received_uuid */
|
||||
TYPE_ULONGLONG, /* ctransid */
|
||||
TYPE_ULONGLONG, /* otransid */
|
||||
TYPE_ULONGLONG, /* stransid */
|
||||
TYPE_ULONGLONG, /* rtransid */
|
||||
MK_STRUCT(STRUCT_btrfs_ioctl_timespec), /* ctime */
|
||||
MK_STRUCT(STRUCT_btrfs_ioctl_timespec), /* otime */
|
||||
MK_STRUCT(STRUCT_btrfs_ioctl_timespec), /* stime */
|
||||
MK_STRUCT(STRUCT_btrfs_ioctl_timespec), /* rtime */
|
||||
MK_ARRAY(TYPE_ULONGLONG, 8)) /* reserved */
|
||||
#endif
|
||||
|
||||
#ifdef BTRFS_IOC_INO_LOOKUP
|
||||
STRUCT(btrfs_ioctl_ino_lookup_args,
|
||||
TYPE_ULONGLONG, /* treeid */
|
||||
TYPE_ULONGLONG, /* objectid */
|
||||
MK_ARRAY(TYPE_CHAR, BTRFS_INO_LOOKUP_PATH_MAX)) /* name */
|
||||
#endif
|
||||
|
||||
#ifdef BTRFS_IOC_INO_PATHS
|
||||
STRUCT(btrfs_ioctl_ino_path_args,
|
||||
TYPE_ULONGLONG, /* inum */
|
||||
TYPE_ULONGLONG, /* size */
|
||||
MK_ARRAY(TYPE_ULONGLONG, 4), /* reserved */
|
||||
TYPE_ULONGLONG) /* fspath */
|
||||
#endif
|
||||
|
||||
#if defined(BTRFS_IOC_LOGICAL_INO) || defined(BTRFS_IOC_LOGICAL_INO_V2)
|
||||
STRUCT(btrfs_ioctl_logical_ino_args,
|
||||
TYPE_ULONGLONG, /* logical */
|
||||
TYPE_ULONGLONG, /* size */
|
||||
MK_ARRAY(TYPE_ULONGLONG, 3), /* reserved */
|
||||
TYPE_ULONGLONG, /* flags */
|
||||
TYPE_ULONGLONG) /* inodes */
|
||||
#endif
|
||||
|
||||
#ifdef BTRFS_IOC_INO_LOOKUP_USER
|
||||
STRUCT(btrfs_ioctl_ino_lookup_user_args,
|
||||
TYPE_ULONGLONG, /* dirid */
|
||||
TYPE_ULONGLONG, /* treeid */
|
||||
MK_ARRAY(TYPE_CHAR, BTRFS_VOL_NAME_MAX + 1), /* name */
|
||||
MK_ARRAY(TYPE_CHAR, BTRFS_INO_LOOKUP_USER_PATH_MAX)) /* path */
|
||||
#endif
|
||||
|
||||
#if defined(BTRFS_IOC_SCRUB) || defined(BTRFS_IOC_SCRUB_PROGRESS)
|
||||
STRUCT(btrfs_scrub_progress,
|
||||
TYPE_ULONGLONG, /* data_extents_scrubbed */
|
||||
TYPE_ULONGLONG, /* tree_extents_scrubbed */
|
||||
TYPE_ULONGLONG, /* data_bytes_scrubbed */
|
||||
TYPE_ULONGLONG, /* tree_bytes_scrubbed */
|
||||
TYPE_ULONGLONG, /* read_errors */
|
||||
TYPE_ULONGLONG, /* csum_errors */
|
||||
TYPE_ULONGLONG, /* verify_errors */
|
||||
TYPE_ULONGLONG, /* no_csum */
|
||||
TYPE_ULONGLONG, /* csum_discards */
|
||||
TYPE_ULONGLONG, /* super_errors */
|
||||
TYPE_ULONGLONG, /* malloc_errors */
|
||||
TYPE_ULONGLONG, /* uncorrectable_errors */
|
||||
TYPE_ULONGLONG, /* corrected_er */
|
||||
TYPE_ULONGLONG, /* last_physical */
|
||||
TYPE_ULONGLONG) /* unverified_errors */
|
||||
|
||||
STRUCT(btrfs_ioctl_scrub_args,
|
||||
TYPE_ULONGLONG, /* devid */
|
||||
TYPE_ULONGLONG, /* start */
|
||||
TYPE_ULONGLONG, /* end */
|
||||
TYPE_ULONGLONG, /* flags */
|
||||
MK_STRUCT(STRUCT_btrfs_scrub_progress), /* progress */
|
||||
MK_ARRAY(TYPE_ULONGLONG,
|
||||
(1024 - 32 -
|
||||
sizeof(struct btrfs_scrub_progress)) / 8)) /* unused */
|
||||
#endif
|
||||
|
||||
#ifdef BTRFS_IOC_DEV_INFO
|
||||
STRUCT(btrfs_ioctl_dev_info_args,
|
||||
TYPE_ULONGLONG, /* devid */
|
||||
MK_ARRAY(TYPE_CHAR, BTRFS_UUID_SIZE), /* uuid */
|
||||
TYPE_ULONGLONG, /* bytes_used */
|
||||
TYPE_ULONGLONG, /* total_bytes */
|
||||
MK_ARRAY(TYPE_ULONGLONG, 379), /* unused */
|
||||
MK_ARRAY(TYPE_CHAR, BTRFS_DEVICE_PATH_NAME_MAX)) /* path */
|
||||
#endif
|
||||
|
||||
#ifdef BTRFS_IOC_GET_SUBVOL_ROOTREF
|
||||
STRUCT(rootref,
|
||||
TYPE_ULONGLONG, /* treeid */
|
||||
TYPE_ULONGLONG) /* dirid */
|
||||
|
||||
STRUCT(btrfs_ioctl_get_subvol_rootref_args,
|
||||
TYPE_ULONGLONG, /* min_treeid */
|
||||
MK_ARRAY(MK_STRUCT(STRUCT_rootref),
|
||||
BTRFS_MAX_ROOTREF_BUFFER_NUM), /* rootref */
|
||||
TYPE_CHAR, /* num_items */
|
||||
MK_ARRAY(TYPE_CHAR, 7)) /* align */
|
||||
#endif
|
||||
|
||||
#ifdef BTRFS_IOC_GET_DEV_STATS
|
||||
STRUCT(btrfs_ioctl_get_dev_stats,
|
||||
TYPE_ULONGLONG, /* devid */
|
||||
TYPE_ULONGLONG, /* nr_items */
|
||||
TYPE_ULONGLONG, /* flags */
|
||||
MK_ARRAY(TYPE_ULONGLONG, BTRFS_DEV_STAT_VALUES_MAX), /* values */
|
||||
MK_ARRAY(TYPE_ULONGLONG,
|
||||
128 - 2 - BTRFS_DEV_STAT_VALUES_MAX)) /* unused */
|
||||
#endif
|
||||
|
||||
STRUCT(btrfs_ioctl_quota_ctl_args,
|
||||
TYPE_ULONGLONG, /* cmd */
|
||||
TYPE_ULONGLONG) /* status */
|
||||
|
||||
STRUCT(btrfs_ioctl_quota_rescan_args,
|
||||
TYPE_ULONGLONG, /* flags */
|
||||
TYPE_ULONGLONG, /* progress */
|
||||
MK_ARRAY(TYPE_ULONGLONG, 6)) /* reserved */
|
||||
|
||||
STRUCT(btrfs_ioctl_qgroup_assign_args,
|
||||
TYPE_ULONGLONG, /* assign */
|
||||
TYPE_ULONGLONG, /* src */
|
||||
TYPE_ULONGLONG) /* dst */
|
||||
|
||||
STRUCT(btrfs_ioctl_qgroup_create_args,
|
||||
TYPE_ULONGLONG, /* create */
|
||||
TYPE_ULONGLONG) /* qgroupid */
|
||||
|
||||
STRUCT(btrfs_qgroup_limit,
|
||||
TYPE_ULONGLONG, /* flags */
|
||||
TYPE_ULONGLONG, /* max_rfer */
|
||||
TYPE_ULONGLONG, /* max_excl */
|
||||
TYPE_ULONGLONG, /* rsv_rfer */
|
||||
TYPE_ULONGLONG) /* rsv_excl */
|
||||
|
||||
STRUCT(btrfs_ioctl_qgroup_limit_args,
|
||||
TYPE_ULONGLONG, /* qgroupid */
|
||||
MK_STRUCT(STRUCT_btrfs_qgroup_limit)) /* lim */
|
||||
|
||||
STRUCT(btrfs_ioctl_feature_flags,
|
||||
TYPE_ULONGLONG, /* compat_flags */
|
||||
TYPE_ULONGLONG, /* compat_ro_flags */
|
||||
TYPE_ULONGLONG) /* incompat_flags */
|
||||
|
||||
STRUCT(rtc_time,
|
||||
TYPE_INT, /* tm_sec */
|
||||
TYPE_INT, /* tm_min */
|
||||
|
Loading…
Reference in New Issue
Block a user