libfuse/doc/libfuse-operations.txt
Bernd Schubert 8a3746fe0e Correct arg documentation for FUSE_READLINK
It does not have an in-argument.
2024-10-30 17:58:09 +01:00

419 lines
13 KiB
Plaintext

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]: Not used
- 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