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
2377cb05b6
Add thread names for easier debugging
2023-08-14 17:51:41 -05:00
Antonio SJ Musumeci
0aafdefc18
Add ability to invalidate gid cache on demand
...
SIGUSR2 or ioctl
2023-08-13 23:30:52 -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
22833bdfe2
Align msg buffer memory to allow O_DIRECT to work
2023-07-09 15:32:11 -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
6bc3d77992
Fix crash when exiting with open deleted files
2023-04-05 00:32:30 -04: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
34310170ac
Add ability to pin read and processing threads
2023-02-19 17:52:29 -05:00
Antonio SJ Musumeci
7ed91c1668
Backport bug fixes from libfuse3
2023-01-28 01:17:07 -05:00
Antonio SJ Musumeci
d11807ef7c
Remove use_ino option and make behavior same as if set
2023-01-16 16:21:44 -05:00
Antonio SJ Musumeci
24423b8d2a
Add async message processing
2023-01-16 13:15:53 -05:00
Antonio SJ Musumeci
a6ca96fa08
Fix printf for 32bit systems
2022-12-08 22:04:15 -05:00
Antonio SJ Musumeci
d14427ad9e
Fix reading of setxattr name
2022-12-08 18:40:08 -05:00
Antonio SJ Musumeci
ddf5e53aa4
Misc cleanup
2022-11-27 22:23:38 -06: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
9d056d609f
Remove unnecessary libfuse abstractions
2022-11-07 23:09:25 -05:00
Antonio SJ Musumeci
14c2ff9ab8
Return ENOENT when dotdot for root node requested
2022-04-12 23:17:39 -04:00
Antonio SJ Musumeci
b95ff8ba3a
Lock less often during logging
2022-03-20 22:34:55 -04:00
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
2022-03-20 12:09:22 -04:00
Antonio SJ Musumeci
9ca10b2413
Rework node slab garbage collection to limit blocking work threads
...
Also remove debug mode from forcing foreground mode
2022-03-19 13:33:14 -04:00
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.
2021-11-01 21:08:58 -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
8150957a01
Fix regression from remember_node refactor
2021-09-30 22:13:29 -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
3900543970
fix segv: zero out data structures
2020-12-13 13:40:04 -05:00
Antonio SJ Musumeci
1b26f4908e
general cleanup, slight memory reduction
2020-11-19 22:58:52 -05: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
f9b831eb1a
libfuse cleanup: reindent
2020-08-07 16:38:24 -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
62899565e6
temporary fix for short readdirs on NFS
2020-07-08 14:10:53 -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
d119807adb
restructure readdir, add readdir_plus
...
Does not enable READDIR_AUTO. Might add in the future.
2020-02-22 19:45:52 -05:00
Antonio SJ Musumeci
4b9f3de814
add ctime support
2020-02-10 18:39:15 -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
50ad648ce4
initialize mutex to fix lockup
2019-09-07 14:10:36 -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
Antonio SJ Musumeci
529a953e30
add file caching across opens and runtime control
2019-05-30 00:10:08 -04:00
Antonio SJ Musumeci
2323c16316
add readdir caching
2019-05-23 22:11:33 -04:00
Antonio SJ Musumeci
61cded5b34
fix for unlink race condition
2019-05-21 22:57:02 -04:00
Antonio SJ Musumeci
3a66a68edb
ensure marking open files renamed over as hidden
2019-05-19 23:25:46 -04:00