1 #ifndef _BCACHEFS_IOCTL_H
2 #define _BCACHEFS_IOCTL_H
4 #include <linux/uuid.h>
6 #include "bcachefs_format.h"
8 #define BCH_FORCE_IF_DATA_LOST (1 << 0)
9 #define BCH_FORCE_IF_METADATA_LOST (1 << 1)
10 #define BCH_FORCE_IF_DATA_DEGRADED (1 << 2)
11 #define BCH_FORCE_IF_METADATA_DEGRADED (1 << 3)
13 #define BCH_FORCE_IF_DEGRADED \
14 (BCH_FORCE_IF_DATA_DEGRADED| \
15 BCH_FORCE_IF_METADATA_DEGRADED)
17 #define BCH_BY_INDEX (1 << 4)
19 #define BCH_READ_DEV (1 << 5)
21 /* global control dev: */
23 #define BCH_IOCTL_ASSEMBLE _IOW(0xbc, 1, struct bch_ioctl_assemble)
24 #define BCH_IOCTL_INCREMENTAL _IOW(0xbc, 2, struct bch_ioctl_incremental)
26 struct bch_ioctl_assemble {
33 struct bch_ioctl_incremental {
39 /* filesystem ioctls: */
41 #define BCH_IOCTL_QUERY_UUID _IOR(0xbc, 1, struct bch_ioctl_query_uuid)
42 #define BCH_IOCTL_START _IOW(0xbc, 2, struct bch_ioctl_start)
43 #define BCH_IOCTL_STOP _IO(0xbc, 3)
44 #define BCH_IOCTL_DISK_ADD _IOW(0xbc, 4, struct bch_ioctl_disk)
45 #define BCH_IOCTL_DISK_REMOVE _IOW(0xbc, 5, struct bch_ioctl_disk)
46 #define BCH_IOCTL_DISK_ONLINE _IOW(0xbc, 6, struct bch_ioctl_disk)
47 #define BCH_IOCTL_DISK_OFFLINE _IOW(0xbc, 7, struct bch_ioctl_disk)
48 #define BCH_IOCTL_DISK_SET_STATE _IOW(0xbc, 8, struct bch_ioctl_disk_set_state)
49 #define BCH_IOCTL_DISK_EVACUATE _IOW(0xbc, 9, struct bch_ioctl_disk)
50 #define BCH_IOCTL_DATA _IOW(0xbc, 10, struct bch_ioctl_data)
51 #define BCH_IOCTL_USAGE _IOWR(0xbc, 11, struct bch_ioctl_usage)
52 #define BCH_IOCTL_READ_SUPER _IOW(0xbc, 12, struct bch_ioctl_read_super)
53 #define BCH_IOCTL_DISK_GET_IDX _IOW(0xbc, 13, struct bch_ioctl_disk_get_idx)
54 #define BCH_IOCTL_DISK_RESIZE _IOW(0xbc, 13, struct bch_ioctl_disk_resize)
56 struct bch_ioctl_query_uuid {
60 struct bch_ioctl_start {
65 struct bch_ioctl_disk {
71 struct bch_ioctl_disk_set_state {
78 #define BCH_REWRITE_INCREASE_REPLICAS (1 << 0)
79 #define BCH_REWRITE_DECREASE_REPLICAS (1 << 1)
81 #define BCH_REWRITE_RECOMPRESS (1 << 0)
82 #define BCH_REWRITE_DECREASE_REPLICAS (1 << 1)
92 struct bch_ioctl_data {
103 struct bch_ioctl_dev_usage {
112 __u64 buckets[BCH_DATA_NR];
113 __u64 sectors[BCH_DATA_NR];
116 struct bch_ioctl_fs_usage {
119 __u64 online_reserved;
120 __u64 persistent_reserved[BCH_REPLICAS_MAX];
121 __u64 sectors[BCH_DATA_NR][BCH_REPLICAS_MAX];
124 struct bch_ioctl_usage {
128 struct bch_ioctl_fs_usage fs;
129 struct bch_ioctl_dev_usage devs[0];
132 struct bch_ioctl_read_super {
140 struct bch_ioctl_disk_get_idx {
144 struct bch_ioctl_disk_resize {
151 #endif /* _BCACHEFS_IOCTL_H */