]> git.ipfire.org Git - thirdparty/systemd.git/blobdiff - src/basic/linux/btrfs.h
util: update kernel headers (v5.9-rc5)
[thirdparty/systemd.git] / src / basic / linux / btrfs.h
index 4b6ee345ba71d25841d1a808b496f12fdebb6f5f..d22f1978ce292b1ea9caf6f13a44658115e3dd58 100644 (file)
@@ -36,17 +36,22 @@ struct btrfs_ioctl_vol_args {
 #define BTRFS_DEVICE_PATH_NAME_MAX     1024
 #define BTRFS_SUBVOL_NAME_MAX          4039
 
-#define BTRFS_SUBVOL_CREATE_ASYNC      (1ULL << 0)
+#ifndef __KERNEL__
+/* Deprecated since 5.7 */
+# define BTRFS_SUBVOL_CREATE_ASYNC     (1ULL << 0)
+#endif
 #define BTRFS_SUBVOL_RDONLY            (1ULL << 1)
 #define BTRFS_SUBVOL_QGROUP_INHERIT    (1ULL << 2)
 
 #define BTRFS_DEVICE_SPEC_BY_ID                (1ULL << 3)
 
+#define BTRFS_SUBVOL_SPEC_BY_ID        (1ULL << 4)
+
 #define BTRFS_VOL_ARG_V2_FLAGS_SUPPORTED               \
-                       (BTRFS_SUBVOL_CREATE_ASYNC |    \
-                       BTRFS_SUBVOL_RDONLY |           \
+                       (BTRFS_SUBVOL_RDONLY |          \
                        BTRFS_SUBVOL_QGROUP_INHERIT |   \
-                       BTRFS_DEVICE_SPEC_BY_ID)
+                       BTRFS_DEVICE_SPEC_BY_ID |       \
+                       BTRFS_SUBVOL_SPEC_BY_ID)
 
 #define BTRFS_FSID_SIZE 16
 #define BTRFS_UUID_SIZE 16
@@ -97,16 +102,29 @@ struct btrfs_ioctl_qgroup_limit_args {
 };
 
 /*
- * flags for subvolumes
+ * Arguments for specification of subvolumes or devices, supporting by-name or
+ * by-id and flags
  *
- * Used by:
- * struct btrfs_ioctl_vol_args_v2.flags
+ * The set of supported flags depends on the ioctl
  *
  * BTRFS_SUBVOL_RDONLY is also provided/consumed by the following ioctls:
  * - BTRFS_IOC_SUBVOL_GETFLAGS
  * - BTRFS_IOC_SUBVOL_SETFLAGS
  */
 
+/* Supported flags for BTRFS_IOC_RM_DEV_V2 */
+#define BTRFS_DEVICE_REMOVE_ARGS_MASK                                  \
+       (BTRFS_DEVICE_SPEC_BY_ID)
+
+/* Supported flags for BTRFS_IOC_SNAP_CREATE_V2 and BTRFS_IOC_SUBVOL_CREATE_V2 */
+#define BTRFS_SUBVOL_CREATE_ARGS_MASK                                  \
+        (BTRFS_SUBVOL_RDONLY |                                         \
+        BTRFS_SUBVOL_QGROUP_INHERIT)
+
+/* Supported flags for BTRFS_IOC_SNAP_DESTROY_V2 */
+#define BTRFS_SUBVOL_DELETE_ARGS_MASK                                  \
+       (BTRFS_SUBVOL_SPEC_BY_ID)
+
 struct btrfs_ioctl_vol_args_v2 {
        __s64 fd;
        __u64 transid;
@@ -121,6 +139,7 @@ struct btrfs_ioctl_vol_args_v2 {
        union {
                char name[BTRFS_SUBVOL_NAME_MAX + 1];
                __u64 devid;
+               __u64 subvolid;
        };
 };
 
@@ -224,6 +243,18 @@ struct btrfs_ioctl_dev_info_args {
        __u8 path[BTRFS_DEVICE_PATH_NAME_MAX];  /* out */
 };
 
+/*
+ * Retrieve information about the filesystem
+ */
+
+/* Request information about checksum type and size */
+#define BTRFS_FS_INFO_FLAG_CSUM_INFO                   (1 << 0)
+
+/* Request information about filesystem generation */
+#define BTRFS_FS_INFO_FLAG_GENERATION                  (1 << 1)
+/* Request information about filesystem metadata UUID */
+#define BTRFS_FS_INFO_FLAG_METADATA_UUID               (1 << 2)
+
 struct btrfs_ioctl_fs_info_args {
        __u64 max_id;                           /* out */
        __u64 num_devices;                      /* out */
@@ -231,8 +262,13 @@ struct btrfs_ioctl_fs_info_args {
        __u32 nodesize;                         /* out */
        __u32 sectorsize;                       /* out */
        __u32 clone_alignment;                  /* out */
-       __u32 reserved32;
-       __u64 reserved[122];                    /* pad to 1k */
+       /* See BTRFS_FS_INFO_FLAG_* */
+       __u16 csum_type;                        /* out */
+       __u16 csum_size;                        /* out */
+       __u64 flags;                            /* in/out */
+       __u64 generation;                       /* out */
+       __u8 metadata_uuid[BTRFS_FSID_SIZE];    /* out */
+       __u8 reserved[944];                     /* pad to 1k */
 };
 
 /*
@@ -949,5 +985,7 @@ enum btrfs_err_code {
                                struct btrfs_ioctl_get_subvol_rootref_args)
 #define BTRFS_IOC_INO_LOOKUP_USER _IOWR(BTRFS_IOCTL_MAGIC, 62, \
                                struct btrfs_ioctl_ino_lookup_user_args)
+#define BTRFS_IOC_SNAP_DESTROY_V2 _IOW(BTRFS_IOCTL_MAGIC, 63, \
+                               struct btrfs_ioctl_vol_args_v2)
 
 #endif /* _UAPI_LINUX_BTRFS_H */