aboutsummaryrefslogtreecommitdiffstats
path: root/doc/libfuse-operations.txt
blob: cc4cb450b599cfbdbc0cdf89a4efcc560e0c2160 (plain) (blame)
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]: Size of fuse_symlink_in (variable)
   - in_args[1]: Variable (target 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

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