Antonio SJ Musumeci
373d331f39
Rework fuse read to use same buffers as messages
2 years ago
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.
2 years ago
Antonio SJ Musumeci
34310170ac
Add ability to pin read and processing threads
2 years ago
Antonio SJ Musumeci
9adddfc66d
Add option to lazy umount target mount point
2 years ago
Antonio SJ Musumeci
7ed91c1668
Backport bug fixes from libfuse3
2 years ago
Antonio SJ Musumeci
92ccfd3c89
Hard code setting of allow_other, ignore when set
2 years ago
Antonio SJ Musumeci
3ee93d4c56
Remove 'nonempty' argument
This makes it like all other filesystems and brings it into alignment
with libfuse3's behavior.
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
094ad862e7
Fix regression testing for implemented functions
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
dba9c4451a
Remove write_buf, simplify FUSE msg dispatching
2 years ago
Antonio SJ Musumeci
9d056d609f
Remove unnecessary libfuse abstractions
2 years ago
Antonio SJ Musumeci
32e2c9c48e
Tweaks for 32bit systems
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
5263a65dcf
Remove usage printing regression in mount_bsd
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
80f30999fa
properly initialize fuse_buf in worker loop
4 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
7e173108fd
libfuse cleanup: add more header include guards
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
3bfdd78434
libfuse cleanup: remove cuse
4 years ago
Antonio SJ Musumeci
5f12fb6a5f
libfuse cleanup: remove unnecessary files
4 years ago
Antonio SJ Musumeci
f9b831eb1a
libfuse cleanup: reindent
4 years ago
Antonio SJ Musumeci
5989d41a86
readdir: use getdents64 for compatibility with ARM64
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
dbdd3e22fc
additional readdir refactor cleanup
Differences between readdir and getdents is minimal at best. Leaving code
for now to allow for possible expansion later.
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
698c4147fc
fix getdent name length calculation
5 years ago
Antonio SJ Musumeci
9b2634a1e5
fix name length calculation for musc
5 years ago
Antonio SJ Musumeci
62873d2d3b
use getdents64 on linux
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