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
|
List of libfuse operations with their in/out arguments, created with
help of chatgpt. As of kernel 6.9 (protocol 7.40). The list
was only partly human verified - use with care.
1. FUSE_LOOKUP (1)
- in_args[0]: Variable (up to PATH_MAX for the file name)
- in_args[1]: Not used
- in_args[2]: Not used
- out_args[0]: Size of fuse_entry_out (typically 128 bytes)
- out_args[1]: Not used
- out_args[2]: Not used
2. FUSE_FORGET (2)
- in_args[0]: Size of fuse_forget_in (typically 8 bytes)
- in_args[1]: Not used
- in_args[2]: Not used
- out_args[0]: Not used
- out_args[1]: Not used
- out_args[2]: Not used
3. FUSE_GETATTR (3)
- in_args[0]: Size of fuse_getattr_in (16 bytes)
- in_args[1]: Not used
- in_args[2]: Not used
- out_args[0]: Size of fuse_attr_out (typically 96 bytes)
- out_args[1]: Not used
- out_args[2]: Not used
4. FUSE_SETATTR (4)
- in_args[0]: Size of fuse_setattr_in (typically 32 bytes)
- in_args[1]: Not used
- in_args[2]: Not used
- out_args[0]: Size of fuse_attr_out (typically 96 bytes)
- out_args[1]: Not used
- out_args[2]: Not used
5. FUSE_READLINK (5)
- in_args[0]: Size of fuse_readlink_in (16 bytes)
- in_args[1]: Not used
- in_args[2]: Not used
- out_args[0]: Variable (size of the link target path)
- out_args[1]: Not used
- out_args[2]: Not used
6. FUSE_SYMLINK (6)
- in_args[0]: Variable (new link file name, up to PATH_MAX)
- in_args[1]: Variable (target path for the symlink, up to PATH_MAX)
- in_args[2]: Not used
- out_args[0]: Size of fuse_entry_out (typically 128 bytes)
- out_args[1]: Not used
- out_args[2]: Not used
7. Unused (7)
8. FUSE_MKNOD (8)
- in_args[0]: Size of fuse_mknod_in (24 bytes)
- in_args[1]: Variable (file name, up to PATH_MAX)
- in_args[2]: Not used
- out_args[0]: Size of fuse_entry_out (typically 128 bytes)
- out_args[1]: Not used
- out_args[2]: Not used
9. FUSE_MKDIR (9)
- in_args[0]: Size of fuse_mkdir_in (16 bytes)
- in_args[1]: Variable (directory name, up to PATH_MAX)
- in_args[2]: Not used
- out_args[0]: Size of fuse_entry_out (typically 128 bytes)
- out_args[1]: Not used
- out_args[2]: Not used
10. FUSE_UNLINK (10)
- in_args[0]: Variable (file name, up to PATH_MAX)
- in_args[1]: Not used
- in_args[2]: Not used
- out_args[0]: Not used
- out_args[1]: Not used
- out_args[2]: Not used
11. FUSE_RMDIR (11)
- in_args[0]: Variable (directory name, up to PATH_MAX)
- in_args[1]: Not used
- in_args[2]: Not used
- out_args[0]: Not used
- out_args[1]: Not used
- out_args[2]: Not used
12. FUSE_RENAME (12)
- in_args[0]: Size of fuse_rename_in (24 bytes)
- in_args[1]: Variable (old path, up to PATH_MAX)
- in_args[2]: Variable (new path, up to PATH_MAX)
- out_args[0]: Not used
- out_args[1]: Not used
- out_args[2]: Not used
13. FUSE_LINK (13)
- in_args[0]: Size of fuse_link_in (16 bytes)
- in_args[1]: Variable (new link path, up to PATH_MAX)
- in_args[2]: Not used
- out_args[0]: Size of fuse_entry_out (typically 128 bytes)
- out_args[1]: Not used
- out_args[2]: Not used
14. FUSE_OPEN (14)
- in_args[0]: Size of fuse_open_in (8 bytes)
- in_args[1]: Not used
- in_args[2]: Not used
- out_args[0]: Size of fuse_open_out (24 bytes)
- out_args[1]: Not used
- out_args[2]: Not used
15. FUSE_READ (15)
- in_args[0]: Size of fuse_read_in (32 bytes)
- in_args[1]: Not used
- in_args[2]: Not used
- out_args[0]: Variable (data read from the file)
- out_args[1]: Not used
- out_args[2]: Not used
16. FUSE_WRITE (16)
- in_args[0]: Size of fuse_write_in (32 bytes)
- in_args[1]: Variable (data to write)
- in_args[2]: Not used
- out_args[0]: Size of fuse_write_out (24 bytes)
- out_args[1]: Not used
- out_args[2]: Not used
17. FUSE_STATFS (17)
- in_args[0]: Size of fuse_statfs_in (16 bytes)
- in_args[1]: Not used
- in_args[2]: Not used
- out_args[0]: Size of fuse_statfs_out (typically 96 bytes)
- out_args[1]: Not used
- out_args[2]: Not used
18. FUSE_RELEASE (18)
- in_args[0]: Size of fuse_release_in (16 bytes)
- in_args[1]: Not used
- in_args[2]: Not used
- out_args[0]: Not used
- out_args[1]: Not used
- out_args[2]: Not used
19. Unused (19)
20. FUSE_FSYNC (20)
- in_args[0]: Size of fuse_fsync_in (16 bytes)
- in_args[1]: Not used
- in_args[2]: Not used
- out_args[0]: Not used
- out_args[1]: Not used
- out_args[2]: Not used
21. FUSE_SETXATTR (21)
- in_args[0]: Size of fuse_setxattr_in (24 bytes)
- in_args[1]: Variable (name of attribute, up to 255 bytes)
- in_args[2]: Variable (value of attribute)
- out_args[0]: Not used
- out_args[1]: Not used
- out_args[2]: Not used
- When FUSE_SETXATTR_EXT is not set: Size of fuse_setxattr_in is 16 bytes (FUSE_COMPAT_SETXATTR_IN_SIZE).
22. FUSE_GETXATTR (22)
- in_args[0]: Size of fuse_getxattr_in (24 bytes)
- in_args[1]: Variable (name of attribute, up to 255 bytes)
- in_args[2]: Not used
- out_args[0]: Variable (value of the attribute)
- out_args[1]: Not used
- out_args[2]: Not used
23. FUSE_LISTXATTR (23)
- in_args[0]: Size of fuse_getxattr_in (24 bytes)
- in_args[1]: Not used
- in_args[2]: Not used
- out_args[0]: Variable (list of attribute names, each up to 255 bytes)
- out_args[1]: Not used
- out_args[2]: Not used
24. FUSE_REMOVEXATTR (24)
- in_args[0]: Variable (name of attribute, up to 255 bytes)
- in_args[1]: Not used
- in_args[2]: Not used
- out_args[0]: Not used
- out_args[1]: Not used
- out_args[2]: Not used
25. FUSE_FLUSH (25)
- in_args[0]: Size of fuse_flush_in (16 bytes)
- in_args[1]: Not used
- in_args[2]: Not used
- out_args[0]: Not used
- out_args[1]: Not used
- out_args[2]: Not used
26. FUSE_INIT (26)
- in_args[0]: Size of fuse_init_in (64 bytes)
- in_args[1]: Not used
- in_args[2]: Not used
- out_args[0]: Size of fuse_init_out (typically 80 bytes)
- out_args[1]: Not used
- out_args[2]: Not used
- Flags:
- FUSE_SECURITY_CTX
- FUSE_CREATE_SUPP_GROUP
- FUSE_SETXATTR_EXT
- FUSE_COMPAT_SETXATTR_IN_SIZE
- Additional flags may include FUSE_ASYNC_READ, FUSE_POSIX_LOCKS, FUSE_FILE_OPS, etc.
27. FUSE_OPENDIR (27)
- in_args[0]: Size of fuse_open_in (8 bytes)
- in_args[1]: Not used
- in_args[2]: Not used
- out_args[0]: Size of fuse_open_out (24 bytes)
- out_args[1]: Not used
- out_args[2]: Not used
28. FUSE_READDIR (28)
- in_args[0]: Size of fuse_read_in (32 bytes)
- in_args[1]: Not used
- in_args[2]: Not used
- out_args[0]: Variable (directory entries)
- out_args[1]: Not used
- out_args[2]: Not used
29. FUSE_RELEASEDIR (29)
- in_args[0]: Size of fuse_release_in (16 bytes)
- in_args[1]: Not used
- in_args[2]: Not used
- out_args[0]: Not used
- out_args[1]: Not used
- out_args[2]: Not used
30. FUSE_FSYNCDIR (30)
- in_args[0]: Size of fuse_fsync_in (16 bytes)
- in_args[1]: Not used
- in_args[2]: Not used
- out_args[0]: Not used
- out_args[1]: Not used
- out_args[2]: Not used
31. FUSE_GETLK (31)
- in_args[0]: Size of fuse_lk_in (32 bytes)
- in_args[1]: Not used
- in_args[2]: Not used
- out_args[0]: Size of fuse_lk_out (typically 32 bytes)
- out_args[1]: Not used
- out_args[2]: Not used
32. FUSE_SETLK (32)
- in_args[0]: Size of fuse_lk_in (32 bytes)
- in_args[1]: Not used
- in_args[2]: Not used
- out_args[0]: Not used
- out_args[1]: Not used
- out_args[2]: Not used
33. FUSE_SETLKW (33)
- in_args[0]: Size of fuse_lk_in (32 bytes)
- in_args[1]: Not used
- in_args[2]: Not used
- out_args[0]: Not used
- out_args[1]: Not used
- out_args[2]: Not used
34. FUSE_ACCESS (34)
- in_args[0]: Size of fuse_access_in (16 bytes)
- in_args[1]: Not used
- in_args[2]: Not used
- out_args[0]: Not used
- out_args[1]: Not used
- out_args[2]: Not used
35. FUSE_CREATE (35)
- in_args[0]: Size of fuse_create_in (16 bytes)
- in_args[1]: Variable (file name, up to PATH_MAX)
- in_args[2]: Not used
- out_args[0]: Size of fuse_entry_out (typically 128 bytes)
- out_args[1]: Size of fuse_open_out (24 bytes)
- out_args[2]: Not used
- When FUSE_SECURITY_CTX is set (fc->init_security): Additional security context included in in_args and/or out_args.
- When FUSE_CREATE_SUPP_GROUP is set (fc->create_supp_group): Additional supplementary group information included in in_args.
36. FUSE_INTERRUPT (36)
- in_args[0]: Size of fuse_interrupt_in (8 bytes)
- in_args[1]: Not used
- in_args[2]: Not used
- out_args[0]: Not used
- out_args[1]: Not used
- out_args[2]: Not used
37. FUSE_BMAP (37)
- in_args[0]: Size of fuse_bmap_in (16 bytes)
- in_args[1]: Not used
- in_args[2]: Not used
- out_args[0]: Size of fuse_bmap_out (16 bytes)
- out_args[1]: Not used
- out_args[2]: Not used
38. FUSE_DESTROY (38)
- in_args[0]: Not used
- in_args[1]: Not used
- in_args[2]: Not used
- out_args[0]: Not used
- out_args[1]: Not used
- out_args[2]: Not used
39. FUSE_IOCTL (39)
- in_args[0]: Size of fuse_ioctl_in (64 bytes)
- in_args[1]: Variable (ioctl command data)
- in_args[2]: Not used
- out_args[0]: Size of fuse_ioctl_out (32 bytes)
- out_args[1]: Variable (data returned by the ioctl command)
- out_args[2]: Not used
40. FUSE_POLL (40)
- in_args[0]: Size of fuse_poll_in (16 bytes)
- in_args[1]: Not used
- in_args[2]: Not used
- out_args[0]: Size of fuse_poll_out (16 bytes)
- out_args[1]: Not used
- out_args[2]: Not used
41. FUSE_NOTIFY_REPLY (41)
- in_args[0]: Variable (reply data)
- in_args[1]: Not used
- in_args[2]: Not used
- out_args[0]: Not used
- out_args[1]: Not used
- out_args[2]: Not used
42. FUSE_BATCH_FORGET (42)
- in_args[0]: Variable (size depends on the number of forget requests)
- in_args[1]: Not used
- in_args[2]: Not used
- out_args[0]: Not used
- out_args[1]: Not used
- out_args[2]: Not used
43. FUSE_FALLOCATE (43)
- in_args[0]: Size of fuse_fallocate_in (24 bytes)
- in_args[1]: Not used
- in_args[2]: Not used
- out_args[0]: Not used
- out_args[1]: Not used
- out_args[2]: Not used
44. FUSE_READDIRPLUS (44)
- in_args[0]: Size of fuse_read_in (32 bytes)
- in_args[1]: Not used
- in_args[2]: Not used
- out_args[0]: Variable (directory entries)
- out_args[1]: Not used
- out_args[2]: Not used
45. FUSE_RENAME2 (45)
- in_args[0]: Size of fuse_rename2_in (32 bytes)
- in_args[1]: Variable (old path, up to PATH_MAX)
- in_args[2]: Variable (new path, up to PATH_MAX)
- out_args[0]: Not used
- out_args[1]: Not used
- out_args[2]: Not used
46. FUSE_LSEEK (46)
- in_args[0]: Size of fuse_lseek_in (16 bytes)
- in_args[1]: Not used
- in_args[2]: Not used
- out_args[0]: Size of fuse_lseek_out (16 bytes)
- out_args[1]: Not used
- out_args[2]: Not used
47. FUSE_COPY_FILE_RANGE (47)
- in_args[0]: Size of fuse_copy_file_range_in (48 bytes)
- in_args[1]: Not used
- in_args[2]: Not used
- out_args[0]: Size of fuse_write_out (24 bytes)
- out_args[1]: Not used
- out_args[2]: Not used
48. FUSE_SETUPMAPPING (48)
- in_args[0]: Size of fuse_setupmapping_in (32 bytes)
- in_args[1]: Variable (data to map)
- in_args[2]: Not used
- out_args[0]: Not used
- out_args[1]: Not used
- out_args[2]: Not used
49. FUSE_REMOVEMAPPING (49)
- in_args[0]: Variable (size depends on the number of mappings to remove)
- in_args[1]: Not used
- in_args[2]: Not used
- out_args[0]: Not used
- out_args[1]: Not used
- out_args[2]: Not used
50. FUSE_SYNCFS (50)
- in_args[0]: Size of fuse_syncfs_in (16 bytes)
- in_args[1]: Not used
- in_args[2]: Not used
- out_args[0]: Not used
- out_args[1]: Not used
- out_args[2]: Not used
51. FUSE_TMPFILE (51)
- in_args[0]: Size of fuse_create_in (16 bytes)
- in_args[1]: Variable (file name, up to PATH_MAX)
- in_args[2]: Not used
- out_args[0]: Size of fuse_entry_out (typically 128 bytes)
- out_args[1]: Size of fuse_open_out (24 bytes)
- out_args[2]: Not used
- When FUSE_SECURITY_CTX is set (fc->init_security): Additional security context included in in_args and/or out_args.
- When FUSE_CREATE_SUPP_GROUP is set (fc->create_supp_group): Additional supplementary group information included in in_args.
52. FUSE_STATX (52)
- in_args[0]: Size of fuse_statx_in (32 bytes)
- in_args[1]: Not used
- in_args[2]: Not used
- out_args[0]: Size of fuse_statx_out (typically 256 bytes)
- out_args[1]: Not used
- out_args[2]: Not used
|