| .. | .. |
|---|
| 36 | 36 | #define BTRFS_DEVICE_PATH_NAME_MAX 1024 |
|---|
| 37 | 37 | #define BTRFS_SUBVOL_NAME_MAX 4039 |
|---|
| 38 | 38 | |
|---|
| 39 | | -#define BTRFS_SUBVOL_CREATE_ASYNC (1ULL << 0) |
|---|
| 39 | +#ifndef __KERNEL__ |
|---|
| 40 | +/* Deprecated since 5.7 */ |
|---|
| 41 | +# define BTRFS_SUBVOL_CREATE_ASYNC (1ULL << 0) |
|---|
| 42 | +#endif |
|---|
| 40 | 43 | #define BTRFS_SUBVOL_RDONLY (1ULL << 1) |
|---|
| 41 | 44 | #define BTRFS_SUBVOL_QGROUP_INHERIT (1ULL << 2) |
|---|
| 42 | 45 | |
|---|
| 43 | 46 | #define BTRFS_DEVICE_SPEC_BY_ID (1ULL << 3) |
|---|
| 44 | 47 | |
|---|
| 48 | +#define BTRFS_SUBVOL_SPEC_BY_ID (1ULL << 4) |
|---|
| 49 | + |
|---|
| 45 | 50 | #define BTRFS_VOL_ARG_V2_FLAGS_SUPPORTED \ |
|---|
| 46 | | - (BTRFS_SUBVOL_CREATE_ASYNC | \ |
|---|
| 47 | | - BTRFS_SUBVOL_RDONLY | \ |
|---|
| 51 | + (BTRFS_SUBVOL_RDONLY | \ |
|---|
| 48 | 52 | BTRFS_SUBVOL_QGROUP_INHERIT | \ |
|---|
| 49 | | - BTRFS_DEVICE_SPEC_BY_ID) |
|---|
| 53 | + BTRFS_DEVICE_SPEC_BY_ID | \ |
|---|
| 54 | + BTRFS_SUBVOL_SPEC_BY_ID) |
|---|
| 50 | 55 | |
|---|
| 51 | 56 | #define BTRFS_FSID_SIZE 16 |
|---|
| 52 | 57 | #define BTRFS_UUID_SIZE 16 |
|---|
| .. | .. |
|---|
| 97 | 102 | }; |
|---|
| 98 | 103 | |
|---|
| 99 | 104 | /* |
|---|
| 100 | | - * flags for subvolumes |
|---|
| 105 | + * Arguments for specification of subvolumes or devices, supporting by-name or |
|---|
| 106 | + * by-id and flags |
|---|
| 101 | 107 | * |
|---|
| 102 | | - * Used by: |
|---|
| 103 | | - * struct btrfs_ioctl_vol_args_v2.flags |
|---|
| 108 | + * The set of supported flags depends on the ioctl |
|---|
| 104 | 109 | * |
|---|
| 105 | 110 | * BTRFS_SUBVOL_RDONLY is also provided/consumed by the following ioctls: |
|---|
| 106 | 111 | * - BTRFS_IOC_SUBVOL_GETFLAGS |
|---|
| 107 | 112 | * - BTRFS_IOC_SUBVOL_SETFLAGS |
|---|
| 108 | 113 | */ |
|---|
| 114 | + |
|---|
| 115 | +/* Supported flags for BTRFS_IOC_RM_DEV_V2 */ |
|---|
| 116 | +#define BTRFS_DEVICE_REMOVE_ARGS_MASK \ |
|---|
| 117 | + (BTRFS_DEVICE_SPEC_BY_ID) |
|---|
| 118 | + |
|---|
| 119 | +/* Supported flags for BTRFS_IOC_SNAP_CREATE_V2 and BTRFS_IOC_SUBVOL_CREATE_V2 */ |
|---|
| 120 | +#define BTRFS_SUBVOL_CREATE_ARGS_MASK \ |
|---|
| 121 | + (BTRFS_SUBVOL_RDONLY | \ |
|---|
| 122 | + BTRFS_SUBVOL_QGROUP_INHERIT) |
|---|
| 123 | + |
|---|
| 124 | +/* Supported flags for BTRFS_IOC_SNAP_DESTROY_V2 */ |
|---|
| 125 | +#define BTRFS_SUBVOL_DELETE_ARGS_MASK \ |
|---|
| 126 | + (BTRFS_SUBVOL_SPEC_BY_ID) |
|---|
| 109 | 127 | |
|---|
| 110 | 128 | struct btrfs_ioctl_vol_args_v2 { |
|---|
| 111 | 129 | __s64 fd; |
|---|
| .. | .. |
|---|
| 121 | 139 | union { |
|---|
| 122 | 140 | char name[BTRFS_SUBVOL_NAME_MAX + 1]; |
|---|
| 123 | 141 | __u64 devid; |
|---|
| 142 | + __u64 subvolid; |
|---|
| 124 | 143 | }; |
|---|
| 125 | 144 | }; |
|---|
| 126 | 145 | |
|---|
| .. | .. |
|---|
| 224 | 243 | __u8 path[BTRFS_DEVICE_PATH_NAME_MAX]; /* out */ |
|---|
| 225 | 244 | }; |
|---|
| 226 | 245 | |
|---|
| 246 | +/* |
|---|
| 247 | + * Retrieve information about the filesystem |
|---|
| 248 | + */ |
|---|
| 249 | + |
|---|
| 250 | +/* Request information about checksum type and size */ |
|---|
| 251 | +#define BTRFS_FS_INFO_FLAG_CSUM_INFO (1 << 0) |
|---|
| 252 | + |
|---|
| 253 | +/* Request information about filesystem generation */ |
|---|
| 254 | +#define BTRFS_FS_INFO_FLAG_GENERATION (1 << 1) |
|---|
| 255 | +/* Request information about filesystem metadata UUID */ |
|---|
| 256 | +#define BTRFS_FS_INFO_FLAG_METADATA_UUID (1 << 2) |
|---|
| 257 | + |
|---|
| 227 | 258 | struct btrfs_ioctl_fs_info_args { |
|---|
| 228 | 259 | __u64 max_id; /* out */ |
|---|
| 229 | 260 | __u64 num_devices; /* out */ |
|---|
| .. | .. |
|---|
| 231 | 262 | __u32 nodesize; /* out */ |
|---|
| 232 | 263 | __u32 sectorsize; /* out */ |
|---|
| 233 | 264 | __u32 clone_alignment; /* out */ |
|---|
| 234 | | - __u32 reserved32; |
|---|
| 235 | | - __u64 reserved[122]; /* pad to 1k */ |
|---|
| 265 | + /* See BTRFS_FS_INFO_FLAG_* */ |
|---|
| 266 | + __u16 csum_type; /* out */ |
|---|
| 267 | + __u16 csum_size; /* out */ |
|---|
| 268 | + __u64 flags; /* in/out */ |
|---|
| 269 | + __u64 generation; /* out */ |
|---|
| 270 | + __u8 metadata_uuid[BTRFS_FSID_SIZE]; /* out */ |
|---|
| 271 | + __u8 reserved[944]; /* pad to 1k */ |
|---|
| 236 | 272 | }; |
|---|
| 237 | 273 | |
|---|
| 238 | 274 | /* |
|---|
| .. | .. |
|---|
| 269 | 305 | #define BTRFS_FEATURE_INCOMPAT_RAID56 (1ULL << 7) |
|---|
| 270 | 306 | #define BTRFS_FEATURE_INCOMPAT_SKINNY_METADATA (1ULL << 8) |
|---|
| 271 | 307 | #define BTRFS_FEATURE_INCOMPAT_NO_HOLES (1ULL << 9) |
|---|
| 308 | +#define BTRFS_FEATURE_INCOMPAT_METADATA_UUID (1ULL << 10) |
|---|
| 309 | +#define BTRFS_FEATURE_INCOMPAT_RAID1C34 (1ULL << 11) |
|---|
| 272 | 310 | |
|---|
| 273 | 311 | struct btrfs_ioctl_feature_flags { |
|---|
| 274 | 312 | __u64 compat_flags; |
|---|
| .. | .. |
|---|
| 664 | 702 | /* out values: */ |
|---|
| 665 | 703 | __u64 values[BTRFS_DEV_STAT_VALUES_MAX]; |
|---|
| 666 | 704 | |
|---|
| 667 | | - __u64 unused[128 - 2 - BTRFS_DEV_STAT_VALUES_MAX]; /* pad to 1k */ |
|---|
| 705 | + /* |
|---|
| 706 | + * This pads the struct to 1032 bytes. It was originally meant to pad to |
|---|
| 707 | + * 1024 bytes, but when adding the flags field, the padding calculation |
|---|
| 708 | + * was not adjusted. |
|---|
| 709 | + */ |
|---|
| 710 | + __u64 unused[128 - 2 - BTRFS_DEV_STAT_VALUES_MAX]; |
|---|
| 668 | 711 | }; |
|---|
| 669 | 712 | |
|---|
| 670 | 713 | #define BTRFS_QUOTA_CTL_ENABLE 1 |
|---|
| .. | .. |
|---|
| 825 | 868 | BTRFS_ERROR_DEV_TGT_REPLACE, |
|---|
| 826 | 869 | BTRFS_ERROR_DEV_MISSING_NOT_FOUND, |
|---|
| 827 | 870 | BTRFS_ERROR_DEV_ONLY_WRITABLE, |
|---|
| 828 | | - BTRFS_ERROR_DEV_EXCL_RUN_IN_PROGRESS |
|---|
| 871 | + BTRFS_ERROR_DEV_EXCL_RUN_IN_PROGRESS, |
|---|
| 872 | + BTRFS_ERROR_DEV_RAID1C3_MIN_NOT_MET, |
|---|
| 873 | + BTRFS_ERROR_DEV_RAID1C4_MIN_NOT_MET, |
|---|
| 829 | 874 | }; |
|---|
| 830 | 875 | |
|---|
| 831 | 876 | #define BTRFS_IOC_SNAP_CREATE _IOW(BTRFS_IOCTL_MAGIC, 1, \ |
|---|
| .. | .. |
|---|
| 835 | 880 | #define BTRFS_IOC_RESIZE _IOW(BTRFS_IOCTL_MAGIC, 3, \ |
|---|
| 836 | 881 | struct btrfs_ioctl_vol_args) |
|---|
| 837 | 882 | #define BTRFS_IOC_SCAN_DEV _IOW(BTRFS_IOCTL_MAGIC, 4, \ |
|---|
| 883 | + struct btrfs_ioctl_vol_args) |
|---|
| 884 | +#define BTRFS_IOC_FORGET_DEV _IOW(BTRFS_IOCTL_MAGIC, 5, \ |
|---|
| 838 | 885 | struct btrfs_ioctl_vol_args) |
|---|
| 839 | 886 | /* trans start and trans end are dangerous, and only for |
|---|
| 840 | 887 | * use by applications that know how to avoid the |
|---|
| .. | .. |
|---|
| 914 | 961 | #define BTRFS_IOC_QUOTA_RESCAN_STATUS _IOR(BTRFS_IOCTL_MAGIC, 45, \ |
|---|
| 915 | 962 | struct btrfs_ioctl_quota_rescan_args) |
|---|
| 916 | 963 | #define BTRFS_IOC_QUOTA_RESCAN_WAIT _IO(BTRFS_IOCTL_MAGIC, 46) |
|---|
| 917 | | -#define BTRFS_IOC_GET_FSLABEL _IOR(BTRFS_IOCTL_MAGIC, 49, \ |
|---|
| 918 | | - char[BTRFS_LABEL_SIZE]) |
|---|
| 919 | | -#define BTRFS_IOC_SET_FSLABEL _IOW(BTRFS_IOCTL_MAGIC, 50, \ |
|---|
| 920 | | - char[BTRFS_LABEL_SIZE]) |
|---|
| 964 | +#define BTRFS_IOC_GET_FSLABEL FS_IOC_GETFSLABEL |
|---|
| 965 | +#define BTRFS_IOC_SET_FSLABEL FS_IOC_SETFSLABEL |
|---|
| 921 | 966 | #define BTRFS_IOC_GET_DEV_STATS _IOWR(BTRFS_IOCTL_MAGIC, 52, \ |
|---|
| 922 | 967 | struct btrfs_ioctl_get_dev_stats) |
|---|
| 923 | 968 | #define BTRFS_IOC_DEV_REPLACE _IOWR(BTRFS_IOCTL_MAGIC, 53, \ |
|---|
| .. | .. |
|---|
| 940 | 985 | struct btrfs_ioctl_get_subvol_rootref_args) |
|---|
| 941 | 986 | #define BTRFS_IOC_INO_LOOKUP_USER _IOWR(BTRFS_IOCTL_MAGIC, 62, \ |
|---|
| 942 | 987 | struct btrfs_ioctl_ino_lookup_user_args) |
|---|
| 988 | +#define BTRFS_IOC_SNAP_DESTROY_V2 _IOW(BTRFS_IOCTL_MAGIC, 63, \ |
|---|
| 989 | + struct btrfs_ioctl_vol_args_v2) |
|---|
| 943 | 990 | |
|---|
| 944 | 991 | #endif /* _UAPI_LINUX_BTRFS_H */ |
|---|