hc
2023-12-09 958e46acc8e900e8569dd467c1af9b8d2d019394
kernel/include/uapi/linux/btrfs.h
....@@ -36,17 +36,22 @@
3636 #define BTRFS_DEVICE_PATH_NAME_MAX 1024
3737 #define BTRFS_SUBVOL_NAME_MAX 4039
3838
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
4043 #define BTRFS_SUBVOL_RDONLY (1ULL << 1)
4144 #define BTRFS_SUBVOL_QGROUP_INHERIT (1ULL << 2)
4245
4346 #define BTRFS_DEVICE_SPEC_BY_ID (1ULL << 3)
4447
48
+#define BTRFS_SUBVOL_SPEC_BY_ID (1ULL << 4)
49
+
4550 #define BTRFS_VOL_ARG_V2_FLAGS_SUPPORTED \
46
- (BTRFS_SUBVOL_CREATE_ASYNC | \
47
- BTRFS_SUBVOL_RDONLY | \
51
+ (BTRFS_SUBVOL_RDONLY | \
4852 BTRFS_SUBVOL_QGROUP_INHERIT | \
49
- BTRFS_DEVICE_SPEC_BY_ID)
53
+ BTRFS_DEVICE_SPEC_BY_ID | \
54
+ BTRFS_SUBVOL_SPEC_BY_ID)
5055
5156 #define BTRFS_FSID_SIZE 16
5257 #define BTRFS_UUID_SIZE 16
....@@ -97,15 +102,28 @@
97102 };
98103
99104 /*
100
- * flags for subvolumes
105
+ * Arguments for specification of subvolumes or devices, supporting by-name or
106
+ * by-id and flags
101107 *
102
- * Used by:
103
- * struct btrfs_ioctl_vol_args_v2.flags
108
+ * The set of supported flags depends on the ioctl
104109 *
105110 * BTRFS_SUBVOL_RDONLY is also provided/consumed by the following ioctls:
106111 * - BTRFS_IOC_SUBVOL_GETFLAGS
107112 * - BTRFS_IOC_SUBVOL_SETFLAGS
108113 */
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)
109127
110128 struct btrfs_ioctl_vol_args_v2 {
111129 __s64 fd;
....@@ -121,6 +139,7 @@
121139 union {
122140 char name[BTRFS_SUBVOL_NAME_MAX + 1];
123141 __u64 devid;
142
+ __u64 subvolid;
124143 };
125144 };
126145
....@@ -224,6 +243,18 @@
224243 __u8 path[BTRFS_DEVICE_PATH_NAME_MAX]; /* out */
225244 };
226245
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
+
227258 struct btrfs_ioctl_fs_info_args {
228259 __u64 max_id; /* out */
229260 __u64 num_devices; /* out */
....@@ -231,8 +262,13 @@
231262 __u32 nodesize; /* out */
232263 __u32 sectorsize; /* out */
233264 __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 */
236272 };
237273
238274 /*
....@@ -269,6 +305,8 @@
269305 #define BTRFS_FEATURE_INCOMPAT_RAID56 (1ULL << 7)
270306 #define BTRFS_FEATURE_INCOMPAT_SKINNY_METADATA (1ULL << 8)
271307 #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)
272310
273311 struct btrfs_ioctl_feature_flags {
274312 __u64 compat_flags;
....@@ -664,7 +702,12 @@
664702 /* out values: */
665703 __u64 values[BTRFS_DEV_STAT_VALUES_MAX];
666704
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];
668711 };
669712
670713 #define BTRFS_QUOTA_CTL_ENABLE 1
....@@ -825,7 +868,9 @@
825868 BTRFS_ERROR_DEV_TGT_REPLACE,
826869 BTRFS_ERROR_DEV_MISSING_NOT_FOUND,
827870 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,
829874 };
830875
831876 #define BTRFS_IOC_SNAP_CREATE _IOW(BTRFS_IOCTL_MAGIC, 1, \
....@@ -835,6 +880,8 @@
835880 #define BTRFS_IOC_RESIZE _IOW(BTRFS_IOCTL_MAGIC, 3, \
836881 struct btrfs_ioctl_vol_args)
837882 #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, \
838885 struct btrfs_ioctl_vol_args)
839886 /* trans start and trans end are dangerous, and only for
840887 * use by applications that know how to avoid the
....@@ -914,10 +961,8 @@
914961 #define BTRFS_IOC_QUOTA_RESCAN_STATUS _IOR(BTRFS_IOCTL_MAGIC, 45, \
915962 struct btrfs_ioctl_quota_rescan_args)
916963 #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
921966 #define BTRFS_IOC_GET_DEV_STATS _IOWR(BTRFS_IOCTL_MAGIC, 52, \
922967 struct btrfs_ioctl_get_dev_stats)
923968 #define BTRFS_IOC_DEV_REPLACE _IOWR(BTRFS_IOCTL_MAGIC, 53, \
....@@ -940,5 +985,7 @@
940985 struct btrfs_ioctl_get_subvol_rootref_args)
941986 #define BTRFS_IOC_INO_LOOKUP_USER _IOWR(BTRFS_IOCTL_MAGIC, 62, \
942987 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)
943990
944991 #endif /* _UAPI_LINUX_BTRFS_H */