diff options
Diffstat (limited to 'fs/btrfs/ioctl.h')
-rw-r--r-- | fs/btrfs/ioctl.h | 120 |
1 files changed, 95 insertions, 25 deletions
diff --git a/fs/btrfs/ioctl.h b/fs/btrfs/ioctl.h index 424694aa517f..ad1ea789fcb4 100644 --- a/fs/btrfs/ioctl.h +++ b/fs/btrfs/ioctl.h | |||
@@ -22,14 +22,93 @@ | |||
22 | 22 | ||
23 | #define BTRFS_IOCTL_MAGIC 0x94 | 23 | #define BTRFS_IOCTL_MAGIC 0x94 |
24 | #define BTRFS_VOL_NAME_MAX 255 | 24 | #define BTRFS_VOL_NAME_MAX 255 |
25 | #define BTRFS_PATH_NAME_MAX 4087 | ||
26 | 25 | ||
27 | /* this should be 4k */ | 26 | /* this should be 4k */ |
27 | #define BTRFS_PATH_NAME_MAX 4087 | ||
28 | struct btrfs_ioctl_vol_args { | 28 | struct btrfs_ioctl_vol_args { |
29 | __s64 fd; | 29 | __s64 fd; |
30 | char name[BTRFS_PATH_NAME_MAX + 1]; | 30 | char name[BTRFS_PATH_NAME_MAX + 1]; |
31 | }; | 31 | }; |
32 | 32 | ||
33 | #define BTRFS_SUBVOL_CREATE_ASYNC (1ULL << 0) | ||
34 | #define BTRFS_SUBVOL_RDONLY (1ULL << 1) | ||
35 | #define BTRFS_FSID_SIZE 16 | ||
36 | #define BTRFS_UUID_SIZE 16 | ||
37 | |||
38 | #define BTRFS_SUBVOL_NAME_MAX 4039 | ||
39 | struct btrfs_ioctl_vol_args_v2 { | ||
40 | __s64 fd; | ||
41 | __u64 transid; | ||
42 | __u64 flags; | ||
43 | __u64 unused[4]; | ||
44 | char name[BTRFS_SUBVOL_NAME_MAX + 1]; | ||
45 | }; | ||
46 | |||
47 | /* | ||
48 | * structure to report errors and progress to userspace, either as a | ||
49 | * result of a finished scrub, a canceled scrub or a progress inquiry | ||
50 | */ | ||
51 | struct btrfs_scrub_progress { | ||
52 | __u64 data_extents_scrubbed; /* # of data extents scrubbed */ | ||
53 | __u64 tree_extents_scrubbed; /* # of tree extents scrubbed */ | ||
54 | __u64 data_bytes_scrubbed; /* # of data bytes scrubbed */ | ||
55 | __u64 tree_bytes_scrubbed; /* # of tree bytes scrubbed */ | ||
56 | __u64 read_errors; /* # of read errors encountered (EIO) */ | ||
57 | __u64 csum_errors; /* # of failed csum checks */ | ||
58 | __u64 verify_errors; /* # of occurences, where the metadata | ||
59 | * of a tree block did not match the | ||
60 | * expected values, like generation or | ||
61 | * logical */ | ||
62 | __u64 no_csum; /* # of 4k data block for which no csum | ||
63 | * is present, probably the result of | ||
64 | * data written with nodatasum */ | ||
65 | __u64 csum_discards; /* # of csum for which no data was found | ||
66 | * in the extent tree. */ | ||
67 | __u64 super_errors; /* # of bad super blocks encountered */ | ||
68 | __u64 malloc_errors; /* # of internal kmalloc errors. These | ||
69 | * will likely cause an incomplete | ||
70 | * scrub */ | ||
71 | __u64 uncorrectable_errors; /* # of errors where either no intact | ||
72 | * copy was found or the writeback | ||
73 | * failed */ | ||
74 | __u64 corrected_errors; /* # of errors corrected */ | ||
75 | __u64 last_physical; /* last physical address scrubbed. In | ||
76 | * case a scrub was aborted, this can | ||
77 | * be used to restart the scrub */ | ||
78 | __u64 unverified_errors; /* # of occurences where a read for a | ||
79 | * full (64k) bio failed, but the re- | ||
80 | * check succeeded for each 4k piece. | ||
81 | * Intermittent error. */ | ||
82 | }; | ||
83 | |||
84 | #define BTRFS_SCRUB_READONLY 1 | ||
85 | struct btrfs_ioctl_scrub_args { | ||
86 | __u64 devid; /* in */ | ||
87 | __u64 start; /* in */ | ||
88 | __u64 end; /* in */ | ||
89 | __u64 flags; /* in */ | ||
90 | struct btrfs_scrub_progress progress; /* out */ | ||
91 | /* pad to 1k */ | ||
92 | __u64 unused[(1024-32-sizeof(struct btrfs_scrub_progress))/8]; | ||
93 | }; | ||
94 | |||
95 | #define BTRFS_DEVICE_PATH_NAME_MAX 1024 | ||
96 | struct btrfs_ioctl_dev_info_args { | ||
97 | __u64 devid; /* in/out */ | ||
98 | __u8 uuid[BTRFS_UUID_SIZE]; /* in/out */ | ||
99 | __u64 bytes_used; /* out */ | ||
100 | __u64 total_bytes; /* out */ | ||
101 | __u64 unused[379]; /* pad to 4k */ | ||
102 | __u8 path[BTRFS_DEVICE_PATH_NAME_MAX]; /* out */ | ||
103 | }; | ||
104 | |||
105 | struct btrfs_ioctl_fs_info_args { | ||
106 | __u64 max_id; /* out */ | ||
107 | __u64 num_devices; /* out */ | ||
108 | __u8 fsid[BTRFS_FSID_SIZE]; /* out */ | ||
109 | __u64 reserved[124]; /* pad to 1k */ | ||
110 | }; | ||
111 | |||
33 | #define BTRFS_INO_LOOKUP_PATH_MAX 4080 | 112 | #define BTRFS_INO_LOOKUP_PATH_MAX 4080 |
34 | struct btrfs_ioctl_ino_lookup_args { | 113 | struct btrfs_ioctl_ino_lookup_args { |
35 | __u64 treeid; | 114 | __u64 treeid; |
@@ -102,30 +181,6 @@ struct btrfs_ioctl_clone_range_args { | |||
102 | #define BTRFS_DEFRAG_RANGE_COMPRESS 1 | 181 | #define BTRFS_DEFRAG_RANGE_COMPRESS 1 |
103 | #define BTRFS_DEFRAG_RANGE_START_IO 2 | 182 | #define BTRFS_DEFRAG_RANGE_START_IO 2 |
104 | 183 | ||
105 | struct btrfs_ioctl_defrag_range_args { | ||
106 | /* start of the defrag operation */ | ||
107 | __u64 start; | ||
108 | |||
109 | /* number of bytes to defrag, use (u64)-1 to say all */ | ||
110 | __u64 len; | ||
111 | |||
112 | /* | ||
113 | * flags for the operation, which can include turning | ||
114 | * on compression for this one defrag | ||
115 | */ | ||
116 | __u64 flags; | ||
117 | |||
118 | /* | ||
119 | * any extent bigger than this will be considered | ||
120 | * already defragged. Use 0 to take the kernel default | ||
121 | * Use 1 to say every single extent must be rewritten | ||
122 | */ | ||
123 | __u32 extent_thresh; | ||
124 | |||
125 | /* spare for later */ | ||
126 | __u32 unused[5]; | ||
127 | }; | ||
128 | |||
129 | struct btrfs_ioctl_space_info { | 184 | struct btrfs_ioctl_space_info { |
130 | __u64 flags; | 185 | __u64 flags; |
131 | __u64 total_bytes; | 186 | __u64 total_bytes; |
@@ -178,4 +233,19 @@ struct btrfs_ioctl_space_args { | |||
178 | #define BTRFS_IOC_DEFAULT_SUBVOL _IOW(BTRFS_IOCTL_MAGIC, 19, u64) | 233 | #define BTRFS_IOC_DEFAULT_SUBVOL _IOW(BTRFS_IOCTL_MAGIC, 19, u64) |
179 | #define BTRFS_IOC_SPACE_INFO _IOWR(BTRFS_IOCTL_MAGIC, 20, \ | 234 | #define BTRFS_IOC_SPACE_INFO _IOWR(BTRFS_IOCTL_MAGIC, 20, \ |
180 | struct btrfs_ioctl_space_args) | 235 | struct btrfs_ioctl_space_args) |
236 | #define BTRFS_IOC_START_SYNC _IOR(BTRFS_IOCTL_MAGIC, 24, __u64) | ||
237 | #define BTRFS_IOC_WAIT_SYNC _IOW(BTRFS_IOCTL_MAGIC, 22, __u64) | ||
238 | #define BTRFS_IOC_SNAP_CREATE_V2 _IOW(BTRFS_IOCTL_MAGIC, 23, \ | ||
239 | struct btrfs_ioctl_vol_args_v2) | ||
240 | #define BTRFS_IOC_SUBVOL_GETFLAGS _IOW(BTRFS_IOCTL_MAGIC, 25, __u64) | ||
241 | #define BTRFS_IOC_SUBVOL_SETFLAGS _IOW(BTRFS_IOCTL_MAGIC, 26, __u64) | ||
242 | #define BTRFS_IOC_SCRUB _IOWR(BTRFS_IOCTL_MAGIC, 27, \ | ||
243 | struct btrfs_ioctl_scrub_args) | ||
244 | #define BTRFS_IOC_SCRUB_CANCEL _IO(BTRFS_IOCTL_MAGIC, 28) | ||
245 | #define BTRFS_IOC_SCRUB_PROGRESS _IOWR(BTRFS_IOCTL_MAGIC, 29, \ | ||
246 | struct btrfs_ioctl_scrub_args) | ||
247 | #define BTRFS_IOC_DEV_INFO _IOWR(BTRFS_IOCTL_MAGIC, 30, \ | ||
248 | struct btrfs_ioctl_dev_info_args) | ||
249 | #define BTRFS_IOC_FS_INFO _IOR(BTRFS_IOCTL_MAGIC, 31, \ | ||
250 | struct btrfs_ioctl_fs_info_args) | ||
181 | #endif | 251 | #endif |