]> git.sesse.net Git - bcachefs-tools-debian/blob - libbcachefs/bcachefs_ioctl.h
Update bcachefs sources to 2afdc642c2 bcachefs: kill bucket_data_type, improve disk...
[bcachefs-tools-debian] / libbcachefs / bcachefs_ioctl.h
1 #ifndef _BCACHEFS_IOCTL_H
2 #define _BCACHEFS_IOCTL_H
3
4 #include <linux/uuid.h>
5 #include "bcachefs_format.h"
6
7 #define BCH_FORCE_IF_DATA_LOST          (1 << 0)
8 #define BCH_FORCE_IF_METADATA_LOST      (1 << 1)
9 #define BCH_FORCE_IF_DATA_DEGRADED      (1 << 2)
10 #define BCH_FORCE_IF_METADATA_DEGRADED  (1 << 3)
11
12 #define BCH_FORCE_IF_DEGRADED                   \
13         (BCH_FORCE_IF_DATA_DEGRADED|            \
14          BCH_FORCE_IF_METADATA_DEGRADED)
15
16 #define BCH_BY_INDEX                    (1 << 4)
17
18 /* global control dev: */
19
20 #define BCH_IOCTL_ASSEMBLE      _IOW(0xbc, 1, struct bch_ioctl_assemble)
21 #define BCH_IOCTL_INCREMENTAL   _IOW(0xbc, 2, struct bch_ioctl_incremental)
22
23 struct bch_ioctl_assemble {
24         __u32                   flags;
25         __u32                   nr_devs;
26         __u64                   pad;
27         __u64                   devs[];
28 };
29
30 struct bch_ioctl_incremental {
31         __u32                   flags;
32         __u64                   pad;
33         __u64                   dev;
34 };
35
36 /* filesystem ioctls: */
37
38 #define BCH_IOCTL_QUERY_UUID    _IOR(0xbc,      1,  struct bch_ioctl_query_uuid)
39 #define BCH_IOCTL_START         _IOW(0xbc,      2,  struct bch_ioctl_start)
40 #define BCH_IOCTL_STOP          _IO(0xbc,       3)
41 #define BCH_IOCTL_DISK_ADD      _IOW(0xbc,      4,  struct bch_ioctl_disk)
42 #define BCH_IOCTL_DISK_REMOVE   _IOW(0xbc,      5,  struct bch_ioctl_disk)
43 #define BCH_IOCTL_DISK_ONLINE   _IOW(0xbc,      6,  struct bch_ioctl_disk)
44 #define BCH_IOCTL_DISK_OFFLINE  _IOW(0xbc,      7,  struct bch_ioctl_disk)
45 #define BCH_IOCTL_DISK_SET_STATE _IOW(0xbc,     8,  struct bch_ioctl_disk_set_state)
46 #define BCH_IOCTL_DISK_EVACUATE _IOW(0xbc,      9,  struct bch_ioctl_disk)
47 #define BCH_IOCTL_DATA          _IOW(0xbc,      10, struct bch_ioctl_data)
48 #define BCH_IOCTL_USAGE         _IOWR(0xbc,     11, struct bch_ioctl_usage)
49
50 struct bch_ioctl_query_uuid {
51         uuid_le                 uuid;
52 };
53
54 struct bch_ioctl_start {
55         __u32                   flags;
56         __u32                   pad;
57 };
58
59 struct bch_ioctl_disk {
60         __u32                   flags;
61         __u32                   pad;
62         __u64                   dev;
63 };
64
65 struct bch_ioctl_disk_set_state {
66         __u32                   flags;
67         __u8                    new_state;
68         __u8                    pad[3];
69         __u64                   dev;
70 };
71
72 #define BCH_REWRITE_INCREASE_REPLICAS   (1 << 0)
73 #define BCH_REWRITE_DECREASE_REPLICAS   (1 << 1)
74
75 #define BCH_REWRITE_RECOMPRESS          (1 << 0)
76 #define BCH_REWRITE_DECREASE_REPLICAS   (1 << 1)
77
78 enum bch_data_ops {
79         BCH_DATA_SCRUB,
80 };
81
82 struct bch_data_op {
83         __u8                    type;
84 };
85
86 struct bch_ioctl_data {
87         __u32                   flags;
88         __u32                   pad;
89
90         __u64                   start_inode;
91         __u64                   start_offset;
92
93         __u64                   end_inode;
94         __u64                   end_offset;
95 };
96
97 struct bch_ioctl_dev_usage {
98         __u8                    state;
99         __u8                    alive;
100         __u8                    pad[6];
101         __u32                   dev;
102
103         __u32                   bucket_size;
104         __u64                   nr_buckets;
105
106         __u64                   buckets[BCH_DATA_NR];
107         __u64                   sectors[BCH_DATA_NR];
108 };
109
110 struct bch_ioctl_fs_usage {
111         __u64                   capacity;
112         __u64                   used;
113         __u64                   online_reserved;
114         __u64                   persistent_reserved[BCH_REPLICAS_MAX];
115         __u64                   sectors[BCH_DATA_NR][BCH_REPLICAS_MAX];
116 };
117
118 struct bch_ioctl_usage {
119         __u16                   nr_devices;
120         __u16                   pad[3];
121
122         struct bch_ioctl_fs_usage fs;
123         struct bch_ioctl_dev_usage devs[0];
124 };
125
126 #endif /* _BCACHEFS_IOCTL_H */