1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
|
# Copyright 2026 syzkaller project authors. All rights reserved.
# Use of this source code is governed by Apache 2 LICENSE that can be found in the LICENSE file.
include <linux/fs.h>
include <uapi/linux/fsmap.h>
include <fs/xfs/xfs_platform.h>
include <fs/xfs/libxfs/xfs_fs.h>
ioctl$XFS_IOC_DIOINFO(fd fd, cmd const[XFS_IOC_DIOINFO], arg ptr[out, dioattr])
ioctl$XFS_IOC_FSBULKSTAT_SINGLE(fd fd, cmd const[XFS_IOC_FSBULKSTAT_SINGLE], arg ptr[inout, xfs_fsop_bulkreq])
ioctl$XFS_IOC_FSBULKSTAT(fd fd, cmd const[XFS_IOC_FSBULKSTAT], arg ptr[inout, xfs_fsop_bulkreq])
ioctl$XFS_IOC_FSINUMBERS(fd fd, cmd const[XFS_IOC_FSINUMBERS], arg ptr[inout, xfs_fsop_bulkreq])
ioctl$XFS_IOC_BULKSTAT(fd fd, cmd const[XFS_IOC_BULKSTAT], arg ptr[inout, xfs_bulkstat_req])
ioctl$XFS_IOC_INUMBERS(fd fd, cmd const[XFS_IOC_INUMBERS], arg ptr[inout, xfs_inumbers_req])
ioctl$XFS_IOC_FSGEOMETRY_V1(fd fd, cmd const[XFS_IOC_FSGEOMETRY_V1], arg ptr[out, xfs_fsop_geom_v1])
ioctl$XFS_IOC_FSGEOMETRY_V4(fd fd, cmd const[XFS_IOC_FSGEOMETRY_V4], arg ptr[out, xfs_fsop_geom_v4])
ioctl$XFS_IOC_FSGEOMETRY(fd fd, cmd const[XFS_IOC_FSGEOMETRY], arg ptr[out, xfs_fsop_geom])
ioctl$XFS_IOC_AG_GEOMETRY(fd fd, cmd const[XFS_IOC_AG_GEOMETRY], arg ptr[inout, xfs_ag_geometry])
ioctl$XFS_IOC_RTGROUP_GEOMETRY(fd fd, cmd const[XFS_IOC_RTGROUP_GEOMETRY], arg ptr[inout, xfs_rtgroup_geometry])
ioctl$XFS_IOC_GETVERSION(fd fd, cmd const[XFS_IOC_GETVERSION], arg ptr[out, int32])
ioctl$XFS_IOC_FSGETXATTRA(fd fd, cmd const[XFS_IOC_FSGETXATTRA], arg ptr[out, fsxattr])
ioctl$XFS_IOC_GETPARENTS(fd fd, cmd const[XFS_IOC_GETPARENTS], arg ptr[inout, xfs_getparents])
ioctl$XFS_IOC_GETPARENTS_BY_HANDLE(fd fd, cmd const[XFS_IOC_GETPARENTS_BY_HANDLE], arg ptr[inout, xfs_getparents_by_handle])
ioctl$XFS_IOC_GETBMAP(fd fd, cmd const[XFS_IOC_GETBMAP], arg ptr[inout, getbmap])
ioctl$XFS_IOC_GETBMAPA(fd fd, cmd const[XFS_IOC_GETBMAPA], arg ptr[inout, getbmap])
ioctl$XFS_IOC_GETBMAPX(fd fd, cmd const[XFS_IOC_GETBMAPX], arg ptr[inout, getbmapx])
ioctl$XFS_IOC_SCRUBV_METADATA(fd fd, cmd const[XFS_IOC_SCRUBV_METADATA], arg ptr[inout, xfs_scrub_vec_head])
ioctl$XFS_IOC_SCRUB_METADATA(fd fd, cmd const[XFS_IOC_SCRUB_METADATA], arg ptr[inout, xfs_scrub_metadata])
ioctl$XFS_IOC_FD_TO_HANDLE(fd fd, cmd const[XFS_IOC_FD_TO_HANDLE], arg ptr[inout, xfs_fsop_handlereq])
ioctl$XFS_IOC_PATH_TO_HANDLE(fd fd, cmd const[XFS_IOC_PATH_TO_HANDLE], arg ptr[inout, xfs_fsop_handlereq])
ioctl$XFS_IOC_PATH_TO_FSHANDLE(fd fd, cmd const[XFS_IOC_PATH_TO_FSHANDLE], arg ptr[inout, xfs_fsop_handlereq])
ioctl$XFS_IOC_OPEN_BY_HANDLE(fd fd, cmd const[XFS_IOC_OPEN_BY_HANDLE], arg ptr[in, xfs_fsop_handlereq])
ioctl$XFS_IOC_READLINK_BY_HANDLE(fd fd, cmd const[XFS_IOC_READLINK_BY_HANDLE], arg ptr[in, xfs_fsop_handlereq])
ioctl$XFS_IOC_ATTRLIST_BY_HANDLE(fd fd, cmd const[XFS_IOC_ATTRLIST_BY_HANDLE], arg ptr[inout, xfs_fsop_attrlist_handlereq])
ioctl$XFS_IOC_ATTRMULTI_BY_HANDLE(fd fd, cmd const[XFS_IOC_ATTRMULTI_BY_HANDLE], arg ptr[inout, xfs_fsop_attrmulti_handlereq])
ioctl$XFS_IOC_SWAPEXT(fd fd, cmd const[XFS_IOC_SWAPEXT], arg ptr[in, xfs_swapext])
ioctl$XFS_IOC_FSCOUNTS(fd fd, cmd const[XFS_IOC_FSCOUNTS], arg ptr[out, xfs_fsop_counts])
ioctl$XFS_IOC_SET_RESBLKS(fd fd, cmd const[XFS_IOC_SET_RESBLKS], arg ptr[inout, xfs_fsop_resblks])
ioctl$XFS_IOC_GET_RESBLKS(fd fd, cmd const[XFS_IOC_GET_RESBLKS], arg ptr[out, xfs_fsop_resblks])
ioctl$XFS_IOC_FSGROWFSDATA(fd fd, cmd const[XFS_IOC_FSGROWFSDATA], arg ptr[in, xfs_growfs_data])
ioctl$XFS_IOC_FSGROWFSLOG(fd fd, cmd const[XFS_IOC_FSGROWFSLOG], arg ptr[in, xfs_growfs_log])
ioctl$XFS_IOC_FSGROWFSRT(fd fd, cmd const[XFS_IOC_FSGROWFSRT], arg ptr[in, xfs_growfs_rt])
ioctl$XFS_IOC_GOINGDOWN(fd fd, cmd const[XFS_IOC_GOINGDOWN], arg ptr[in, int32])
ioctl$XFS_IOC_ERROR_INJECTION(fd fd, cmd const[XFS_IOC_ERROR_INJECTION], arg ptr[in, xfs_error_injection])
ioctl$XFS_IOC_ERROR_CLEARALL(fd fd, cmd const[XFS_IOC_ERROR_CLEARALL])
ioctl$XFS_IOC_FREE_EOFBLOCKS(fd fd, cmd const[XFS_IOC_FREE_EOFBLOCKS], arg ptr[in, xfs_fs_eofblocks])
ioctl$XFS_IOC_EXCHANGE_RANGE(fd fd, cmd const[XFS_IOC_EXCHANGE_RANGE], arg ptr[in, xfs_exchange_range])
ioctl$XFS_IOC_START_COMMIT(fd fd, cmd const[XFS_IOC_START_COMMIT], arg ptr[out, xfs_commit_range])
ioctl$XFS_IOC_COMMIT_RANGE(fd fd, cmd const[XFS_IOC_COMMIT_RANGE], arg ptr[in, xfs_commit_range])
xfs_getparents_iflags = XFS_GETPARENTS_IFLAGS_ALL
xfs_getparents_oflags = XFS_GETPARENTS_OFLAG_ROOT, XFS_GETPARENTS_OFLAG_DONE
bmap_iflags = BMV_IF_ATTRFORK, BMV_IF_NO_DMAPI_READ, BMV_IF_PREALLOC, BMV_IF_DELALLOC, BMV_IF_NO_HOLES, BMV_IF_COWFORK, BMV_IF_VALID
bmap_oflags = BMV_OF_PREALLOC, BMV_OF_DELALLOC, BMV_OF_LAST, BMV_OF_SHARED
xfs_scrub_vec_head_flags = XFS_SCRUB_VEC_FLAGS_ALL
xfs_scrub_type = XFS_SCRUB_TYPE_PROBE, XFS_SCRUB_TYPE_SB, XFS_SCRUB_TYPE_AGF, XFS_SCRUB_TYPE_AGFL, XFS_SCRUB_TYPE_AGI, XFS_SCRUB_TYPE_BNOBT, XFS_SCRUB_TYPE_CNTBT, XFS_SCRUB_TYPE_INOBT, XFS_SCRUB_TYPE_FINOBT, XFS_SCRUB_TYPE_RMAPBT, XFS_SCRUB_TYPE_REFCNTBT, XFS_SCRUB_TYPE_INODE, XFS_SCRUB_TYPE_BMBTD, XFS_SCRUB_TYPE_BMBTA, XFS_SCRUB_TYPE_BMBTC, XFS_SCRUB_TYPE_DIR, XFS_SCRUB_TYPE_XATTR, XFS_SCRUB_TYPE_SYMLINK, XFS_SCRUB_TYPE_PARENT, XFS_SCRUB_TYPE_RTBITMAP, XFS_SCRUB_TYPE_RTSUM, XFS_SCRUB_TYPE_UQUOTA, XFS_SCRUB_TYPE_GQUOTA, XFS_SCRUB_TYPE_PQUOTA, XFS_SCRUB_TYPE_FSCOUNTERS, XFS_SCRUB_TYPE_QUOTACHECK, XFS_SCRUB_TYPE_NLINKS, XFS_SCRUB_TYPE_HEALTHY, XFS_SCRUB_TYPE_DIRTREE, XFS_SCRUB_TYPE_NR, XFS_SCRUB_TYPE_BARRIER
xfs_scrub_flags = XFS_SCRUB_FLAGS_ALL, XFS_SCRUB_FLAGS_IN, XFS_SCRUB_FLAGS_OUT
attr_op_flags = ATTR_OP_GET, ATTR_OP_SET, ATTR_OP_REMOVE
xfs_ioc_attr_flags = XFS_IOC_ATTR_CREATE, XFS_IOC_ATTR_REPLACE, XFS_IOC_ATTR_ROOT, XFS_IOC_ATTR_SECURE
xfs_exchange_range_flags = XFS_EXCHANGE_RANGE_TO_EOF, XFS_EXCHANGE_RANGE_DSYNC, XFS_EXCHANGE_RANGE_DRY_RUN, XFS_EXCHANGE_RANGE_FILE1_WRITTEN, XFS_EXCHANGE_RANGE_ALL_FLAGS
xfs_scrub_metadata_flags = XFS_SCRUB_IFLAG_REPAIR, XFS_SCRUB_OFLAG_CORRUPT, XFS_SCRUB_OFLAG_PREEN, XFS_SCRUB_OFLAG_XFAIL, XFS_SCRUB_OFLAG_XCORRUPT, XFS_SCRUB_OFLAG_INCOMPLETE, XFS_SCRUB_OFLAG_WARNING, XFS_SCRUB_OFLAG_NO_REPAIR_NEEDED, XFS_SCRUB_IFLAG_FORCE_REBUILD
xfs_bulk_ireq_flags = XFS_BULK_IREQ_AGNO, XFS_BULK_IREQ_SPECIAL, XFS_BULK_IREQ_NREXT64
xfs_geom_flags = XFS_FSOP_GEOM_FLAGS_ATTR, XFS_FSOP_GEOM_FLAGS_NLINK, XFS_FSOP_GEOM_FLAGS_QUOTA, XFS_FSOP_GEOM_FLAGS_IALIGN, XFS_FSOP_GEOM_FLAGS_DALIGN, XFS_FSOP_GEOM_FLAGS_SHARED, XFS_FSOP_GEOM_FLAGS_EXTFLG, XFS_FSOP_GEOM_FLAGS_DIRV2, XFS_FSOP_GEOM_FLAGS_LOGV2, XFS_FSOP_GEOM_FLAGS_SECTOR, XFS_FSOP_GEOM_FLAGS_ATTR2, XFS_FSOP_GEOM_FLAGS_PROJID32, XFS_FSOP_GEOM_FLAGS_DIRV2CI, XFS_FSOP_GEOM_FLAGS_LAZYSB, XFS_FSOP_GEOM_FLAGS_V5SB, XFS_FSOP_GEOM_FLAGS_FTYPE, XFS_FSOP_GEOM_FLAGS_FINOBT, XFS_FSOP_GEOM_FLAGS_SPINODES, XFS_FSOP_GEOM_FLAGS_RMAPBT, XFS_FSOP_GEOM_FLAGS_REFLINK, XFS_FSOP_GEOM_FLAGS_BIGTIME, XFS_FSOP_GEOM_FLAGS_INOBTCNT, XFS_FSOP_GEOM_FLAGS_NREXT64, XFS_FSOP_GEOM_FLAGS_EXCHANGE_RANGE, XFS_FSOP_GEOM_FLAGS_PARENT, XFS_FSOP_GEOM_FLAGS_METADIR, XFS_FSOP_GEOM_FLAGS_ZONED
dioattr {
d_mem int32
d_miniosz int32
d_maxiosz int32
}
xfs_fsop_bulkreq {
lastip ptr[inout, int64]
icount int32
ubuffer ptr[out, array[xfs_bulkstat]]
ocount ptr[out, int32]
}
xfs_bulkstat_req {
hdr xfs_bulk_ireq
bulkstat ptr[out, array[xfs_bulkstat]]
}
xfs_bulk_ireq {
ino int64
flags flags[xfs_bulk_ireq_flags, int32]
icount int32
ocount int32
agno int32
reserved array[const[0, int64], 5]
}
xfs_bulkstat {
bs_ino int64
bs_size int64
bs_blocks int64
bs_xflags int64
bs_atime int64
bs_mtime int64
bs_ctime int64
bs_btime int64
bs_gen int32
bs_uid int32
bs_gid int32
bs_projectid int32
bs_atime_nsec int32
bs_mtime_nsec int32
bs_ctime_nsec int32
bs_btime_nsec int32
bs_blksize int32
bs_rdev int32
bs_cowextsize_blks int32
bs_extsize_blks int32
bs_nlink int32
bs_extents int32
bs_aextents int32
bs_version int16
bs_forkoff int16
bs_sick int16
bs_checked int16
bs_mode int16
bs_pad2 const[0, int16]
bs_extents64 int64
bs_pad array[const[0, int64], 6]
}
xfs_inumbers_req {
hdr xfs_bulk_ireq
inumbers array[xfs_inumbers]
}
xfs_inumbers {
xi_startino int64
xi_allocmask int64
xi_alloccount int8
xi_version int8
xi_padding array[const[0, int8], 6]
}
xfs_fsop_geom_v1 {
blocksize int32
rtextsize int32
agblocks int32
agcount int32
logblocks int32
sectsize int32
inodesize int32
imaxpct int32
datablocks int64
rtblocks int64
rtextents int64
logstart int64
uuid array[int8, 16]
sunit int32
swidth int32
version int32
flags int32
logsectsize int32
rtsectsize int32
dirblocksize int32
}
xfs_fsop_geom_v4 {
blocksize int32
rtextsize int32
agblocks int32
agcount int32
logblocks int32
sectsize int32
inodesize int32
imaxpct int32
datablocks int64
rtblocks int64
rtextents int64
logstart int64
uuid array[int8, 16]
sunit int32
swidth int32
version int32
flags int32
logsectsize int32
rtsectsize int32
dirblocksize int32
logsunit int32
}
xfs_fsop_geom {
blocksize int32
rtextsize int32
agblocks int32
agcount int32
logblocks int32
sectsize int32
inodesize int32
imaxpct int32
datablocks int64
rtblocks int64
rtextents int64
logstart int64
uuid array[int8, 16]
sunit int32
swidth int32
version int32
flags flags[xfs_geom_flags, int32]
logsectsize int32
rtsectsize int32
dirblocksize int32
logsunit int32
sick int32
checked int32
rgextents int32
rgcount int32
rtstart int64
rtreserved int64
reserved array[const[0, int64], 14]
}
xfs_ag_geometry {
ag_number int32
ag_length int32
ag_freeblks int32
ag_icount int32
ag_ifree int32
ag_sick int32
ag_checked int32
ag_flags int32
ag_reserved array[const[0, int64], 12]
}
xfs_rtgroup_geometry {
rg_number int32
rg_length int32
rg_sick int32
rg_checked int32
rg_flags int32
rg_reserved array[const[0, int32], 27]
}
xfs_attrlist_cursor {
opaque array[int32, 4]
}
xfs_fsid {
val array[int32, 2]
}
xfs_fid {
fid_len int16
fid_pad int16
fid_gen int32
fid_ino int64
}
xfs_handle {
ha_u xfs_handle_union
ha_fid xfs_fid
}
xfs_handle_union [
align int64
_ha_fsid xfs_fsid
]
xfs_getparents_rec {
gpr_parent xfs_handle
gpr_reclen int32
gpr_reserved const[0, int32]
gpr_name string
}
xfs_getparents {
gp_cursor xfs_attrlist_cursor
gp_iflags flags[xfs_getparents_iflags, int16]
gp_oflags flags[xfs_getparents_oflags, int16]
gp_bufsize int32
gp_reserved const[0, int64]
gp_buffer ptr[inout, array[xfs_getparents_rec]]
}
xfs_getparents_by_handle {
gph_handle xfs_handle
gph_request xfs_getparents
}
getbmap {
bmv_offset int64
bmv_block int64
bmv_length int64
bmv_count int32
bmv_entries int32
}
getbmapx {
bmv_offset int64
bmv_block int64
bmv_length int64
bmv_count int32
bmv_entries int32
bmv_iflags flags[bmap_iflags, int32]
bmv_oflags flags[bmap_oflags, int32]
bmv_unused1 const[0, int32]
bmv_unused2 const[0, int32]
}
xfs_scrub_vec_head {
svh_ino int64
svh_gen int32
svh_agno int32
svh_flags flags[xfs_scrub_vec_head_flags, int32]
svh_rest_us int16
svh_nr len[svh_vectors, int16]
svh_reserved const[0, int64]
svh_vectors ptr[inout, array[xfs_scrub_vec]]
}
xfs_scrub_metadata {
sm_type flags[xfs_scrub_type, int32]
sm_flags flags[xfs_scrub_metadata_flags, int32]
sm_ino int64
sm_gen int32
sm_agno int32
sm_reserved array[const[0, int64], 5]
}
xfs_scrub_vec {
sv_type flags[xfs_scrub_type, int32]
sv_flags flags[xfs_scrub_flags, int32]
sv_ret int32
sv_reserved const[0, int32]
}
xfs_fsop_handlereq {
fd fd
path ptr[in, string]
oflags flags[open_flags, int32]
ihandle ptr[in, xfs_handle]
ihandlen int32
ohandle ptr[out, xfs_handle]
ohandlen ptr[inout, int32]
}
xfs_fsop_attrlist_handlereq {
hreq xfs_fsop_handlereq
pos xfs_attrlist_cursor
flags int32
buflen len[buffer, int32]
buffer ptr[out, array[int8]]
}
xfs_attr_multiop {
am_opcode flags[attr_op_flags, int32]
am_error int32
am_attrname ptr[in, string]
am_attrvalue ptr[inout, array[int8]]
am_length len[am_attrvalue, int32]
am_flags flags[xfs_ioc_attr_flags, int32]
}
xfs_fsop_attrmulti_handlereq {
hreq xfs_fsop_handlereq
opcount len[ops, int32]
ops ptr[inout, array[xfs_attr_multiop]]
}
xfs_swapext {
sx_version const[0, int64]
sx_fdtarget fd
sx_fdtmp fd
sx_offset int64
sx_length int64
sx_pad array[const[0, int8], 16]
sx_stat xfs_bstat
}
xfs_bstat {
bs_ino int64
bs_mode int16
bs_nlink int16
bs_uid int32
bs_gid int32
bs_rdev int32
bs_blksize int32
bs_size int64
bs_atime xfs_bstime
bs_mtime xfs_bstime
bs_ctime xfs_bstime
bs_blocks int64
bs_xflags int32
bs_extsize int32
bs_extents int32
bs_gen int32
bs_projid_lo int16
bs_forkoff int16
bs_projid_hi int16
bs_sick int16
bs_checked int16
bs_pad array[const[0, int8], 2]
bs_cowextsize int32
bs_dmevmask int32
bs_dmstate int16
bs_aextents int16
}
xfs_bstime {
tv_sec intptr
tv_nsec int32
}
xfs_fsop_counts {
freedata int64
freertx int64
freeino int64
allocino int64
}
xfs_fsop_resblks {
resblks int64
resblks_avail int64
}
xfs_growfs_data {
newblocks int64
imaxpct int32
}
xfs_growfs_log {
newblocks int32
isint int32
}
xfs_growfs_rt {
newblocks int64
extsize int32
}
xfs_error_injection {
fd fd
errtag int32
}
xfs_fs_eofblocks {
eof_version int32
eof_flags int32
eof_uid int32
eof_gid int32
eof_prid int32
pad32 const[0, int32]
eof_min_file_size int64
pad64 array[const[0, int64], 12]
}
xfs_exchange_range {
file1_fd fd
pad const[0, int32]
file1_offset int64
file2_offset int64
length int64
flags flags[xfs_exchange_range_flags, int64]
}
xfs_commit_range {
file1_fd fd
pad const[0, int32]
file1_offset int64
file2_offset int64
length int64
flags flags[xfs_exchange_range_flags, int64]
file2_freshness array[int64, 6]
}
|