Emanuel Haupt
b5fd6f72e3
libfuse: fix narrowing conversion of nsec fields on i386
On 32 bit platforms tv_nsec is a signed long while the FUSE setattr
arguments provide nanoseconds as uint32_t. C++17 treats uint32_t -> long
in a brace initializer as a narrowing conversion and rejects it on ILP32
targets. This surfaced when building on FreeBSD i386 with clang 19 where
the compiler refused the list initialization of struct timespec.
Add explicit static_cast<long>() for the nsec fields to make the
conversion intentional and portable. This avoids build failures on i386
while leaving 64 bit builds unchanged.
2 days ago
trapexit
41b65ae9e8
Misc cleanup for FreeBSD and clang ( #1560 )
4 weeks ago
trapexit
37f10888a9
Add more debugging options to makefiles and cleanup ( #1556 )
1 month ago
trapexit
727c522fb8
Rework config, centralize fuse config ( #1547 )
1 month ago
trapexit
0371f03def
Rework how fuse request context is handled ( #1543 )
2 months ago
trapexit
2f3e807e9d
Add getdents based readdir functions for Linux ( #1533 )
2 months ago
trapexit
8c649d33ee
Start using std::filesystem::path for fusepath ( #1522 )
2 months ago
trapexit
b18aba86b6
Build improvements ( #1501 )
* Remove python dependency
* Remove ecfd
* Improve makefiles
* Make preload.so more 32bit compatible
4 months ago
trapexit
fa851eda3a
Ensure passthrough and keep_cache are mutually exclusive ( #1493 )
5 months ago
trapexit
f852474073
Update the secondary group cache ( #1492 )
* Use concurrent_flat_map to build a global cache rather than per
thread.
* Create global maintanence thread manager for clearing unused cache
entries.
5 months ago
trapexit
e310d24615
Add support for FUSE passthrough
6 months ago
trapexit
92312c8507
Add debugging of mutexes ( #1470 )
When DEBUG defined it will used timed locks which will log when held
too long along with where.
6 months ago
trapexit
fa3266ca7f
Add podman release build tooling + misc build fixes ( #1455 )
7 months ago
Antonio SJ Musumeci
80085c9844
Add statx support
8 months ago
Antonio SJ Musumeci
9056898bbf
Move fuse.c and fuse_lowlevel.c to C++
2 years ago
Antonio SJ Musumeci
951eb9540d
Ensure lookups of FUSE_ROOT_ID always return generation=0
2 years ago
Antonio SJ Musumeci
0ca5d6aad0
Add export-support option as possible workaround for NFS EIO issues
2 years ago
Antonio SJ Musumeci
766b923116
Fix thread pool destruction where threads don't explicitly exit themselves
2 years ago
Antonio SJ Musumeci
2377cb05b6
Add thread names for easier debugging
2 years ago
Antonio SJ Musumeci
0aafdefc18
Add ability to invalidate gid cache on demand
SIGUSR2 or ioctl
2 years ago
Antonio SJ Musumeci
6dcf6111af
Add callbacks for newer functions
* setupmapping
* removemapping
* syncfs
* tmpfile
2 years ago
Antonio SJ Musumeci
51d97bb444
Move fuse thread args out of fuse session object
2 years ago
Antonio SJ Musumeci
22833bdfe2
Align msg buffer memory to allow O_DIRECT to work
2 years 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.
3 years ago
Antonio SJ Musumeci
6bc3d77992
Fix crash when exiting with open deleted files
3 years ago
Antonio SJ Musumeci
373d331f39
Rework fuse read to use same buffers as messages
3 years ago
Antonio SJ Musumeci
34310170ac
Add ability to pin read and processing threads
3 years ago
Antonio SJ Musumeci
7ed91c1668
Backport bug fixes from libfuse3
3 years ago
Antonio SJ Musumeci
d11807ef7c
Remove use_ino option and make behavior same as if set
3 years ago
Antonio SJ Musumeci
24423b8d2a
Add async message processing
3 years ago
Antonio SJ Musumeci
a6ca96fa08
Fix printf for 32bit systems
3 years ago
Antonio SJ Musumeci
d14427ad9e
Fix reading of setxattr name
3 years ago
Antonio SJ Musumeci
ddf5e53aa4
Misc cleanup
3 years ago
Antonio SJ Musumeci
7606430188
Remove libfuse abstraction in prep for adding request data
3 years ago
Antonio SJ Musumeci
9d056d609f
Remove unnecessary libfuse abstractions
3 years ago
Antonio SJ Musumeci
14c2ff9ab8
Return ENOENT when dotdot for root node requested
4 years ago
Antonio SJ Musumeci
b95ff8ba3a
Lock less often during logging
4 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
4 years ago
Antonio SJ Musumeci
9ca10b2413
Rework node slab garbage collection to limit blocking work threads
Also remove debug mode from forcing foreground mode
4 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.
4 years ago
Antonio SJ Musumeci
18dead4d86
Add new debug printing routines
4 years ago
Antonio SJ Musumeci
5f737cb7bf
Add option to log node memory usage metrics
4 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.
4 years ago
Antonio SJ Musumeci
8150957a01
Fix regression from remember_node refactor
4 years ago
Antonio SJ Musumeci
4ea0de3ef2
Rework dirents buffer management
4 years ago
Antonio SJ Musumeci
6b5c484fbf
Major rework of memory allocation using fixed mem pools
4 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.
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
6 years ago
Antonio SJ Musumeci
3900543970
fix segv: zero out data structures
5 years ago
Antonio SJ Musumeci
1b26f4908e
general cleanup, slight memory reduction
5 years ago