.. | .. |
---|
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 | |
---|
.. | .. |
---|
162 | 181 | }; |
---|
163 | 182 | |
---|
164 | 183 | #define BTRFS_SCRUB_READONLY 1 |
---|
| 184 | +#define BTRFS_SCRUB_SUPPORTED_FLAGS (BTRFS_SCRUB_READONLY) |
---|
165 | 185 | struct btrfs_ioctl_scrub_args { |
---|
166 | 186 | __u64 devid; /* in */ |
---|
167 | 187 | __u64 start; /* in */ |
---|
.. | .. |
---|
224 | 244 | __u8 path[BTRFS_DEVICE_PATH_NAME_MAX]; /* out */ |
---|
225 | 245 | }; |
---|
226 | 246 | |
---|
| 247 | +/* |
---|
| 248 | + * Retrieve information about the filesystem |
---|
| 249 | + */ |
---|
| 250 | + |
---|
| 251 | +/* Request information about checksum type and size */ |
---|
| 252 | +#define BTRFS_FS_INFO_FLAG_CSUM_INFO (1 << 0) |
---|
| 253 | + |
---|
| 254 | +/* Request information about filesystem generation */ |
---|
| 255 | +#define BTRFS_FS_INFO_FLAG_GENERATION (1 << 1) |
---|
| 256 | +/* Request information about filesystem metadata UUID */ |
---|
| 257 | +#define BTRFS_FS_INFO_FLAG_METADATA_UUID (1 << 2) |
---|
| 258 | + |
---|
227 | 259 | struct btrfs_ioctl_fs_info_args { |
---|
228 | 260 | __u64 max_id; /* out */ |
---|
229 | 261 | __u64 num_devices; /* out */ |
---|
.. | .. |
---|
231 | 263 | __u32 nodesize; /* out */ |
---|
232 | 264 | __u32 sectorsize; /* out */ |
---|
233 | 265 | __u32 clone_alignment; /* out */ |
---|
234 | | - __u32 reserved32; |
---|
235 | | - __u64 reserved[122]; /* pad to 1k */ |
---|
| 266 | + /* See BTRFS_FS_INFO_FLAG_* */ |
---|
| 267 | + __u16 csum_type; /* out */ |
---|
| 268 | + __u16 csum_size; /* out */ |
---|
| 269 | + __u64 flags; /* in/out */ |
---|
| 270 | + __u64 generation; /* out */ |
---|
| 271 | + __u8 metadata_uuid[BTRFS_FSID_SIZE]; /* out */ |
---|
| 272 | + __u8 reserved[944]; /* pad to 1k */ |
---|
236 | 273 | }; |
---|
237 | 274 | |
---|
238 | 275 | /* |
---|
.. | .. |
---|
269 | 306 | #define BTRFS_FEATURE_INCOMPAT_RAID56 (1ULL << 7) |
---|
270 | 307 | #define BTRFS_FEATURE_INCOMPAT_SKINNY_METADATA (1ULL << 8) |
---|
271 | 308 | #define BTRFS_FEATURE_INCOMPAT_NO_HOLES (1ULL << 9) |
---|
| 309 | +#define BTRFS_FEATURE_INCOMPAT_METADATA_UUID (1ULL << 10) |
---|
| 310 | +#define BTRFS_FEATURE_INCOMPAT_RAID1C34 (1ULL << 11) |
---|
272 | 311 | |
---|
273 | 312 | struct btrfs_ioctl_feature_flags { |
---|
274 | 313 | __u64 compat_flags; |
---|
.. | .. |
---|
664 | 703 | /* out values: */ |
---|
665 | 704 | __u64 values[BTRFS_DEV_STAT_VALUES_MAX]; |
---|
666 | 705 | |
---|
667 | | - __u64 unused[128 - 2 - BTRFS_DEV_STAT_VALUES_MAX]; /* pad to 1k */ |
---|
| 706 | + /* |
---|
| 707 | + * This pads the struct to 1032 bytes. It was originally meant to pad to |
---|
| 708 | + * 1024 bytes, but when adding the flags field, the padding calculation |
---|
| 709 | + * was not adjusted. |
---|
| 710 | + */ |
---|
| 711 | + __u64 unused[128 - 2 - BTRFS_DEV_STAT_VALUES_MAX]; |
---|
668 | 712 | }; |
---|
669 | 713 | |
---|
670 | 714 | #define BTRFS_QUOTA_CTL_ENABLE 1 |
---|
.. | .. |
---|
825 | 869 | BTRFS_ERROR_DEV_TGT_REPLACE, |
---|
826 | 870 | BTRFS_ERROR_DEV_MISSING_NOT_FOUND, |
---|
827 | 871 | BTRFS_ERROR_DEV_ONLY_WRITABLE, |
---|
828 | | - BTRFS_ERROR_DEV_EXCL_RUN_IN_PROGRESS |
---|
| 872 | + BTRFS_ERROR_DEV_EXCL_RUN_IN_PROGRESS, |
---|
| 873 | + BTRFS_ERROR_DEV_RAID1C3_MIN_NOT_MET, |
---|
| 874 | + BTRFS_ERROR_DEV_RAID1C4_MIN_NOT_MET, |
---|
829 | 875 | }; |
---|
830 | 876 | |
---|
831 | 877 | #define BTRFS_IOC_SNAP_CREATE _IOW(BTRFS_IOCTL_MAGIC, 1, \ |
---|
.. | .. |
---|
835 | 881 | #define BTRFS_IOC_RESIZE _IOW(BTRFS_IOCTL_MAGIC, 3, \ |
---|
836 | 882 | struct btrfs_ioctl_vol_args) |
---|
837 | 883 | #define BTRFS_IOC_SCAN_DEV _IOW(BTRFS_IOCTL_MAGIC, 4, \ |
---|
| 884 | + struct btrfs_ioctl_vol_args) |
---|
| 885 | +#define BTRFS_IOC_FORGET_DEV _IOW(BTRFS_IOCTL_MAGIC, 5, \ |
---|
838 | 886 | struct btrfs_ioctl_vol_args) |
---|
839 | 887 | /* trans start and trans end are dangerous, and only for |
---|
840 | 888 | * use by applications that know how to avoid the |
---|
.. | .. |
---|
914 | 962 | #define BTRFS_IOC_QUOTA_RESCAN_STATUS _IOR(BTRFS_IOCTL_MAGIC, 45, \ |
---|
915 | 963 | struct btrfs_ioctl_quota_rescan_args) |
---|
916 | 964 | #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]) |
---|
| 965 | +#define BTRFS_IOC_GET_FSLABEL FS_IOC_GETFSLABEL |
---|
| 966 | +#define BTRFS_IOC_SET_FSLABEL FS_IOC_SETFSLABEL |
---|
921 | 967 | #define BTRFS_IOC_GET_DEV_STATS _IOWR(BTRFS_IOCTL_MAGIC, 52, \ |
---|
922 | 968 | struct btrfs_ioctl_get_dev_stats) |
---|
923 | 969 | #define BTRFS_IOC_DEV_REPLACE _IOWR(BTRFS_IOCTL_MAGIC, 53, \ |
---|
.. | .. |
---|
940 | 986 | struct btrfs_ioctl_get_subvol_rootref_args) |
---|
941 | 987 | #define BTRFS_IOC_INO_LOOKUP_USER _IOWR(BTRFS_IOCTL_MAGIC, 62, \ |
---|
942 | 988 | struct btrfs_ioctl_ino_lookup_user_args) |
---|
| 989 | +#define BTRFS_IOC_SNAP_DESTROY_V2 _IOW(BTRFS_IOCTL_MAGIC, 63, \ |
---|
| 990 | + struct btrfs_ioctl_vol_args_v2) |
---|
943 | 991 | |
---|
944 | 992 | #endif /* _UAPI_LINUX_BTRFS_H */ |
---|