Antonio SJ Musumeci
766b923116
Fix thread pool destruction where threads don't explicitly exit themselves
1 year ago
Antonio SJ Musumeci
2377cb05b6
Add thread names for easier debugging
1 year ago
Antonio SJ Musumeci
0aafdefc18
Add ability to invalidate gid cache on demand
SIGUSR2 or ioctl
1 year ago
Antonio SJ Musumeci
6dcf6111af
Add callbacks for newer functions
* setupmapping
* removemapping
* syncfs
* tmpfile
1 year ago
Antonio SJ Musumeci
51d97bb444
Move fuse thread args out of fuse session object
1 year ago
Antonio SJ Musumeci
22833bdfe2
Align msg buffer memory to allow O_DIRECT to work
1 year ago
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.
2 years ago
Antonio SJ Musumeci
6bc3d77992
Fix crash when exiting with open deleted files
2 years ago
Antonio SJ Musumeci
373d331f39
Rework fuse read to use same buffers as messages
2 years ago
Antonio SJ Musumeci
34310170ac
Add ability to pin read and processing threads
2 years ago
Antonio SJ Musumeci
7ed91c1668
Backport bug fixes from libfuse3
2 years ago
Antonio SJ Musumeci
d11807ef7c
Remove use_ino option and make behavior same as if set
2 years ago
Antonio SJ Musumeci
24423b8d2a
Add async message processing
2 years ago
Antonio SJ Musumeci
a6ca96fa08
Fix printf for 32bit systems
2 years ago
Antonio SJ Musumeci
d14427ad9e
Fix reading of setxattr name
2 years ago
Antonio SJ Musumeci
ddf5e53aa4
Misc cleanup
2 years ago
Antonio SJ Musumeci
7606430188
Remove libfuse abstraction in prep for adding request data
2 years ago
Antonio SJ Musumeci
9d056d609f
Remove unnecessary libfuse abstractions
2 years ago
Antonio SJ Musumeci
14c2ff9ab8
Return ENOENT when dotdot for root node requested
3 years ago
Antonio SJ Musumeci
b95ff8ba3a
Lock less often during logging
3 years ago
Antonio SJ Musumeci
3f060f4512
Change ENOENT to ESTALE for looking up paths to handle rename race conditions
As done in https://github.com/libfuse/libfuse/pull/636
3 years ago
Antonio SJ Musumeci
9ca10b2413
Rework node slab garbage collection to limit blocking work threads
Also remove debug mode from forcing foreground mode
3 years ago
Antonio SJ Musumeci
68b3026264
Remove embedded name in node struct
The 32 byte array is below the average size so those 32 bytes are wasted a
large portion of the time.
3 years ago
Antonio SJ Musumeci
18dead4d86
Add new debug printing routines
3 years ago
Antonio SJ Musumeci
5f737cb7bf
Add option to log node memory usage metrics
3 years ago
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.
3 years ago
Antonio SJ Musumeci
8150957a01
Fix regression from remember_node refactor
3 years ago
Antonio SJ Musumeci
4ea0de3ef2
Rework dirents buffer management
3 years ago
Antonio SJ Musumeci
6b5c484fbf
Major rework of memory allocation using fixed mem pools
3 years ago
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.
3 years ago
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
5 years ago
Antonio SJ Musumeci
3900543970
fix segv: zero out data structures
4 years ago
Antonio SJ Musumeci
1b26f4908e
general cleanup, slight memory reduction
4 years ago
Antonio SJ Musumeci
dc1b698847
libfuse cleanup: remove single threaded
4 years ago
Antonio SJ Musumeci
3c761b708b
libfuse cleanup: remove libfuse API compatibility
4 years ago
Antonio SJ Musumeci
f9b831eb1a
libfuse cleanup: reindent
4 years ago
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.
5 years ago
Antonio SJ Musumeci
c0990644e8
remove unnecessary libfuse flags nopath, nullpath_ok, and utime_omit_ok
5 years ago
Antonio SJ Musumeci
62899565e6
temporary fix for short readdirs on NFS
5 years ago
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
5 years ago
Antonio SJ Musumeci
d119807adb
restructure readdir, add readdir_plus
Does not enable READDIR_AUTO. Might add in the future.
6 years ago
Antonio SJ Musumeci
4b9f3de814
add ctime support
5 years ago
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)
5 years ago
Antonio SJ Musumeci
50ad648ce4
initialize mutex to fix lockup
5 years ago
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.
6 years ago
Antonio SJ Musumeci
8cb7195c3e
add copy_file_range support
6 years ago
Antonio SJ Musumeci
529a953e30
add file caching across opens and runtime control
6 years ago
Antonio SJ Musumeci
2323c16316
add readdir caching
6 years ago
Antonio SJ Musumeci
61cded5b34
fix for unlink race condition
6 years ago
Antonio SJ Musumeci
3a66a68edb
ensure marking open files renamed over as hidden
6 years ago