Antonio SJ Musumeci
07e7d76b7c
Add support for file io passthrough
...
If using Linux 6.9 or above and enabled (passthrough=true) files
opened or created will use the FUSE passthrough feature.
If direct-io=true / cache.files=off it will override passthrough. If
direct-io-allow-mmap is enabled only mmap will passthrough.
HANDLE_KILLPRIV and V2 are enabled now by default to remove the
kernel's need to issue getattr and getxattr requests.
moveonenospc will not work when leveraging passthrough.
2024-04-09 20:11:00 -05:00
Antonio SJ Musumeci
f0444a1ca9
Add support for 'direct-io-allow-mmap' if supported by kernel
2024-03-21 20:48:42 -05:00
Antonio SJ Musumeci
17fdbf7f42
Update fuse_kernel.h
2024-02-18 17:50:34 -06:00
Antonio SJ Musumeci
6aa6452d3e
Add flushonclose feature
2023-10-28 19:47:23 -05:00
Antonio SJ Musumeci
fd33df04a3
Update wyhash to 4.2
2023-10-21 18:03:05 -05:00
Antonio SJ Musumeci
569537df9e
Remove use of pthread_getname_np to work with older musl versions
2023-10-14 01:15:29 -05:00
Antonio SJ Musumeci
620cab2948
Rework thread pool queue depth impl
2023-10-14 00:58:10 -05:00
Antonio SJ Musumeci
766b923116
Fix thread pool destruction where threads don't explicitly exit themselves
2023-09-09 16:48:47 -05:00
Antonio SJ Musumeci
6dcf6111af
Add callbacks for newer functions
...
* setupmapping
* removemapping
* syncfs
* tmpfile
2023-08-13 17:38:13 -05:00
Antonio SJ Musumeci
51d97bb444
Move fuse thread args out of fuse session object
2023-07-30 22:52:43 -05:00
Antonio SJ Musumeci
5ab0fbcaee
Add manual GC triggering + configurable process queue depth
...
Yes, these are unrelated changes but somehow ended up being
prototyped together and I'm too lazy to separate them.
2023-06-26 22:44:23 -05:00
Antonio SJ Musumeci
6a14a10e6c
Fix read/write behavior and return value depending on direct_io
...
Also add parallel direct write option for 6.2+ kernels.
2023-06-24 23:06:14 -05:00
Antonio SJ Musumeci
373d331f39
Rework fuse read to use same buffers as messages
2023-02-26 23:31:44 -05:00
Antonio SJ Musumeci
84592a9f13
Remove splicing features
...
After numerous tests it was found the splice features were at best
the same performance as standard IO and at worse actually slower.
To simplify the code all splice features are removed.
2023-02-26 01:42:58 -05:00
Antonio SJ Musumeci
34310170ac
Add ability to pin read and processing threads
2023-02-19 17:52:29 -05:00
Antonio SJ Musumeci
a4491169b0
Remove FUSE_USE_VERSION, no longer used
2023-01-29 17:04:08 -05:00
Antonio SJ Musumeci
24423b8d2a
Add async message processing
2023-01-16 13:15:53 -05:00
Antonio SJ Musumeci
d14427ad9e
Fix reading of setxattr name
2022-12-08 18:40:08 -05:00
Antonio SJ Musumeci
7606430188
Remove libfuse abstraction in prep for adding request data
2022-11-26 23:30:27 -06:00
Antonio SJ Musumeci
dba9c4451a
Remove write_buf, simplify FUSE msg dispatching
2022-11-10 22:43:02 -05:00
Antonio SJ Musumeci
9d056d609f
Remove unnecessary libfuse abstractions
2022-11-07 23:09:25 -05:00
Antonio SJ Musumeci
316abba0ac
Update fuse_kernel.h
2022-11-03 23:28:44 -04:00
Antonio SJ Musumeci
18dead4d86
Add new debug printing routines
2021-10-27 22:12:10 -04:00
Antonio SJ Musumeci
5f737cb7bf
Add option to log node memory usage metrics
2021-10-11 11:57:16 -04:00
Antonio SJ Musumeci
930dad31de
Reduce struct node size
...
* Replace the stat values with a crc32b of them instead (for auto-cache)
* Replace char flag with bitfield
* Remove node generation. nodeid is an unsigned 64bit int. Would take 500K+ years
to rollover at 1M nodes per second.
2021-10-03 22:15:34 -04:00
Antonio SJ Musumeci
4ea0de3ef2
Rework dirents buffer management
2021-09-19 16:48:03 -04:00
Antonio SJ Musumeci
6b5c484fbf
Major rework of memory allocation using fixed mem pools
2021-09-19 16:48:03 -04:00
Antonio SJ Musumeci
43a6d66e3c
Major cleanup of libfuse to remove unneeded features
...
* Remove request interrupt code. Required tracking of all requests unnecesssarily.
* Remove all debugging printing. Have plans to do full replacement.
* Remove deprecated functions.
* Remove unneeded error checking.
* Remove "userdata" which was unused.
* Remove allow_root feature.
2021-08-29 00:05:30 -04:00
Antonio SJ Musumeci
8adebc9489
new features: follow-symlinks, rename-exdev, link-exdev
...
* follow-symlinks: allows mergerfs to transparently follow symlinks
* link-exdev: in the event a link returns EXDEV create a symlink instead
* rename-exdev: in the event a rename returns EXDEV move the oldpath and
create a symlink for the newpath
2021-02-11 23:24:08 -05:00
Antonio SJ Musumeci
1b26f4908e
general cleanup, slight memory reduction
2020-11-19 22:58:52 -05:00
Antonio SJ Musumeci
a925fbe59c
libfuse cleanup: extern cplusplus cleanup
2020-08-08 14:25:44 -04:00
Antonio SJ Musumeci
dc1b698847
libfuse cleanup: remove single threaded
2020-08-07 16:38:24 -04:00
Antonio SJ Musumeci
3c761b708b
libfuse cleanup: remove libfuse API compatibility
2020-08-07 16:38:24 -04:00
Antonio SJ Musumeci
3bfdd78434
libfuse cleanup: remove cuse
2020-08-07 16:38:24 -04:00
Antonio SJ Musumeci
f9b831eb1a
libfuse cleanup: reindent
2020-08-07 16:38:24 -04:00
Antonio SJ Musumeci
5989d41a86
readdir: use getdents64 for compatibility with ARM64
2020-08-02 18:43:09 -04:00
Antonio SJ Musumeci
c4a85f5fad
readdir: add dirent index array
...
This removes the risk of corrupted data being sent back to the kernel
should it use the offset from one opendir-readdir in another. In this case
it would at most skip dirents.
According to the standards the offset is only valid when used within
the opendir -> releasedir but NFS uses offsets across independent
calls.
2020-07-12 12:43:33 -04:00
Antonio SJ Musumeci
c0990644e8
remove unnecessary libfuse flags nopath, nullpath_ok, and utime_omit_ok
2020-07-08 19:25:23 -04:00
Antonio SJ Musumeci
dbdd3e22fc
additional readdir refactor cleanup
...
Differences between readdir and getdents is minimal at best. Leaving code
for now to allow for possible expansion later.
2020-06-27 23:17:21 -04:00
Antonio SJ Musumeci
54c41c4994
rework config management
...
* Add standard way to do str2val and val2str conversion
* Add support for a config file
* Add support for reading and writing settings via ioctl
2020-06-18 18:54:25 -04:00
Antonio SJ Musumeci
698c4147fc
fix getdent name length calculation
2020-03-12 23:45:20 -04:00
Antonio SJ Musumeci
62873d2d3b
use getdents64 on linux
2020-02-28 20:34:12 -05:00
Antonio SJ Musumeci
d119807adb
restructure readdir, add readdir_plus
...
Does not enable READDIR_AUTO. Might add in the future.
2020-02-22 19:45:52 -05:00
trapexit
4cb866cee9
Merge pull request #707 from trapexit/writeback-cache
...
add writeback caching
2020-02-10 19:22:44 -05:00
Antonio SJ Musumeci
bf4b39065b
update fuse_kernel.h
2020-02-10 18:54:07 -05:00
Antonio SJ Musumeci
4b9f3de814
add ctime support
2020-02-10 18:39:15 -05:00
Antonio SJ Musumeci
903d39f968
add writeback caching
2020-02-09 21:08:53 -05:00
Antonio SJ Musumeci
08e1bef5a9
improve nodeid generation
...
* Change fuse_ino_t to uint64_t
* Change id generation to 64bit
* Randomize generation value (should help with NFS)
2019-09-30 23:28:45 -04:00
Antonio SJ Musumeci
7cbd88ac81
allow setting of 'max_pages' (via 'fuse_msg_size')
...
Linux 4.20 and above allow setting the number of pages per FUSE message
upto 256 (4K * 256 = 1MiB). This can greatly increase read and write
speeds depending on the workload.
2019-06-03 21:01:19 -04:00
Antonio SJ Musumeci
8cb7195c3e
add copy_file_range support
2019-06-03 07:12:05 -04:00