Antonio S. Musumeci
76d3990776
Add fuse-read-spin-us: poll /dev/fuse briefly before blocking
...
After handling a request, a sync read thread polls its /dev/fuse fd for
up to fuse-read-spin-us microseconds before blocking in read(). Default
0 (disabled). Measured at 50us (tmpfs branch, direct_io): sequential
128K/1M reads +27-32%, 128K writes +14%, metadata walks +24-32%; no
change on 8 parallel streams or 1M writes. Costs roughly one core on a
busy-but-quiet mount, nothing when idle.
2026-10-14 19:55:12 -04:00
Antonio S. Musumeci
54166afe08
splice
2026-10-10 14:32:40 -04:00
Antonio SJ Musumeci
515b0549ef
docs/performance: explain mergerfs IO performance vs RAID
...
Describe why mergerfs does not aggregate branch performance like
RAID/ZFS (whose aggregate throughput is also capped by shared
interconnects) and instead provides independent per-branch
performance: best case A+B+C across concurrent streams, worst case
single-stream limited to one branch's speed.
2026-09-05 16:00:43 -04:00
natalefalco
8ea47df13e
Include Docker Compose setup for mergerfs
...
Added Docker Compose configuration for running mergerfs.
2026-07-31 08:13:59 -05:00
shyney7
42ab831d97
docs/setup: link install :z example to SELinux FAQ
2026-05-17 10:14:21 -05:00
shyney7
89b4046d11
docs/faq: add SELinux relabeling entry
2026-05-17 10:14:21 -05:00
Antonio SJ Musumeci
7ec6f8e2f2
Manage cloned /dev/fuse fds in sessions
...
- Store cloned read-worker fds on fuse_session and close them there.
- Set up clone fallback through session helpers used by the loop.
- Carry per-request fds through receive, process, and reply paths.
Tests show significant performance increases in highly concurrent
workloads on a high core count system. Upto 15% better on reads and
27% on writes.
2026-05-14 20:13:07 -05:00
Antonio SJ Musumeci
5f7fa17ad8
Inline ioprio disabled fast path
...
- Expose the ioprio enabled flag as an atomic for relaxed inline checks
- Inline SetFrom construction so disabled read/write paths avoid a function call
- Move priority application into a slow helper used only when ioprio is enabled
2026-05-14 00:22:06 -04:00
Antonio SJ Musumeci
30d59d4458
Use shared_mutex for fuse log config
...
- Guard fuse_cfg_t log file and filepath shared pointers with a shared mutex
- Replace atomic shared pointer loads and stores with shared and unique locks
2026-05-14 00:22:06 -04:00
Antonio SJ Musumeci
02dc36080c
Use shared_mutex for ReadDir state
...
- Replace atomic shared pointer loads/stores with shared/unique locking.
- Store the configured readdir mode directly as std::string.
- Copy the active ReadDir implementation under lock before invoking it.
2026-05-14 00:22:06 -04:00
Antonio SJ Musumeci
8734847968
Guard branch snapshots with shared_mutex
...
Important changes:
- Replace atomic shared_ptr operations with shared_mutex-protected snapshots.
- Retry copy-on-write branch updates when another writer publishes first.
- Keep long-running parsing and read-only filesystem checks outside branch locks.
2026-05-14 00:22:06 -04:00
Antonio SJ Musumeci
608cd00764
Use atomic open file reference counts
...
- Use relaxed increment under the map bucket lock when duplicating file handles.
- Use acq_rel decrement when releasing and checking for final references.
- Load moved ref_count with relaxed ordering during map insertion.
2026-05-14 00:22:06 -04:00
Antonio SJ Musumeci
b13727abde
Document readdir merge mutex scope
...
- Explain that the mutex is per readdir call.
- Document that only dirent deduplication and list append are serialized.
- Clarify that per-branch opendir and getdents64 work runs outside the critical section.
2026-05-14 00:22:06 -04:00
Antonio SJ Musumeci
231aac15cd
Use shared write locks until ENOSPC relocation
...
- Replace the per-file Mutex with std::shared_mutex for shared write access.
- Run direct and cached writes under a shared lock while the fd is stable.
- Retry failed writes under a unique lock before move-on-ENOSPC relocation.
2026-05-14 00:22:06 -04:00
Antonio SJ Musumeci
8b17d5f35e
Synchronize node updates with path release
...
- Add helpers that release path locks and update node state under f.lock.
- Update getattr and setattr stat-cache invalidation while preserving ESTALE handling.
- Rework create, open, tmpfile, and set_path_info to mutate lookup/open state under the shared lock.
2026-05-14 00:22:06 -04:00
Antonio SJ Musumeci
8608b2be46
Clarify releasedir readdir synchronization barrier
...
- Document the lock/unlock pair as an acquire/release barrier.
- Explain that releasedir waits for in-flight readdir calls before destroy/free.
- Warn against removing the synchronization despite it not being a critical section.
2026-05-14 00:22:06 -04:00
Antonio SJ Musumeci
1e0bd54989
Move statvfs cache to use shared mutex
...
Its read heavy and micro benchmarks show no regression on the low end
and 30%+ throughput improvements on the highend.
2026-05-14 00:22:06 -04:00
Antonio SJ Musumeci
56285fc6e5
Pass annobin override to RPM toolset builds
...
Important changes:
- Add Makefile RPMBUILD and RPMBUILD_FLAGS overrides for the rpm target.
- Detect /opt/rh GCC toolsets before RPM packaging.
- Pass --undefine _annotated_build to avoid Rocky 8 annobin plugin failures.
2026-05-13 17:01:41 -04:00
Antonio SJ Musumeci
dfe053a0ae
Require C++20-capable build toolchains
...
Important changes:
- Switch mergerfs and vendored libfuse Makefiles to -std=c++20.
- Select the latest available GCC/G++ or toolset in container builds.
- Verify compiler C++20 support during package installation.
- Fix dynamic SysLog formatting for fmt C++20 checks.
2026-05-13 13:55:43 -05:00
Antonio SJ Musumeci
12ac368e8b
Preserve CPPFLAGS in release builds
...
- Append -DNDEBUG to existing CPPFLAGS in the release target.
- Keep caller-provided build flags for Debian packaging.
2026-05-09 19:28:56 -05:00
Antonio SJ Musumeci
c8f32f9f25
update build system and dependency configuration
2026-05-09 18:55:23 -05:00
Antonio SJ Musumeci
ce3737ff33
Add new OS build files
2026-05-07 23:35:14 -04:00
Antonio SJ Musumeci
84e4cdeb7e
make all integration tests self-contained with ephemeral mounts
...
- Add mergerfs_mount() context manager in posix_parity.py that creates
temporary branch dirs in tests/.test_tmp/, mounts an ephemeral mergerfs
instance, and cleans up after use.
- Add find_mergerfs(), find_fusermount(), mount_mergerfs(), unmount_mergerfs()
helpers.
- Update run-tests to invoke each TEST_* script without a mountpoint arg.
- Update README.md to document the new `python3 tests/run-tests` invocation.
- Fix 44 tests to use mergerfs_mount() instead of expecting a pre-mounted path.
- Add tempfile import to 10 tests that were missing it.
- Fix TEST_mount_lifecycle to use mergerfs_mount() context manager.
- Fix TEST_posix_tmpfile missing join import.
- Fix TEST_cfg_xattr_modes error message framing (no "(known bug)").
- Fix TEST_posix_copy_file_range: loop-copy full size, compare st_size and
SHA256 hash; add NativeTmp for space management; route native temp to
tests/.test_tmp/ to avoid ENOSPC on /tmp.
- Fix TEST_posix_getattr_fgetattr: st_cmp skips st_size for dirs; add
compare_ino param for safe inode comparison when inodecalc=passthrough.
- Fix TEST_unlink_rename, TEST_use_* tests: namespace cleanup, consistent
variable naming, None check for cmpfunc.
- Fix TEST_readlink_semantics: remove type annotations to support older
Python; wrap in mergerfs_mount() try/except.
- Add flush=True to run-tests print so test names show immediately.
2026-05-07 21:47:40 -04:00
Antonio SJ Musumeci
6d6d73c7b3
Use unmount() on FreeBSD for ENOTCONN umount
2026-05-07 17:49:24 -04:00
Antonio SJ Musumeci
bea31543a0
update fuse_lib_tmpfile() node management to match fuse_lib_create()
2026-05-06 20:49:46 -04:00
Antonio SJ Musumeci
99835a0178
Document advisory locking limitation and update deprecated options
...
- Add documentation explaining that advisory file locking is not supported
- Add remember-nodes to deprecated options mapping
- Add comment explaining stat_crc32b fingerprint invalidation behavior
- Fix heading level for Host vs Container identity section
2026-05-06 20:49:46 -04:00
Antonio SJ Musumeci
342a1efcfb
Add QEMU binfmt setup and fix static installer
...
- Fix typo in static.installer: /pkg/ -> /pkgs/
- Add missing mkdir -p /build before makeself
- Mount pkgs directory via podman build -v so static.installer can access
previously built static tarballs without relying on bind mounts relative
to the build context
- Register qemu-user-static binfmt handlers for cross-compilation
- Make --git-repo optional when using --setup
2026-05-06 20:49:46 -04:00
Antonio SJ Musumeci
c587a127fb
add missing <new> include for std::nothrow in fuse_session.cpp
2026-05-06 20:49:46 -04:00
Antonio SJ Musumeci
f1034a3ad6
Remove timed node removal
2026-05-06 20:49:46 -04:00
Antonio SJ Musumeci
8117998205
Remove unused lock operation plumbing
2026-05-06 20:49:46 -04:00
Antonio SJ Musumeci
cc780bc521
libfuse: remove per-node lock bookkeeping
2026-05-06 20:49:46 -04:00
Antonio SJ Musumeci
14b7c8e607
Use stat fingerprint as cache validity sentinel
...
- Reserve a zero stat CRC to represent an invalid cache fingerprint.
- Include device, size, inode, mtime, and ctime data in the fingerprint.
- Recompute the fingerprint during auto-cache open before keeping cache.
2026-05-06 20:49:46 -04:00
Antonio SJ Musumeci
3ff9794fff
libfuse: fix use-after-free in fuse_lib_ioctl
2026-04-30 12:51:12 -05:00
Antonio SJ Musumeci
f71e27644e
vendor moodycamel queue and upgrade to 1.0.5
2026-04-30 08:43:42 -04:00
Antonio SJ Musumeci
943f91ff98
Strengthen mergerfs integration tests
...
- Make the test runner fail on failed tests and report explicit skips
- Strengthen assertions for O_DIRECT, LUP policy, EXDEV fallback, and xattrs
- Fix cleanup and file descriptor handling across test scripts
2026-04-29 20:25:20 -04:00
Antonio SJ Musumeci
ef1e01b5a5
Add unit and integration tests for recently changed code
...
Unit tests (29 new in tests/tests.cpp):
- str::eq() and str::startswith() char* nullptr safety
- str::from() u64/s64/int suffix parsing (K/M/G/T, overflow, invalid)
- num::humanize() byte formatting (0, 512, 1K, 1M, 1G, 1T, non-exact)
- RmdirErr priority error accumulation (ENOTEMPTY/EEXIST override rules)
- HashSet inline-to-heap growth, empty string, and large insertion
- fs::inode algorithm switching (valid/invalid names, passthrough raw ino,
distinct inodes across algorithms)
- RND::rand64() bounds (range, max, shrink_to_rand_elem)
- Branches::Impl copy and move assignment re-links default_minfreespace
Integration tests (5 new in tests/):
- TEST_policy_lup: LUP policy create and search
- TEST_rmdir_enotempty_priority: rmdir returns ENOTEMPTY for non-empty dirs
- TEST_open_after_unlink: read/write via fd after unlink
- TEST_api_xattr: mergerfs xattr API (fullpath, relpath, basepath, allpaths)
- TEST_movefile_enospc: moveonenospc configuration round-trip
Also: remove xattr nosys checks from TEST_cfg_xattr_modes, reformat
integration test scripts to use temp_dir/cleanup_dir helpers, and
minor parameter alignment changes in fuse_getxattr, fuse_init,
fuse_rename.
2026-04-29 17:41:00 -04:00
Antonio SJ Musumeci
50c0627b2b
Better handle make sanitize option
2026-04-29 12:24:10 -04:00
Antonio SJ Musumeci
660f556ac6
Don't return success on ENOTEMPTY rmdir errors
2026-04-29 12:23:49 -04:00
Antonio SJ Musumeci
997b036064
Reject invalid policies
2026-04-29 00:34:00 -04:00
Antonio SJ Musumeci
9308a3729c
When file unlinked check open_files map
...
Inadvertantly removed. Didn't realize that the kernel would not always
send file handle when unlinked.
2026-04-28 16:04:26 -04:00
Antonio SJ Musumeci
7616d8b1ac
Rework readlink to not depend on cstr nul termination
2026-04-26 01:37:08 -04:00
Antonio SJ Musumeci
a86092b3c2
Don't push docs for RC tags
2026-04-23 20:46:55 -05:00
Antonio SJ Musumeci
e613d9415f
Better same file check for fsck
2026-04-22 22:28:56 -05:00
Antonio SJ Musumeci
1a8eb326af
Tweak docs on NFS and identity management
2026-04-21 13:20:07 -05:00
Antonio SJ Musumeci
9fb1642e93
Fix docs regarding "noforget"
2026-04-20 23:25:47 -05:00
Antonio SJ Musumeci
8be86ee611
Remove mkdocs build github workflow
2026-04-19 23:48:13 -05:00
Antonio S. Musumeci
da68cf3a85
Formatting: normalize brace style and parameter alignment
...
No functional change: libfuse/helper.cpp (fuse_daemonize,
fuse_helper_opt_proc, fuse_parse_cmdline) and mergerfs
fuse_init.cpp (_want helpers) reformatted to match the project's
GNU-style brace placement and aligned parameter lists.
2026-04-18 13:47:23 -05:00
Antonio S. Musumeci
ec40866091
libfuse: small safety and portability fixes across opt/cpu/fusermount/maintenance_thread
...
- fuse_opt: reformat process_opt_param to project style; return the
rv from sscanf through a named local so the error branch prints
the failing option cleanly.
- cpu.cpp: when parsing /sys/devices/system/cpu/*/topology/core_id,
bail out cleanly on stream read failure rather than recording an
uninitialized core_id.
- fusermount: free(copy) on the success path of parsing the mount
option (previously leaked on every mount), and replace the fixed-
buffer sprintf into procfile with snprintf bounded by the buffer
size.
- maintenance_thread: widen the iteration count from int to u64
so a long-lived daemon doesn't wrap after ~68 years of ticks
(real effect: silence signed-overflow warnings under UBSan).
2026-04-18 13:47:23 -05:00
Antonio S. Musumeci
bd0714272e
libfuse: thread_pool/objpool/fuse_loop - safer memory and iteration
...
- ThreadPool::destroy used to iterate _threads directly while another
thread could be adjusting the same vector. Snapshot the vector
under the mutex and iterate the local copy for pthread_cancel /
pthread_join.
- ObjPool::construct now returns NULL when the pooled allocator
returns NULL instead of invoking placement-new on a null
pointer. In destroy, compute to_node(obj) before running the
destructor - the destructor may scrub bytes the to_node helper
reads.
- In the async/sync workers in fuse_loop, msgbuf_alloc can return
NULL under memory pressure. Fail the worker cleanly with a
diagnostic rather than dereferencing. Also introduce a small
_nproc() helper that treats hardware_concurrency()==0 as 1, so
the downstream min/max arithmetic doesn't produce a zero thread
count.
2026-04-18 13:47:23 -05:00
Antonio S. Musumeci
27acd9fcc7
libfuse: use atomic fuse_session pointer in signal handler
...
The signal handler reads the global session pointer from an async-
signal context while another thread installs/removes the session
via set/remove_signal_handlers. Use std::atomic<fuse_session*> with
acquire/release ordering so the handler either sees NULL or a fully
published session, never a torn pointer.
2026-04-18 13:47:23 -05:00
Antonio S. Musumeci
4516685ca7
libfuse: harden fuse.cpp against NULL nodes; use lock guards; check allocations
...
Collapse get_node/get_node_nocheck into a single function that
returns NULL when the node is absent rather than abort()ing.
Callers that previously assumed non-NULL now check the return value
and either reply ESTALE/ENOMEM or fall through gracefully; a few
places where the node is load-bearing (e.g. unhash during remove)
use fatal::abort with a descriptive message.
Switch mutex_lock / mutex_unlock pairs to mutex_lockguard so early
returns on error paths no longer leak the lock, and add NULL-safety
around fuse_dh in readdir/readdir_plus, fuse_dirents_init error
returns, the getattr path when both name and fh are empty, and the
msgbuf allocation in fuse_lib_read.
Pull the new xstrdup/xmalloc wrappers from xalloc.hpp for the root
node name so the common-case OOM path terminates with a diagnostic
instead of a silent corrupted node.
Also guard fuse_session_destroy against a NULL session - called
from error-recovery paths.
2026-04-18 13:47:23 -05:00
Antonio S. Musumeci
0bdbaf1d6c
libfuse: remove userdata from init/destroy APIs; drop unused fuse_reply_ioctl_iov
...
The low-level init/destroy callbacks were passed a userdata pointer
that mergerfs never consumed - the caller threaded it through
fuse_lowlevel_new only to hand it back unchanged. Remove the
parameter from the ops struct, from fuse_lowlevel_new(_common),
and from the internal fuse_ll struct; update fuse_lib_init and
fuse_lib_destroy accordingly.
Also drop fuse_reply_ioctl_iov: no caller in-tree invokes it and
the public API is defined by this vendored libfuse fork.
2026-04-18 13:47:23 -05:00
Antonio S. Musumeci
e67b7d0825
log: default debug log path to empty; skip set when empty
...
libfuse previously initialized its debug log filepath to
"/dev/stderr", forcing the config layer to reopen stderr on every
load whether or not the user asked for it. Default the libfuse log
path to "" and have the mergerfs config layer only forward the
request to libfuse when the user supplied an explicit path.
2026-04-18 13:47:23 -05:00
Antonio S. Musumeci
981d5473ee
str: null-safe same() and startswith()
...
Both helpers previously called strcmp/pointer-dereference directly
on their arguments, so a stray NULL (e.g. an unset env string or an
absent xattr) crashed the process. Guard both helpers: same()
returns true only if both pointers are equal, startswith() returns
false if either side is NULL.
2026-04-18 13:47:23 -05:00
Antonio S. Musumeci
364f8c4407
fs_movefile_and_open: -ENOSPC when no destination branch available
...
The create policy can legitimately return success with an empty
destination list (e.g. every candidate rejected). Previously we
then dereferenced dst_branch[0] and faulted. Return -ENOSPC so the
original write that triggered the move propagates a sensible errno
to userspace.
2026-04-18 13:47:23 -05:00
Antonio S. Musumeci
ef9c7ad5df
fuse_statfs: scale with long double to avoid integer overflow
...
The branch-aggregation code computed
blocks * f_frsize / min_frsize
as u64 arithmetic. With large filesystems the intermediate product
blocks * f_frsize overflows 64 bits long before the division can
bring the result back into range, producing garbage bavail/bfree
values reported to userspace.
Compute the scale factor once in long double and multiply each
count by it, so the only narrowing happens in the final cast back
to fsblkcnt_t.
2026-04-18 13:47:23 -05:00
Antonio S. Musumeci
4288a60c5d
fuse_readlink: always null-terminate buffer
...
Old code only null-terminated when the returned/copied length was
strictly less than the caller-supplied bufsize_, leaving the buffer
unterminated on an exact-fill. Since buf_ is consumed as a C string,
reserve one byte for the terminator up front and unconditionally
terminate.
2026-04-18 13:47:23 -05:00
Antonio S. Musumeci
cf38a37176
fuse_readdir: atomic initialized flag; bound error string; check msgbuf allocation
...
- ReadDir::_initialized is set by the first thread through the
lazy-init path and read by every subsequent caller; make it
std::atomic<bool> so the read/write pair has a happens-before
relationship.
- The 'no valid mergerfs branch found' error directory entry used
strcpy into a fixed-size dirent buffer. The message happens to
fit today but the buffer is only NAME_MAX wide; switch to a
length-bounded strncpy driven by the constexpr string size.
- The getdents implementations for seq/cor/cosr allocated a msgbuf
without checking for allocation failure and then dereferenced it.
Return -ENOMEM when the allocation fails.
2026-04-18 13:47:23 -05:00
Antonio S. Musumeci
f5d9a60b9d
fuse_getattr/statx: populate timeouts in fake_root and controlfile replies
...
The fake-root and control-file fast paths returned a synthetic stat
without touching the timeout struct. Callers that took those paths
ended up sending whatever the timeout struct happened to hold,
which is uninitialized memory for the control-file path and
whatever a prior call left there for the fake-root path. Kernel
behavior is undefined when the timeout is garbage.
Pass timeout_ into both helpers and set entry/attr from the
configured cache values.
2026-04-18 13:47:23 -05:00
Antonio S. Musumeci
0c17492c78
FUSE: pass Branches::Ptr by value with empty-branches guards
...
Previously most FUSE ops took a reference to the live cfg.branches
object. With atomic_load now producing a shared_ptr snapshot, pass
it by value: the op works against a single stable view of the
configuration for its whole lifetime, immune to concurrent
reconfiguration.
Also bail out with -ENOENT when the policy returns an empty branch
set rather than dereferencing branches[0]. This was reachable if a
policy rejected every branch (e.g. everything readonly while
looking for a writable target).
Covers access, chmod, chown, create, getattr, getxattr, ioctl,
link, listxattr, mkdir, mknod, open, readdir (cor/cosr),
readlink, removexattr, rename, rmdir, setxattr, statfs, statx,
symlink, truncate, unlink, utimens.
While here, in _getattr only dereference st_->st_mode when lstat
succeeded (it is otherwise uninitialized).
2026-04-18 13:47:23 -05:00
Antonio S. Musumeci
98648ae44b
FUSE: require valid file/dir handle; drop open_files fallback
...
Several FUSE ops fell back to looking up a FileInfo via
state.open_files when the kernel-provided fh was zero, returning
-ENOENT if the lookup failed. This path papered over handle-tracking
bugs and added cost on every call. Use the handle directly and
return -EBADF when it is invalid - the kernel should always hand us
a valid fh for an open resource.
Also simplify FileInfo::from_fh / DirInfo::from_fh and their to_fh
helpers: callers now handle the null-pointer case explicitly so the
ASSERT_NOT_NULL checks are redundant.
Covers fallocate, fchmod, fchown, fgetattr, flock, ftruncate,
futimens, read, release, releasedir, write, statx, ioctl (file +
dir), readdir (sequential, concurrent-on-read,
concurrent-on-search), and the passthrough fast paths in
create/open.
2026-04-18 13:47:23 -05:00
Antonio S. Musumeci
0dcca0f1a3
branches: re-link default_minfreespace pointer on copy/move; atomically publish branch mode changes
...
Branches using the default minfreespace held a reference to their
owning Impl's _default_minfreespace. After a copy or move the
pointer still referenced the source Impl, which could become
invalid or diverge after further configuration changes. Switch to
a pointer and re-link it to the destination Impl on copy/move.
While here, convert set_branch_mode to do an atomic_store of a
newly constructed Impl rather than mutating the shared pointer
target in place. Readers holding an atomic_load snapshot are no
longer affected by a concurrent mode change.
2026-04-18 13:47:23 -05:00
Antonio S. Musumeci
103cd358f2
state: atomic ref_count in OpenFile
...
ref_count is read and written from multiple FUSE worker threads
during open/release. Make it std::atomic<int> and provide a move
constructor so OpenFile remains movable when the underlying atomic
is non-movable.
2026-04-18 13:47:23 -05:00
Antonio S. Musumeci
aa46001923
Remove unused rwlock.hpp header and includes
...
rwlock.hpp was left over after migrating to atomic shared pointers
for branches configuration. No code references ReadGuard/WriteGuard
any longer, so drop the header and its stale includes.
2026-04-18 13:47:23 -05:00
Antonio SJ Musumeci
ff48ff6047
Handle/ignore SIGHUP
2026-04-17 11:14:05 -05:00
Antonio SJ Musumeci
d5a2187713
Fix make race condition
2026-04-16 18:20:00 -05:00
Antonio S. Musumeci
351adc2b20
Add tests for HashSet, rapidhash withSeed consistency, and ReaddirCalc parity with calc
2026-04-12 23:44:23 -05:00
Antonio S. Musumeci
a1e681f36b
Use ReaddirCalc in all readdir implementations
...
* avoids per-entry path construction
2026-04-12 23:44:23 -05:00
Antonio S. Musumeci
e3a467de80
Refactor fs_inode
...
* add Algo enum
* ReaddirCalc class
* string_view params
* fs::path overloads
2026-04-12 23:44:23 -05:00
Antonio S. Musumeci
cdadda5eb9
Replace khash with custom hash set
2026-04-12 23:44:23 -05:00
Antonio SJ Musumeci
4c9a9d7e15
Upgrade rapidhash
2026-04-12 23:44:23 -05:00
Antonio SJ Musumeci
425e30b50f
Use nanosleep rather than yield and return EINTR
2026-04-11 11:30:57 -05:00
Antonio SJ Musumeci
3905355522
Detect OS for release-sample make target
2026-04-08 20:48:02 -05:00
Antonio SJ Musumeci
9e2e1afafa
Update docs on limiting drive spinup
2026-04-06 14:01:20 -05:00
Antonio SJ Musumeci
6d218fa87f
Misc updates and fixes
2026-04-04 02:46:24 -05:00
Antonio SJ Musumeci
3b10406f95
Add more details to project comparisons
2026-04-04 02:17:06 -05:00
Antonio SJ Musumeci
f2c8e5d9eb
Add FUSE request_timeout
...
Not yet hooked up to config parser to set as need to evaluate usage.
2026-04-01 23:20:05 -05:00
Antonio SJ Musumeci
b581c5d5e7
Add support for FUSE_COPY_FILE_RANGE_64
2026-04-01 23:20:05 -05:00
Antonio SJ Musumeci
1ebc8cfa5f
Enable statx with file handle
2026-03-31 19:53:17 -04:00
Antonio SJ Musumeci
acfa797503
Misc formatting changes
2026-03-31 19:53:17 -04:00
Antonio SJ Musumeci
7fc20457ca
Rework open file resource management
2026-03-31 19:53:17 -04:00
Antonio SJ Musumeci
ecee84b323
Improve proj comparisons + new SnapRAID details
2026-03-31 19:51:28 -04:00
Antonio SJ Musumeci
b8776d205d
Update docs; add nofs, policyfs and greyhole
2026-03-27 22:54:39 -05:00
Antonio SJ Musumeci
06433a0548
Fallback to fusermount3 where available
...
Also general cleanup of mount_generic.
2026-03-24 21:13:34 -04:00
Antonio SJ Musumeci
f4b602340b
Add more integration tests
2026-03-24 21:13:34 -04:00
Antonio SJ Musumeci
a78aef36e0
Additional check for ENOTCONN on mount
2026-03-24 21:13:34 -04:00
Antonio SJ Musumeci
0d05523dfd
Move maintainence thread func take u64 rather than int
...
signed rollover is UB
2026-03-24 21:13:34 -04:00
Antonio SJ Musumeci
0cfab60f37
replace raw C-strings with std::string in converted libfuse files
...
util/mount.mergerfs.cpp:
- Remove xstrdup/xrealloc wrappers entirely
- Convert type, source, options, command, setuid to std::string
- Replace add_arg() pointer-rewriting with shell_quote() returning std::string
- Replace add_option() with simple std::string += concatenation
- Fix const_cast UB on string literal assignment
lib/helper.cpp:
- Convert add_default_subtype local subtype_opt: malloc+snprintf+free -> std::string construction
lib/mount_generic.h:
- Convert fuse_mount_sys locals source/type: malloc+strcpy+strcat -> std::string
- Remove 4 unnecessary free() calls (RAII cleanup)
- .c_str() at mount() and fuse_mnt_add_mount() boundaries
lib/mount_util.h:
- Rewrite fuse_mnt_resolve_path internals using std::string: rfind/substr
instead of manual pointer arithmetic, strrchr, strlen chains
2026-03-24 21:13:34 -04:00
Antonio SJ Musumeci
21966ade97
Convert vendored/libfuse C sources to C++17
...
Convert all C source files in vendored/libfuse/ to C++17:
- lib/crc32b.c -> crc32b.cpp (const void* cast)
- lib/fuse_opt.c -> fuse_opt.cpp (designated init, void* arithmetic)
- lib/fuse_signals.c -> fuse_signals.cpp
- lib/helper.c -> helper.cpp (void* data cast)
- lib/mount.c -> mount.cpp (thin wrapper)
- lib/mount_generic.c -> mount_generic.h (static inline, #pragma once)
- lib/mount_bsd.c -> mount_bsd.h (static inline, #pragma once)
- lib/mount_util.c -> mount_util.h (static inline, #pragma once)
- util/fusermount.c -> fusermount.cpp
- util/mount.mergerfs.c -> mount.mergerfs.cpp
Key changes:
- Replace C99 designated initializer in fuse_opt_parse with field-by-field init
- Fix void* pointer arithmetic via char* base + offset pattern
- All C-style (T*)voidptr casts replaced with static_cast/reinterpret_cast
- Remove redundant #define _GNU_SOURCE (already in FUSE_FLAGS)
- Wrap __clone2 declaration in extern "C" for ia64 path
- Update Makefile: empty SRC_C, build utils with $(CXX) instead of $(CC)
- Remove stale .c files now replaced by .cpp/.h counterparts
All binaries build cleanly: mergerfs, mergerfs-fusermount, mount.mergerfs
2026-03-24 21:13:34 -04:00
Antonio SJ Musumeci
96eb51eecb
Move fuse_session to C++ and make exit flag atomic
2026-03-24 21:13:34 -04:00
Antonio SJ Musumeci
881147daa2
Fix null ptr handling issue in ioctl processing
2026-03-24 21:13:34 -04:00
Antonio SJ Musumeci
0f1a8e9b69
Fix error condition in fs_copyfile
2026-03-24 21:13:34 -04:00
Antonio SJ Musumeci
08f9cc6932
Fix readlink implementation, add more tests
2026-03-24 21:13:34 -04:00
Antonio SJ Musumeci
3099b15db1
More aggressive error handing with pagesize queries
2026-03-24 21:13:34 -04:00
Antonio SJ Musumeci
07b1e6bdba
Auto-commit fuse_msgbuf.cpp
2026-03-24 21:13:34 -04:00
Antonio SJ Musumeci
7763c7384a
Use fatal::abort() rather than assert in places
2026-03-24 21:13:34 -04:00
Antonio SJ Musumeci
61365d226d
Move scope_guard to vendored/
2026-03-24 21:13:34 -04:00
Antonio SJ Musumeci
f33e78bc24
Cleanup procfs and abort on critical issues
2026-03-24 21:13:34 -04:00
Antonio SJ Musumeci
7f52623536
Cleanup branches and add more unit tests
2026-03-24 21:13:34 -04:00
Antonio SJ Musumeci
a30a4df9c0
Cleanup config and add tests
2026-03-24 21:13:34 -04:00
Antonio SJ Musumeci
1e0d5aa91d
fs_wait_for_mount cleanup
2026-03-24 21:13:34 -04:00
Antonio SJ Musumeci
d09fadbc28
fs_inode cleanup
2026-03-24 21:13:34 -04:00
Antonio SJ Musumeci
21ce889449
Fixup listxattr error handling
2026-03-24 21:13:34 -04:00
Antonio SJ Musumeci
9d1a4696e9
Small improvements to fs::statvfs_cache
2026-03-24 21:13:34 -04:00
Antonio SJ Musumeci
ed0cbcf064
Cleanup fuse_readlink
2026-03-24 21:13:34 -04:00
Antonio SJ Musumeci
076e359891
Improve thread pool
2026-03-24 21:13:34 -04:00
Antonio SJ Musumeci
bf98d3f3a6
Fix possible error handling issue with errno
2026-03-24 21:13:34 -04:00
Antonio SJ Musumeci
c45c5ce920
Make cfgfile depth calculation thread friendly
2026-03-24 21:13:34 -04:00
Antonio SJ Musumeci
e0a892f0d0
Improve error handling when querying pagesize
2026-03-24 21:13:34 -04:00
Antonio SJ Musumeci
164b7f73c9
Misc fixes and improvements to thread pool
2026-03-24 21:13:34 -04:00
Antonio SJ Musumeci
3a45be4cd8
Rework string utils, more test cases
2026-03-24 21:13:34 -04:00
Antonio SJ Musumeci
107a3acf95
Better error handling in pagesize config type
2026-03-24 21:13:34 -04:00
Antonio SJ Musumeci
a5eafb8972
Check string is not empty before resize in Config::keys
2026-03-24 21:13:34 -04:00
Antonio SJ Musumeci
8199cc8a8b
Fix error handling in fuse chmod, chown, setxattr, removexattr
2026-03-24 21:13:34 -04:00
Antonio SJ Musumeci
e5d897f3dc
Ensure zero initialized timeouts structs
2026-03-24 21:13:34 -04:00
Antonio SJ Musumeci
c0af09f7d8
Fix incorrect type in fs_read and write
2026-03-24 21:13:34 -04:00
Antonio SJ Musumeci
1b1e14ca29
Remove dead branch in fuse_reply_data
2026-03-24 21:13:34 -04:00
Antonio SJ Musumeci
82b89aa099
Change session->exited to sig_atomic_t
2026-03-24 21:13:34 -04:00
Antonio SJ Musumeci
aa91e1b2ba
Initialize stat buffer and add stat call in fuse_mount_sys
2026-03-24 21:13:34 -04:00
Antonio SJ Musumeci
82e81afcdc
Add NULL check for cmsg in receive_fd to prevent segfault
2026-03-24 21:13:34 -04:00
Antonio SJ Musumeci
1a5c39f813
Fix buffer overflow in readlink by reserving space for null terminator
2026-03-24 21:13:34 -04:00
Antonio SJ Musumeci
fce1803d42
Use RND class for shrink_to_rand_elem and add assertions
2026-03-24 21:13:34 -04:00
Antonio SJ Musumeci
5a9a17afcb
fix objpool: add size tracking, improve allocation matching; fix msgbuf: clear pool on size change
2026-03-24 21:13:34 -04:00
Antonio SJ Musumeci
8648de6bb6
fix policy_eppfrd.cpp: return 0 when branchinfo found, -ENOENT only when empty
2026-03-24 21:13:34 -04:00
Antonio SJ Musumeci
f227a63e15
fix str.cpp: use string_view::npos, fix erase() calls, remove extra whitespace
2026-03-24 21:13:34 -04:00
Antonio SJ Musumeci
aa47b74dea
Remove iterator methods from Branches class
2026-03-24 21:13:34 -04:00
Antonio SJ Musumeci
206ad1dd53
Fix futimens bugs: stat pointer, variable names, and negation
2026-03-24 21:13:34 -04:00
Antonio SJ Musumeci
80aead7085
Add null pointer checks for FileInfo/DirInfo
2026-03-24 21:13:34 -04:00
Antonio SJ Musumeci
1220befacf
Fix copydata_copy_file_range bug
2026-03-24 21:13:34 -04:00
Antonio SJ Musumeci
01aa888c7a
Fix eplus search bug
...
Not that anyone would ever use this but it was noticed in a scan.
2026-03-24 21:13:34 -04:00
Antonio SJ Musumeci
6a6aa054cd
Add support for Arch, btw
2026-03-14 11:39:48 -04:00
Antonio SJ Musumeci
04939bbe72
No longer explicitly error out on broken mount point
...
If ENOTCONN (broken FUSE mount) umount first and continue to mount.
2026-03-08 00:39:45 -05:00
Antonio SJ Musumeci
2ea6290e4b
Update limiting drive spinup doc
2026-03-04 11:05:55 -05:00
Antonio SJ Musumeci
c66c68b137
Misc cleanup
2026-03-02 01:09:16 -05:00
Antonio SJ Musumeci
075a8a6548
Convert some push_back to emplace_back
2026-03-02 01:09:16 -05:00
Antonio SJ Musumeci
3c6d1b47f6
Remove unused "using"s
2026-03-02 01:09:16 -05:00
Antonio SJ Musumeci
6f281b9f7f
Remove duplicate includes
2026-03-02 01:09:16 -05:00
Antonio SJ Musumeci
511bf47af9
Convert stdint to short ints
2026-03-02 01:09:16 -05:00
Antonio SJ Musumeci
53c5a2cf1e
Move fmtlib to vendored and upgrade to 12.1.0
2026-03-02 01:09:16 -05:00
Antonio SJ Musumeci
eb8074ed9a
Update vendored/nonstd to latest and fix API usage
2026-03-02 01:09:16 -05:00
Antonio SJ Musumeci
38c19df95a
Update vendored/boost to 1.90.0
2026-03-02 01:09:16 -05:00
Antonio SJ Musumeci
b1228f11bd
Update vendored/acutest to latest master
2026-03-02 01:09:16 -05:00
Antonio SJ Musumeci
cfafafd7ff
Update vendored/CLI11 to v2.6.2
2026-03-02 01:09:16 -05:00
Antonio SJ Musumeci
c8ce82ce54
Update vendored/subprocess to v2.5
2026-03-02 01:09:16 -05:00
Antonio SJ Musumeci
05c3d97368
Update vendored/rapidhash to v3
2026-03-02 01:09:16 -05:00
Antonio SJ Musumeci
2c87e68635
Cleanup ugid.hpp usage
2026-03-02 01:09:16 -05:00
Antonio SJ Musumeci
8f1ef59770
Move 3rd party libraries to "vendored" directory
2026-03-02 01:09:16 -05:00
Antonio SJ Musumeci
a460c52861
Remove unused files
2026-03-02 01:09:16 -05:00
Antonio SJ Musumeci
a4aade6666
Make global inode calculation function pointer atomic
2026-03-02 01:09:16 -05:00
Antonio SJ Musumeci
1d1bcd3b87
Add extra checks in for file handle lookup
2026-03-02 01:09:16 -05:00
Antonio SJ Musumeci
099ce2d91d
Add more asserts
2026-03-02 01:09:16 -05:00
Antonio SJ Musumeci
56cd831ec8
Fix str::trim to handle all whitespace characters
...
Use std::isspace() instead of comparing only to space character.
Now handles tabs, newlines, carriage returns, etc.
2026-03-02 01:09:16 -05:00
Antonio SJ Musumeci
e43be3c221
Remove unused PolicyCache implementation
2026-03-02 01:09:16 -05:00
Antonio SJ Musumeci
2754536727
Fix integer overflow in size suffix parsing
...
Use __builtin_mul_overflow to detect overflow when applying size
suffixes (K, M, G, T) in str::from for int64_t and uint64_t. Previously,
large values with suffixes could silently wrap around.
2026-03-02 01:09:16 -05:00
Antonio SJ Musumeci
a0cff637e1
Misc cleanup
2026-03-02 01:09:16 -05:00
Antonio SJ Musumeci
a5a6c892b9
Update copyright headers
2026-03-02 01:09:16 -05:00
Antonio SJ Musumeci
3d50d4a52f
Explicitly return EXIT_FAILURE
2026-03-02 01:09:16 -05:00
Antonio SJ Musumeci
f69c31fd77
Rework objpool
2026-03-02 01:09:16 -05:00
Antonio SJ Musumeci
a2860c3f1f
Use debug mutex more
2026-03-02 01:09:16 -05:00
Antonio SJ Musumeci
3f70e66ee3
Rework node obj pool to use objpool
2026-03-02 01:09:16 -05:00
Antonio SJ Musumeci
160d3c832d
Fix branches unit test
2026-03-02 01:09:16 -05:00
Antonio SJ Musumeci
15bcc47d6a
Remove "channels" and embed into session
2026-03-02 01:09:16 -05:00
Antonio SJ Musumeci
e55bb93890
Simplify lowlevel fuse state management and req mem
2026-03-02 01:09:16 -05:00
Antonio SJ Musumeci
5a2a9e4530
Remove fuse_ll_pipe dead code
2026-03-02 01:09:16 -05:00
trapexit
b4239495a0
Update docs for logging changes + new video ( #1618 )
2026-02-12 23:21:43 -06:00
trapexit
3222de6c9c
Fixup debug output ( #1617 )
2026-02-12 22:50:38 -06:00
Aaron Andersen
be4d388813
Add support for -n to not update mtab ( #1616 )
2026-02-12 20:35:48 -06:00
trapexit
a47842e2f8
Add MOS to projects and update misc links ( #1614 )
2026-01-27 11:25:32 -06:00
trapexit
f769d7474b
Add new links to media docs ( #1613 )
2026-01-27 07:59:38 -06:00
trapexit
2ae57642f4
Misc documentation updates ( #1612 )
2026-01-27 07:00:22 -06:00
trapexit
7f1b7ac343
Add lshw to collect info tool ( #1610 )
2026-01-19 13:57:42 -06:00
trapexit
1290ab9708
Ensure ::exists() call can't throw ( #1609 )
2026-01-15 17:33:31 -06:00
trapexit
965e26989c
Misc documentation updates ( #1605 )
2025-12-23 23:25:39 -06:00
trapexit
0caae4fbf0
Tag container image to ghcr for convenience ( #1604 )
2025-12-14 15:21:56 -06:00
trapexit
4d1760cb69
Rework new lup policy to work on 32bit systems ( #1603 )
...
__int128 is not available on 32bit platforms. Moved to extended
precision floats.
2025-12-14 14:56:34 -06:00
François-Xavier Payet
22df87c86a
Add LUP policy ( #1601 )
2025-12-14 00:36:12 -06:00
trapexit
72fb6e4aba
Update submitting bug reports, improve collect-info ( #1598 )
2025-12-06 13:55:14 -06:00
trapexit
9b046d9a34
Rework credential handling to support chroot & idmap ( #1595 )
...
Run in an elevated credential mode (root) and let the kernel manage
entitlements. Will result in slightly different behavior but should
not be noticed by most.
2025-12-05 21:03:48 -06:00
Emanuel Haupt
d8918458bf
libfuse: fix narrowing conversion of nsec fields on i386 ( #1593 )
...
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.
2025-11-29 10:45:20 -06:00
trapexit
d3a3f65e7b
Ignore remote when forcing generation of docs ( #1592 )
2025-11-25 23:39:13 -06:00
trapexit
411d181473
Add qbittorrent specific section of known issues ( #1591 )
2025-11-25 23:14:20 -06:00
Emanuel Haupt
caf7915003
tools/preload: include correct extended attribute headers on FreeBSD ( #1590 )
...
Add conditional includes for extended attribute support. FreeBSD uses
<sys/extattr.h> instead of <sys/xattr.h>, which prevents the preload
module from building. This update selects the proper header based on
the target platform and fixes the build failure on FreeBSD.
2025-11-25 12:09:41 -06:00
trapexit
4c5473d569
Remove cirris builds, codeql; redo mkdocs builds ( #1585 )
2025-11-19 10:28:38 -06:00
trapexit
104f378c2c
Replace 'unknown' distro-codename when building deb from tarball src ( #1584 )
2025-11-19 07:57:58 -06:00
trapexit
a364405cf0
Remove --depth=1 to clone for tarball builder ( #1583 )
...
Led to empty changelog
2025-11-19 06:56:23 -06:00
trapexit
960f5fdbba
Fix some links in docs ( #1582 )
2025-11-18 08:35:27 -06:00
trapexit
6813a51fce
Ensure cfg references do not also try to initialize the value ( #1580 )
2025-11-17 17:08:36 -06:00
trapexit
f7e86d90ce
Add FAQ about lack of create policies about file size ( #1578 )
2025-11-16 23:44:24 -06:00
trapexit
66d120c721
Add Ubuntu 25.10 build ( #1577 )
2025-11-16 22:30:32 -06:00
trapexit
01973214bf
Slight tweaks to config parsing error handling ( #1575 )
2025-11-13 16:05:03 -06:00
trapexit
af1edadf72
Fix size comparison for returning ERANGE in listxattr ( #1574 )
2025-11-12 18:58:50 -06:00
trapexit
3bacaa6f7f
Add lazy-umount-mountpoint page and mount -a FAQ ( #1573 )
2025-11-12 12:19:00 -06:00
trapexit
b6e1a08aef
Add link to container image repo ( #1570 )
2025-11-11 19:38:18 -06:00
trapexit
47bd4259b8
Add container image details ( #1569 )
2025-11-08 20:28:10 -06:00
trapexit
dc486e79ce
Add container image building ( #1568 )
2025-11-06 23:39:05 -06:00
trapexit
78551049d5
Add ability to passthrough 'nofail' mount option ( #1567 )
2025-11-06 11:05:19 -06:00
trapexit
4aab008233
Ensure backward compatibility with remember & noforget ( #1566 )
2025-11-05 19:43:57 -06:00
trapexit
3a7a4a13e7
Improve mergerfs intro in docs ( #1563 )
2025-11-04 00:02:46 -06:00
trapexit
41b65ae9e8
Misc cleanup for FreeBSD and clang ( #1560 )
2025-11-02 10:49:22 -06:00
trapexit
2412ae7316
Further tweaks to config parsing and error reporting ( #1559 )
...
* Further tweaks to config parsing and error reporting
* Fix static builds
2025-11-01 15:20:30 -05:00
trapexit
ec16d07fba
Mention how mmap error when direct io is enabled ( #1557 )
2025-10-31 09:31:37 -05:00
trapexit
37f10888a9
Add more debugging options to makefiles and cleanup ( #1556 )
2025-10-29 22:42:42 -05:00
Satadru Pramanik, DO, MPH, MEng
0db8a1ed6a
Fix manpage links for 2.41.0-rc3 ( #1555 )
2025-10-29 12:07:49 -05:00
trapexit
cfaad60275
Misc updates to arg parsing ( #1554 )
...
Ignore "defaults" and add a number of more modern VFS mount switches
2025-10-26 21:05:05 -05:00
trapexit
077484323c
Fix variable names of fuse-msg-size and posix-acl ( #1553 )
2025-10-25 17:00:16 -05:00
trapexit
700fcfccf5
Update fuse-msg-size docs ( #1552 )
2025-10-24 23:34:28 -05:00
trapexit
4b4801add6
Config options docs updates ( #1551 )
2025-10-24 22:31:04 -05:00
trapexit
741128cb23
Fix lack of include for fmt ( #1550 )
2025-10-24 21:00:15 -05:00
trapexit
3bee0f0b57
Misc docs updates ( #1549 )
2025-10-24 20:47:33 -05:00
trapexit
727c522fb8
Rework config, centralize fuse config ( #1547 )
2025-10-24 08:20:29 -05:00
trapexit
00e5467e99
Misc docs updates ( #1544 )
2025-10-13 11:44:53 -05:00
trapexit
0371f03def
Rework how fuse request context is handled ( #1543 )
2025-10-12 23:21:36 -05:00
trapexit
d18c273293
Allow setting of passthrough max-stack-depth ( #1542 )
2025-10-07 21:52:13 -05:00
trapexit
0f24bb29ac
Make allow-idmap optional (default: false) ( #1541 )
...
This is just to correct default behavior for now. More investigation
is necessary to properly support idmapping.
2025-10-06 14:46:58 -05:00
trapexit
3cb35a3a65
Fix rename path generation ( #1540 )
2025-10-01 17:47:13 -05:00
trapexit
25b0bc72df
Fix dirent64::namelen calculation ( #1538 )
...
Worked fine on my machine where padding seemed to be all zeroed out
but that doesn't appear to be the case elsewhere.
Could try
https://codeberg.org/jbruchon/libjodycode/src/branch/master/dir.c#L92-L110
but needs to be tested.
2025-09-30 11:25:19 -05:00
trapexit
e6fcebe4f3
Misc build fixes ( #1537 )
2025-09-29 14:05:07 -05:00
trapexit
46f85c0f6d
Misc fixes, mostly for FreeBSD ( #1536 )
2025-09-28 23:17:51 -05:00
trapexit
7a9c3b7eb2
Remove need for and use of ioprio header ( #1535 )
2025-09-28 00:01:26 -05:00
trapexit
569a151da2
Add ability to proxy ioprio of client apps ( #1534 )
2025-09-26 11:36:56 -05:00
trapexit
2f3e807e9d
Add getdents based readdir functions for Linux ( #1533 )
2025-09-23 23:51:21 -05:00
trapexit
95ab37fdd2
Fix typo in visualization and add new vid to docs ( #1532 )
2025-09-22 16:23:50 -05:00
trapexit
1707dc27e3
Misc doc updates ( #1531 )
2025-09-21 14:25:24 -05:00
trapexit
c4126a0796
Add script to generate docs from scratch and push to github ( #1530 )
2025-09-21 13:04:55 -05:00
pjv
6acef3a638
Fix typo in moveonenospc.md ( #1527 )
...
typo
2025-09-21 11:42:15 -05:00
trapexit
b3656a0243
Fix broken doc links ( #1525 )
2025-09-19 19:25:31 -05:00
trapexit
41b40b94fa
Misc docs updates ( #1524 )
2025-09-19 19:20:28 -05:00
trapexit
ca59ae53a5
idmap mount support ( #1523 )
...
* Add idmap mount support
* Further replacement of std::filesystem::path to fs::path
* Update docs regarding idmap support
2025-09-18 00:07:28 -05:00
trapexit
8c649d33ee
Start using std::filesystem::path for fusepath ( #1522 )
2025-09-17 22:51:16 -05:00
trapexit
f64ff9ca1e
Revert removal of readdir init setup, simplify cfg usage ( #1520 )
2025-09-06 11:03:51 -05:00
trapexit
99c28ad3bc
Add Ubuntu 25.04 builds ( #1519 )
2025-09-04 19:29:47 -05:00
trapexit
5becb334cd
Misc updates of docs ( #1518 )
2025-09-01 20:58:58 -05:00
trapexit
071af2e516
More build process updates ( #1516 )
2025-08-29 07:51:05 -05:00
trapexit
90b3585347
Update readme to match index of mkdocs ( #1515 )
2025-08-22 20:53:22 -05:00
trapexit
d7549f8d53
Fix string manipulation functions after refactor ( #1514 )
2025-08-22 19:42:31 -05:00
trapexit
6ac7f389c5
Misc changes ( #1513 )
...
* Start moving to string_view where possible
* Rework readdir object to use atomic load/store
2025-08-21 22:42:58 -05:00
trapexit
2101ef5bcc
Updates to docs, add nonraid, more intro to fs details ( #1512 )
2025-08-21 15:09:04 -05:00
Max.-F. Helm and Max-F-Helm
dd1bea52cd
Allow empty lines in config ini files ( #1509 )
...
* Allow empty lines in config files
* Add example comment to ini example in docs/quickstart.md
---------
Co-authored-by: Max-F-Helm <m7t24zklr@relay.firefox.com >
2025-08-13 20:00:05 -05:00
trapexit
df19f99976
Fix constructing string from attrval setxattr config ( #1508 )
2025-08-11 19:50:12 -05:00
trapexit
24e778b95a
Rework calculation of branch for release make targets ( #1507 )
2025-08-10 18:39:18 -05:00
trapexit
a8a7b34cf3
Add Debian 13 build targets ( #1506 )
2025-08-10 17:50:06 -05:00
trapexit
6ae9641bcc
Misc documentation updates ( #1505 )
2025-08-10 17:23:55 -05:00
trapexit
4439c2a030
Add setting of oom_score_adj ( #1504 )
...
To limit risk of killing by OOM Killer.
2025-08-07 23:58:06 -05:00
trapexit
9872710720
More makefile tweaks, build log, smaller git clones ( #1503 )
2025-08-06 12:24:25 -05:00
trapexit
b18aba86b6
Build improvements ( #1501 )
...
* Remove python dependency
* Remove ecfd
* Improve makefiles
* Make preload.so more 32bit compatible
2025-08-04 23:39:52 -05:00
trapexit
33fc26f81f
Cleanup copy functions ( #1500 )
2025-07-27 16:23:45 -05:00
trapexit
e8cd74cab0
Move everything to negative errno return types ( #1499 )
2025-07-25 17:53:48 -05:00
trapexit
2b500f194a
Rework of runtime interface ( #1498 )
...
Also have special error handling for when branches are invalid and
ENOENT would be returned for getattr and readdir so users understand
what is going on and the runtime interface can still be used to fix
the problem.
2025-07-21 18:18:59 -05:00
trapexit
e87867cd2a
Clear O_NOFOLLOW when opening a relative fd ( #1494 )
2025-07-08 18:25:00 -05:00
trapexit
fa851eda3a
Ensure passthrough and keep_cache are mutually exclusive ( #1493 )
2025-07-06 18:31:47 -05:00
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.
2025-07-05 17:05:53 -05:00
trapexit
9e626228be
Add mergerfs.collect-info ( #1491 )
...
A tool to collect info for support requests.
2025-07-03 20:18:05 -05:00
trapexit
71ddae8713
Misc documentation changes ( #1489 )
2025-06-29 19:08:57 -05:00
trapexit
e216a81a27
Rework movefile and cow break to use copyfile ( #1488 )
2025-06-28 17:27:40 -05:00
trapexit
264c5600f8
Misc cleanup ( #1486 )
...
* Skip non-directories when loading branches
* Warn if branch doesn't exist
* Add braces to globbing
2025-06-25 22:43:49 -05:00
trapexit
be49dbe1bd
Remove linux only getdents in favor of readdir for FreeBSD sake ( #1485 )
2025-06-24 19:31:40 -05:00
trapexit
eb124316c9
Set default read thread count to 0 ( #1484 )
2025-06-23 22:39:42 -05:00
trapexit
77ef88b04c
Add fsck.mergerfs tool ( #1483 )
2025-06-23 21:57:55 -05:00
trapexit
34f07e57f5
Add RHEL/CentOS 10 build support ( #1479 )
2025-06-09 14:33:55 -05:00
trapexit
095fcf82a3
Misc doc updates
2025-06-08 23:59:17 -05:00
trapexit
1b167d34d8
Spawn "mount" on branches when waiting for mounts enabled
2025-06-08 15:09:47 -05:00
trapexit
23824eaeb4
Misc cleanup
2025-06-06 19:10:19 -05:00
trapexit
e310d24615
Add support for FUSE passthrough
2025-06-05 23:47:42 -05:00
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.
2025-05-26 00:44:39 -05:00
trapexit
4b751c2d37
Fix incorrect dyn cast ( #1467 )
2025-05-19 22:46:55 -05:00
trapexit
86b50d2d4e
Rework policies to return branches rather than path strings
2025-05-17 16:35:18 -05:00
trapexit
7e084ea7db
Update README.md to fix link ( #1464 )
2025-05-12 09:48:19 -05:00
trapexit
6eca711f58
Update mkdocs build action ( #1458 )
2025-05-10 12:56:10 -05:00
trapexit
923d9608e8
Add details to docs about FreeBSD limitations
2025-05-09 21:18:20 -05:00
trapexit
3a034712f6
Add versioning to docs using 'mike'
2025-05-08 19:53:54 -05:00
Zack Guo
5db04b4b5f
Update installation.md for SUSE
2025-05-08 07:44:57 -05:00
trapexit
fa3266ca7f
Add podman release build tooling + misc build fixes ( #1455 )
2025-05-08 00:00:53 -05:00
trapexit
344014aa81
Rework thread pool for increased stability + config and doc updates ( #1453 )
...
Also updates fmt to 11.2.0 and replaced syslog usage with a wrapper
leveraging fmt.
2025-05-05 18:28:49 -05:00
Solipsistmonkey and Jesse Harwin
455a81290b
Fix build instructions typo
...
the location of install-build-pkgs was in buildtools and not tools
---------
Co-authored-by: Jesse Harwin <jesse@jharwin.com >
2025-04-28 14:00:20 -05:00
trapexit
deb54c58d8
Merge pull request #1448 from trapexit/defaultperms
...
Add config option to control default_permissions
2025-04-25 17:34:16 -05:00
Antonio SJ Musumeci
2b04a791b7
Add config option to control default_permissions
...
Defaults true but there might be some situations where it is useful to
disable.
2025-04-25 16:34:39 -05:00
trapexit
8ee998e8aa
Merge pull request #1447 from trapexit/branchcfg
...
Improve mount waiting + misc doc improvements
2025-04-23 16:40:26 -05:00
Antonio SJ Musumeci
de2a82800a
Improve mount waiting + misc doc improvements
...
Adds user.mergerfs.branch and user.mergerfs.branch_mounts_here
Adds .mergerfs.branch and .mergerfs.branch_mounts_here files.
2025-04-23 15:58:36 -05:00
trapexit
212681ddc5
Merge pull request #1445 from trapexit/docs
...
Misc doc updates + add logo
2025-04-19 22:45:27 -05:00
Antonio SJ Musumeci
9dac54f223
Misc doc updates + add logo
2025-04-19 22:44:08 -05:00
trapexit
78fa34098e
Merge pull request #1444 from trapexit/docs
...
Add FAQ entry regarding OS support
2025-04-15 23:41:45 -05:00
Antonio SJ Musumeci
54681e885a
Add FAQ entry regarding OS support
2025-04-15 23:40:42 -05:00
trapexit
de5a871326
Merge pull request #1443 from trapexit/inode
...
Change the "devino" inode calculation
2025-04-15 19:29:43 -05:00
Antonio SJ Musumeci
77bf16e9ae
Change the "devino" inode calculation
...
Use hashing of branch path rather than use st_dev.
2025-04-15 18:54:51 -05:00
trapexit
ad54c8be19
Merge pull request #1441 from trapexit/docs
...
Add doc pages for minfreespace and moveonenospc + other misc updates
2025-04-10 23:00:43 -05:00
Antonio SJ Musumeci
c769e959e8
Add doc pages for minfreespace and moveonenospc + other misc updates
2025-04-10 22:59:49 -05:00
trapexit
1f3ebcf418
Merge pull request #1439 from trapexit/statx
...
Add statx support
2025-04-04 22:25:30 -05:00
Antonio SJ Musumeci
80085c9844
Add statx support
2025-04-04 22:23:16 -05:00
trapexit
b85cc8c370
Merge pull request #1438 from trapexit/docs
...
Update docs regarding error handling
2025-04-04 18:42:37 -05:00
Antonio SJ Musumeci
95732222d9
Update docs regarding error handling
2025-04-04 18:41:58 -05:00
trapexit
17a551d0a4
Merge pull request #1435 from trapexit/rapidhash
...
Replace usage of wyhash with rapidhash
2025-03-30 18:03:35 -05:00
Antonio SJ Musumeci
f74dc36e92
Replace usage of wyhash with rapidhash
...
https://github.com/Nicoshev/rapidhash
2025-03-30 17:57:20 -05:00
trapexit
764bd8f7be
Merge pull request #1434 from trapexit/change-defaults
...
Change misc defaults
2025-03-30 17:25:18 -05:00
Antonio SJ Musumeci
b7f7f7fa97
Change misc defaults
...
* category.create=pfrd
* moveonenospc=pfrd
* cache.files=off
* parallel-direct-writes=true
These changes were made to match the recommended settings for most
users to reduce confusion.
2025-03-30 17:22:38 -05:00
trapexit
7f410073d4
Merge pull request #1433 from trapexit/maxpages
...
Support Linux v6.13 FUSE max_page_limit
2025-03-30 00:09:03 -05:00
Antonio SJ Musumeci
92ae63e842
Support Linux v6.13 FUSE max_page_limit
2025-03-30 00:07:08 -05:00
trapexit
d31e97e64c
Merge pull request #1431 from trapexit/docs
...
Add links to options docs page to individual pages
2025-03-27 19:55:19 -05:00
Antonio SJ Musumeci
579690f411
Add links to options docs page to individual pages
2025-03-27 19:47:37 -05:00
trapexit
ca449a73be
Merge pull request #1429 from trapexit/docs
...
Update docs on default create policy
2025-03-26 14:34:28 -05:00
Antonio SJ Musumeci
2d86ed946a
Update docs on default create policy
2025-03-26 14:33:11 -05:00
trapexit
3e454f528c
Merge pull request #1426 from trapexit/docs
...
Misc doc updates
2025-03-12 18:30:21 -05:00
Antonio SJ Musumeci
a4fdbae1ca
Misc doc updates
2025-03-12 18:29:38 -05:00
trapexit
aff66812c0
Merge pull request #1425 from trapexit/docs-tips
...
Misc doc updates
2025-03-08 22:03:14 -06:00
Antonio SJ Musumeci
6472ac51e9
Misc doc updates
2025-03-08 22:02:34 -06:00
trapexit
d3770802b1
Merge pull request #1423 from trapexit/docs-inotify
...
Add FAQ entry regarding inotify
2025-03-05 16:59:45 -06:00
Antonio SJ Musumeci
bcbff5c82e
Add FAQ entry regarding inotify
2025-03-05 16:58:27 -06:00
trapexit
09743ee187
Merge pull request #1416 from trapexit/docs
...
Add FAQ section on common perceived problems
2025-02-22 22:30:28 -06:00
Antonio SJ Musumeci
3a33a6db2b
Add FAQ section on common perceived problems
2025-02-22 22:25:39 -06:00
trapexit
c0d5f4795a
Merge pull request #1415 from trapexit/docs
...
Update docs on out-of-band usage
2025-02-19 14:13:32 -06:00
Antonio SJ Musumeci
ef9074ab4a
Update docs on out-of-band usage
2025-02-19 14:13:06 -06:00
trapexit
2d03b89c2d
Merge pull request #1414 from theHenMan/patch-2
...
Update terminology.md
2025-02-19 00:09:55 -06:00
trapexit
64cc63b2bc
Merge pull request #1413 from theHenMan/patch-1
...
Update quickstart.md
2025-02-18 23:04:59 -06:00
Hennie Botha
514c478a39
Update terminology.md
...
Fixed typo
2025-02-19 07:04:11 +02:00
Hennie Botha
8179f91c48
Update quickstart.md
...
Fixed a typo
2025-02-19 07:02:22 +02:00
trapexit
371764d800
Merge pull request #1412 from trapexit/docs
...
Rework questions on what settings and policies to use
2025-02-11 19:47:18 -06:00
Antonio SJ Musumeci
1c44ef7967
Rework questions on what settings and policies to use
2025-02-11 19:46:33 -06:00
trapexit
aa97bac533
Merge pull request #1409 from trapexit/docs
...
Add details about logging to syslog
2025-01-25 20:58:57 -06:00
Antonio SJ Musumeci
12d6302457
Add details about logging to syslog
2025-01-25 20:56:28 -06:00
trapexit
740fc3f84a
Merge pull request #1408 from trapexit/docs
...
Add details about user namespacing and root squashing
2025-01-25 13:54:43 -06:00
Antonio SJ Musumeci
f18719ced2
Add details about user namespacing and root squashing
2025-01-25 13:54:06 -06:00
trapexit
366f5fcc4c
Merge pull request #1407 from trapexit/docs
...
Misc doc updates
2025-01-25 13:02:36 -06:00
Antonio SJ Musumeci
1729835b8c
Misc doc updates
2025-01-25 13:00:00 -06:00
trapexit
1180fd6dd3
Merge pull request #1402 from trapexit/docs
...
Doc and mover script updates
2025-01-20 01:45:51 -06:00
Antonio SJ Musumeci
19509e33d2
Doc and mover script updates
2025-01-20 01:43:58 -06:00
trapexit
8f355d7dd5
Merge pull request #1399 from oregonpillow/master
...
Readability changes to mkdocs installation
2025-01-18 15:21:20 -06:00
debian
2aa9697c87
re-order OS, shorten Debian based OS instructions
2025-01-18 01:14:50 +01:00
trapexit
978d067921
Merge pull request #1398 from trapexit/freebsd
...
Improve FreeBSD compatibility
2025-01-15 22:16:13 -06:00
Antonio SJ Musumeci
b83bd5fd14
Improve FreeBSD compatibility
...
First draft. Need to investigate why upstream patches include certain
function that appear to exist in FreeBSD 14.2.
2025-01-15 22:10:02 -06:00
trapexit
dd906c8a4c
Merge pull request #1395 from oregonpillow/latest-release
...
fix edit uri
2025-01-11 18:07:15 -06:00
debian
6fb9111c03
fix edit uri
2025-01-12 00:56:39 +01:00
trapexit
bc382e0fd2
Merge pull request #1392 from trapexit/usr1
...
Send invalidate node request outside lock
2025-01-10 00:35:59 -05:00
trapexit
0197984db3
Send invalidate node request outside lock
2025-01-09 23:22:07 -06:00
trapexit
248b1aca1c
Merge pull request #1391 from trapexit/cpp
...
Move fuse.c and fuse_lowlevel.c to C++
2025-01-09 20:10:35 -05:00
Antonio SJ Musumeci
9056898bbf
Move fuse.c and fuse_lowlevel.c to C++
2025-01-09 19:05:32 -06:00
trapexit
5e584f246a
Merge pull request #1390 from trapexit/tiered
...
Add tiered cache details to docs
2025-01-08 00:56:48 -05:00
Antonio SJ Musumeci
7e964283b9
Add tiered cache details to docs
2025-01-07 23:55:13 -06:00
trapexit
03dc17fff2
Merge pull request #1389 from trapexit/misc
...
Update funding and cirrus builds
2025-01-07 00:18:32 -05:00
Antonio SJ Musumeci
8cb68dce4a
Update funding and cirrus builds
2025-01-06 23:07:33 -06:00
trapexit
28260c434a
Merge pull request #1388 from trapexit/mkdocs
...
Update README to point to docs, update project comparisons
2025-01-05 23:40:54 -06:00
Antonio SJ Musumeci
fae9b993fe
Update README to point to docs, update project comparisons
2025-01-05 23:39:48 -06:00
trapexit
171eb9c7c0
Merge pull request #1387 from trapexit/workflows
...
Fix pip install in mkdocs workflow
2025-01-03 12:41:47 -06:00
Antonio SJ Musumeci
174e703d2e
Fix pip install in mkdocs workflow
2025-01-03 12:40:50 -06:00
trapexit
efd0dfaa2f
Merge pull request #1386 from trapexit/docs
...
Rework mkdocs based documentation
2025-01-03 12:33:54 -06:00
Antonio SJ Musumeci
75d7a93724
Rework mkdocs based documentation
...
Lots of restructoring and extra information.
2025-01-03 12:17:26 -06:00
Timothy Pillow
50fa7ac694
add mkdocs
...
Initial commit of a mkdocs based docs setup
2024-12-21 09:36:07 -06:00
trapexit
7d64a47b88
Merge pull request #1377 from trapexit/movecopy-readme
...
Add FAQ entry on 'move' and 'copy'
2024-11-30 00:23:39 -06:00
Antonio SJ Musumeci
5fba42f076
Add FAQ entry on 'move' and 'copy'
2024-11-30 00:12:44 -06:00
trapexit
b0bb7ef38c
Merge pull request #1346 from grunthos503/master
...
Add missing --relative flag to rsync in percent-full mover script
2024-07-18 15:28:42 -05:00
Alan Millar
85ce7d6178
Add missing --relative flag to rsync in percent-full mover script
2024-07-18 12:14:02 -07:00
trapexit
40359df453
Merge pull request #1342 from techie2000/patch-2
...
Update README.md
2024-07-18 13:50:29 -05:00
techie2000
9b2a5a75ee
Update README.md
...
Correcting a couple of typos.
Enhancing readability.
2024-06-28 10:15:02 +01:00
trapexit
b21172c609
Merge pull request #1321 from trapexit/allowmmap
...
Add support for 'direct-io-allow-mmap' if supported by kernel
2024-03-21 21:54:04 -04:00
Antonio SJ Musumeci
f0444a1ca9
Add support for 'direct-io-allow-mmap' if supported by kernel
2024-03-21 20:48:42 -05:00
trapexit
977d04229f
Merge pull request #1320 from trapexit/readme
...
Suggest cache.files=auto-full rather than partial
2024-03-21 21:36:27 -04:00
Antonio SJ Musumeci
757ae66327
Suggest cache.files=auto-full rather than partial
2024-03-17 00:47:33 -05:00
trapexit
42d0b5734c
Merge pull request #1312 from trapexit/preload-tmpfile
...
Special case O_TMPFILE in preload
2024-02-29 15:41:22 -05:00
Antonio SJ Musumeci
78050ed6b0
Special case O_TMPFILE in preload
2024-02-29 14:33:27 -06:00
trapexit
19ee44afe7
Merge pull request #1309 from trapexit/root-nodeid
...
Root nodeid
2024-02-25 18:29:58 -05:00
Antonio SJ Musumeci
a234e9446c
Update README to remove unnecessary references to export-support for NFS
2024-02-25 17:27:08 -06:00
Antonio SJ Musumeci
951eb9540d
Ensure lookups of FUSE_ROOT_ID always return generation=0
2024-02-25 17:14:15 -06:00
trapexit
85a936c95e
Merge pull request #1308 from trapexit/readme
...
Change mount type from fuse.mergerfs to mergerfs in README
2024-02-24 02:09:40 -05:00
Antonio SJ Musumeci
8210e63a66
Change mount type from fuse.mergerfs to mergerfs in README
2024-02-24 01:08:30 -06:00
trapexit
facdb66746
Merge pull request #1307 from trapexit/readme
...
Add NFS options to remote filesystems section of readme
2024-02-19 19:20:41 -06:00
Antonio SJ Musumeci
1916e54a24
Add NFS options to remote filesystems section of readme
2024-02-19 19:19:00 -06:00
trapexit
7fabe515f4
Merge pull request #1306 from trapexit/export-support
...
Add export-support option as possible workaround for NFS EIO issues
2024-02-19 19:00:54 -06:00
Antonio SJ Musumeci
0ca5d6aad0
Add export-support option as possible workaround for NFS EIO issues
2024-02-19 18:58:50 -06:00
trapexit
0c1aeb411d
Merge pull request #1305 from trapexit/lib-updates
...
Library updates
2024-02-18 17:56:39 -06:00
Antonio SJ Musumeci
17fdbf7f42
Update fuse_kernel.h
2024-02-18 17:50:34 -06:00
Antonio SJ Musumeci
27349e41ef
Update fmt
2024-02-18 17:24:18 -06:00
Antonio SJ Musumeci
b3ce95c422
Update nonstd::optional
2024-02-18 17:24:18 -06:00
Antonio SJ Musumeci
cedc9f0f25
Update ghc::filesystem
2024-02-18 17:24:18 -06:00
trapexit
d68ad9ac01
Expand the preload docs ( #1299 )
2024-01-30 00:03:39 -06:00
trapexit
ae6c4f7c25
Rework mergerfs vs X section of readme ( #1298 )
2024-01-28 18:12:29 -06:00
trapexit
87475098a1
Add credit to nohajc for preload idea ( #1295 )
2024-01-22 12:52:51 -06:00
trapexit
d4dc0701d6
Create ld_preload to reopen files on underlying filesystem ( #1294 )
2024-01-22 12:42:55 -06:00
0x6d61726b
c1c2f075ee
Update README.md ( #1283 )
...
* Update README.md
Information added that mergerfs v2.35.0 and newer sets `allow_other` (but not 2.33.5, that is used by Debian 12.2)
2023-12-01 15:45:13 -06:00
trapexit
96d34f1eab
Merge pull request #1280 from trapexit/getpid
...
Fix user.mergerfs.pid
2023-11-11 19:48:28 -06:00
Antonio SJ Musumeci
f66fb7e2d4
Fix user.mergerfs.pid
2023-11-11 19:03:32 -06:00
trapexit
edb3368078
Merge pull request #1277 from trapexit/flushdefault
...
Set flush-on-close default to opened-for-write
2023-10-31 23:26:08 -05:00
Antonio SJ Musumeci
bd70928268
Set flush-on-close default to opened-for-write
2023-10-31 09:23:52 -05:00
trapexit
337aade02d
Merge pull request #1276 from trapexit/allowother
...
Only set allow_other when running as root
2023-10-29 02:54:51 -05:00
Antonio SJ Musumeci
d6a2f06797
Only set allow_other when running as root
2023-10-29 01:44:18 -05:00
trapexit
7890a4996c
Merge pull request #1275 from trapexit/noflush
...
Add flushonclose feature
2023-10-28 19:49:17 -05:00
Antonio SJ Musumeci
6aa6452d3e
Add flushonclose feature
2023-10-28 19:47:23 -05:00
trapexit
7d6c8e9333
Merge pull request #1271 from trapexit/warn-root
...
Warn if not running as root
2023-10-22 00:45:41 -05:00
Antonio SJ Musumeci
a7069153bd
Warn if not running as root
2023-10-22 00:43:19 -05:00
trapexit
5c71a75fdd
Merge pull request #1269 from trapexit/wyhash
...
Update wyhash to 4.2
2023-10-21 18:04:14 -05:00
Antonio SJ Musumeci
fd33df04a3
Update wyhash to 4.2
2023-10-21 18:03:05 -05:00
trapexit
a9ae36a3e4
Merge pull request #1263 from trapexit/pthread_getname_np
...
Remove use of pthread_getname_np to work with older musl versions
2023-10-14 01:20:00 -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
trapexit
8534ee7ceb
Merge pull request #1262 from trapexit/readdir-errs
...
Rework thread pool queue depth impl
2023-10-14 01:13:48 -05:00
Antonio SJ Musumeci
620cab2948
Rework thread pool queue depth impl
2023-10-14 00:58:10 -05:00
trapexit
8635456818
Merge pull request #1254 from trapexit/typo
...
Fix readdir doc typos
2023-09-23 14:54:25 -05:00
Antonio SJ Musumeci
0888f372aa
Fix readdir doc typos
2023-09-23 14:53:41 -05:00
trapexit
e09b10c55b
Merge pull request #1249 from trapexit/tpfix
...
Fix thread pool destruction where threads don't explicitly exit themselves
2023-09-09 17:07:51 -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
trapexit
dd7e9e2aa7
Merge pull request #1244 from trapexit/docs
...
Add some new questions to FAQ
2023-09-05 22:56:50 -05:00
Antonio SJ Musumeci
3fc0aa3809
Add some new questions to FAQ
2023-09-05 22:56:08 -05:00
trapexit
b1dcc94e98
Merge pull request #1242 from trapexit/debug-removal
...
Remove unneeded debug logging from thread pool
2023-09-04 18:40:38 -05:00
Antonio SJ Musumeci
6d2c99e487
Remove unneeded debug logging from thread pool
2023-09-04 18:39:43 -05:00
trapexit
9d9eacfe7b
Merge pull request #1241 from trapexit/version
...
Add website and license to version option
2023-09-04 16:02:24 -05:00
Antonio SJ Musumeci
b91cc1c191
Add website and license to version option
2023-09-04 15:57:47 -05:00
trapexit
6d2f26c60e
Merge pull request #1240 from trapexit/dynamic-threadpool
...
Rework thread pool, add ability to add/remove threads at runtime
2023-09-03 23:37:29 -05:00
Antonio SJ Musumeci
0a94bd7cfc
Rework thread pool, add ability to add/remove threads at runtime
2023-09-03 23:36:03 -05:00
trapexit
211e6c7115
Merge pull request #1239 from trapexit/validation
...
Add proper input validation for readdir policy
2023-09-02 15:48:43 -05:00
Antonio SJ Musumeci
335ca55a6e
Add proper input validation for readdir policy
2023-09-02 15:47:49 -05:00
trapexit
69de4de53f
Merge pull request #1238 from trapexit/boundedqueue
...
Change threadpool to use concurrentqueue
2023-09-02 00:47:26 -05:00
Antonio SJ Musumeci
76c8d48dbd
Change threadpool to use concurrentqueue
2023-09-02 00:45:47 -05:00
trapexit
a927a15e9c
Merge pull request #1237 from trapexit/threadfix
...
Initialize readdir threadpool after daemonizing
2023-08-28 22:48:59 -05:00
Antonio SJ Musumeci
0c555e71a0
Initialize readdir threadpool after daemonizing
2023-08-28 22:47:04 -05:00
trapexit
82781b6ff8
Merge pull request #1235 from DavidFair/readme_direct_parallel
...
Docs: clarify parallel-direct-writes and cache.files
2023-08-26 18:52:57 -05:00
David Fairbrother
b545352712
Nit: cache.files=per-process grammar
...
Change which 'comm' name -> whose 'comm' name.
Whose implies possession, and the process possess the name we're
matching
2023-08-26 21:27:16 +01:00
David Fairbrother
3d05999db0
State cache.files per-process behaviour w/out match
...
This makes it clear, along with the previous commit, that per-process will allow
us to use parallel direct writes as they will mount with the equivalent
of cache.files=off (i.e. direct_io)
2023-08-26 21:24:34 +01:00
David Fairbrother
f4a8105a42
Clarify parallel direct writes conditions
...
Clarify that paralell direct can only be enabled where the kernel
version supports it, which is 6.2+.
State the two cache.files modes which can support parallel direct writes
in the description.
2023-08-26 21:22:37 +01:00
trapexit
004b616115
Merge pull request #1234 from trapexit/fixes
...
Misc fixes for older platforms
2023-08-22 08:13:56 -05:00
Antonio SJ Musumeci
8d7017273f
Misc fixes for older platforms
2023-08-22 08:10:55 -05:00
trapexit
51b65cd126
Merge pull request #1233 from trapexit/atomic
...
Use relaxed memory order for atomic counters
2023-08-21 17:19:09 -05:00
Antonio SJ Musumeci
0ed03a1535
Use relaxed memory order for atomic counters
2023-08-21 15:43:03 -05:00
trapexit
b6d3c34d3f
Merge pull request #1232 from trapexit/wyhash
...
Update wyhash to final4
2023-08-21 00:20:04 -05:00
Antonio SJ Musumeci
fdecabfaab
Update wyhash to final4
2023-08-21 00:18:41 -05:00
trapexit
3a1d8e03a1
Merge pull request #1231 from trapexit/readdir
...
Fix setting of ugids for concurrent readdir
2023-08-20 23:12:56 -05:00
Antonio SJ Musumeci
e586d2fd1e
Fix setting of ugids for concurrent readdir
2023-08-20 23:06:05 -05:00
trapexit
e0087cd8a7
Merge pull request #1228 from trapexit/threading
...
Add thread names for easier debugging
2023-08-14 17:52:31 -05:00
Antonio SJ Musumeci
2377cb05b6
Add thread names for easier debugging
2023-08-14 17:51:41 -05:00
trapexit
a8ffbc84f6
Merge pull request #1227 from trapexit/gidcache
...
Add ability to invalidate gid cache on demand
2023-08-13 23:32:33 -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
trapexit
7221fded71
Merge pull request #1226 from feltcat/feltcat-patch-1
...
Fix a typo in README.md
2023-08-13 23:13:30 -05:00
feltcat
7a09f560f7
Fix a typo in README.md
2023-08-14 03:45:01 +00:00
trapexit
8b769dff7f
Merge pull request #1225 from trapexit/new-funcs
...
Add callbacks for newer functions
2023-08-13 17:46:09 -05:00
Antonio SJ Musumeci
6dcf6111af
Add callbacks for newer functions
...
* setupmapping
* removemapping
* syncfs
* tmpfile
2023-08-13 17:38:13 -05:00
trapexit
9849bcd3cf
Merge pull request #1224 from trapexit/readdir
...
Add readdir policies
2023-08-11 00:05:28 -05:00
Antonio SJ Musumeci
c92a10021e
Add readdir policies
2023-08-11 00:05:14 -05:00
trapexit
d817fa4e97
Merge pull request #1220 from trapexit/fix-logging
...
Fix logging pin-threads details
2023-07-30 23:14:16 -05:00
Antonio SJ Musumeci
eb141c4c4e
Fix logging pin-threads details
2023-07-30 23:13:14 -05:00
trapexit
282ce08ddb
Merge pull request #1219 from trapexit/fuse-config
...
Move fuse thread args out of fuse session object
2023-07-30 22:56:27 -05:00
Antonio SJ Musumeci
51d97bb444
Move fuse thread args out of fuse session object
2023-07-30 22:52:43 -05:00
trapexit
539f2221a3
Merge pull request #1213 from trapexit/lib-updates
...
Lib updates
2023-07-15 18:51:43 -04:00
Antonio SJ Musumeci
2b1804d364
Add a DEPENDENCIES file to list dependencies
...
Mostly to remind myself which libs to update on occasion
2023-07-15 17:49:57 -05:00
Antonio SJ Musumeci
556c6522c0
Update fmt to v10.0.0
2023-07-15 17:47:36 -05:00
Antonio SJ Musumeci
543603bdfc
Update ghc::filesystem to v1.5.14
2023-07-15 14:47:44 -05:00
trapexit
7a86ed6508
Merge pull request #1212 from trapexit/erofs
...
Create functions can set branches RO on EROFS
2023-07-13 22:34:29 -04:00
Antonio SJ Musumeci
707d298d7c
Create functions can set branches RO on EROFS
2023-07-13 21:19:13 -05:00
trapexit
36a4b7a23a
Merge pull request #1209 from trapexit/o_direct
...
Align msg buffer memory to allow O_DIRECT to work
2023-07-09 19:39:52 -04:00
Antonio SJ Musumeci
22833bdfe2
Align msg buffer memory to allow O_DIRECT to work
2023-07-09 15:32:11 -05:00
trapexit
775c3cad90
Merge pull request #1208 from trapexit/syslog
...
Simplify syslog wrapper a bit
2023-07-06 00:15:57 -05:00
Antonio SJ Musumeci
fa537961c5
Simplify syslog wrapper a bit
2023-07-06 00:13:42 -05:00
trapexit
ee13810f3b
Merge pull request #1207 from trapexit/atomic
...
Fix build on older distros due to std::atomic definitions
2023-07-02 23:57:45 -05:00
Antonio SJ Musumeci
5d6c9cc56a
Fix build on older distros due to std::atomic definitions
...
std::atomic_uint64_t missing in some older distros
2023-07-02 23:46:46 -05:00
trapexit
832903378e
Merge pull request #1206 from trapexit/write-errs
...
Fix error handling for cached writes
2023-06-29 22:51:34 -05:00
Antonio SJ Musumeci
2722f4f64d
Fix error handling for cached writes
2023-06-29 22:50:24 -05:00
trapexit
7cdd12bda4
Merge pull request #1204 from trapexit/gc
...
Add manual GC triggering + configurable process queue depth
2023-06-26 23:26:47 -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
trapexit
42836e0961
Merge pull request #1203 from trapexit/append-move
...
Fix move when in append mode + fix read/write direct_io vs cached behavior
2023-06-24 23:13:57 -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
82430e1079
Fix moveonenospc when file opened with append mode
2023-06-12 23:40:08 -05:00
trapexit
701f88de43
Merge pull request #1171 from trapexit/srcmounts
...
Make srcmounts readonly
2023-04-05 22:31:29 -04:00
Antonio SJ Musumeci
c72997f298
Make srcmounts readonly
...
All tools only read from srcmounts and the current setup had a bug
which caused branch mode and minfreespace to be stripped when using
config file.
2023-04-05 22:24:24 -04:00
trapexit
c681d6c2fe
Merge pull request #1170 from trapexit/fuse_destroy
...
Fix crash when exiting with open deleted files
2023-04-05 00:35:04 -04:00
Antonio SJ Musumeci
6bc3d77992
Fix crash when exiting with open deleted files
2023-04-05 00:32:30 -04:00
trapexit
c266bae96d
Merge pull request #1166 from trapexit/docs
...
Remove duplicate entries in docs
2023-04-01 14:41:33 -04:00
Antonio SJ Musumeci
cdcfef2ceb
Remove duplicate entries in docs
2023-04-01 14:40:49 -04:00
trapexit
7a62a629b9
Merge pull request #1165 from trapexit/thread-defaults
...
Change default read-thread-count from -1 to 0 as documented
2023-03-31 13:38:08 -04:00
Antonio SJ Musumeci
0a64d74b4b
Change default read-thread-count from -1 to 0 as documented
2023-03-31 12:54:57 -04:00
trapexit
26c8b5c642
Merge pull request #1161 from trapexit/fix
...
Workaround older gcc bug with namespacing std::hash
2023-03-28 21:57:51 -04:00
Antonio SJ Musumeci
26fd11cb4d
Workaround older gcc bug with namespacing std::hash
2023-03-28 21:53:38 -04:00
trapexit
cdceade1ae
Merge pull request #1159 from trapexit/wait
...
More actively report to syslog when waiting for branches to mount
2023-03-28 19:03:50 -04:00
Antonio SJ Musumeci
eebd6e9eb4
Actively report to syslog when waiting for mounts
2023-03-28 19:01:21 -04:00
trapexit
9744eab819
Merge pull request #1156 from trapexit/options
...
Fix loading readonly / write once options from file
2023-03-19 23:41:15 -04:00
Antonio SJ Musumeci
1c5b0f2f5f
Fix loading readonly / write once options from file
2023-03-19 23:40:32 -04:00
trapexit
d9033b7713
Merge pull request #1155 from trapexit/mover-scripts
...
Fix mover script link typo
2023-03-19 22:08:31 -04:00
Antonio SJ Musumeci
b1d11779f0
Fix mover script link typo
2023-03-19 22:07:03 -04:00
trapexit
be19b9ce71
Merge pull request #1154 from trapexit/mover-scripts
...
Move tiered cache mover scripts to files in tools dir
2023-03-19 22:03:31 -04:00
Antonio SJ Musumeci
9fcaf6a674
Move tiered cache mover scripts to files in tools dir
2023-03-19 01:23:19 -04:00
trapexit
2dd4b788ce
Merge pull request #1153 from trapexit/readme
...
Misc README updates
2023-03-18 21:48:16 -04:00
Antonio SJ Musumeci
5152c63480
Misc README updates
2023-03-18 21:47:37 -04:00
trapexit
bd02bfd54c
Merge pull request #1151 from kephir4eg/master
...
Fix config file parsing
2023-03-11 00:45:24 -05:00
Ilya Taranov
d04e04e89a
Fix config file parsing
2023-03-10 20:55:20 -08:00
trapexit
10a9969a64
Merge pull request #1149 from trapexit/readahead
...
Add ability to set readahead of mergerfs and branches
2023-03-09 00:13:49 -05:00
Antonio SJ Musumeci
486c5d3734
Add ability to set readahead of mergerfs and branches
2023-03-09 00:12:57 -05:00
trapexit
55bd0ca25a
Merge pull request #1147 from trapexit/readme
...
Update README regarding why epmfs is default
2023-03-06 23:26:00 -05:00
Antonio SJ Musumeci
ee2855bb38
Update README regarding why epmfs is default
2023-03-06 23:25:42 -05:00
trapexit
65c004a309
Merge pull request #1146 from jonaswinkler/master
...
Fix typo in basic setup options
2023-03-06 09:26:21 -05:00
Jonas Winkler
a598f63235
Update README.md
2023-03-06 15:17:00 +01:00
trapexit
6e845b337a
Merge pull request #1145 from trapexit/readme
...
Lots of misc README updates
2023-03-05 01:43:08 -05:00
Antonio SJ Musumeci
e25fa1954e
Lots of misc README updates
2023-03-05 01:42:42 -05:00
trapexit
b48d368130
Merge pull request #1143 from trapexit/rework-read
...
Rework fuse read to use same buffers as messages
2023-02-26 23:37:14 -05:00
Antonio SJ Musumeci
373d331f39
Rework fuse read to use same buffers as messages
2023-02-26 23:31:44 -05:00
trapexit
4a647beec1
Merge pull request #1142 from trapexit/remove-splice
...
Remove splicing features
2023-02-26 01:45:29 -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
trapexit
09fbb80f8c
Merge pull request #1140 from trapexit/pinthreads
...
Add ability to pin read and processing threads
2023-02-20 22:45:54 -05:00
Antonio SJ Musumeci
34310170ac
Add ability to pin read and processing threads
2023-02-19 17:52:29 -05:00
trapexit
e39ace0eba
Merge pull request #1139 from trapexit/per-process-page-cache
...
Add "per-process" file caching feature
2023-02-18 01:34:37 -05:00
Antonio SJ Musumeci
9effeb6869
Add "per-process" file caching feature
...
Allows chosing page caching based on process name.
2023-02-18 01:16:36 -05:00
trapexit
b51a5970b2
Merge pull request #1137 from trapexit/btrfs-ioctl
...
Return NOTTY for all btrfs ioctl calls
2023-02-11 10:25:09 -05:00
Antonio SJ Musumeci
2d9c915641
Return NOTTY for all btrfs ioctl calls
...
mergerfs tries to pass through ioctl calls but due to the complexity
of btrfs calls their is risk of segfaults. In the future it may be
required to whitelist all supported ioctl calls.
2023-02-11 10:07:55 -05:00
trapexit
737e59d232
Merge pull request #1133 from trapexit/lazy-umount
...
Add option to lazy umount target mount point
2023-02-02 22:12:17 -05:00
Antonio SJ Musumeci
9adddfc66d
Add option to lazy umount target mount point
2023-02-02 21:20:23 -05:00
trapexit
9a6b7835f4
Merge pull request #1131 from trapexit/docs
...
Add more apps to section on sqlite3 mmap problems
2023-01-29 23:57:46 -05:00
Antonio SJ Musumeci
ac4e097511
Add more apps to section on sqlite3 mmap problems
2023-01-29 23:56:50 -05:00
trapexit
3d73c6a596
Merge pull request #1130 from trapexit/docs
...
Update README regarding requesting support and policy descriptions
2023-01-29 23:24:33 -05:00
Antonio SJ Musumeci
9670fb9704
Update README regarding requesting support and policy descriptions
2023-01-29 23:24:09 -05:00
trapexit
e2ece936e6
Merge pull request #1129 from trapexit/fuse-version
...
Remove FUSE_USE_VERSION, no longer used
2023-01-29 18:27:26 -05:00
Antonio SJ Musumeci
a4491169b0
Remove FUSE_USE_VERSION, no longer used
2023-01-29 17:04:08 -05:00
trapexit
0d566befba
Merge pull request #1128 from trapexit/checkbranches
...
Forbid adding mountpoint to branch list
2023-01-29 15:50:25 -05:00
Antonio SJ Musumeci
3e313cd605
Forbid adding mountpoint to branch list
2023-01-29 11:51:56 -05:00
trapexit
5bf2a2be59
Merge pull request #1127 from trapexit/bugfixes
...
Backport bug fixes from libfuse3
2023-01-28 01:17:50 -05:00
Antonio SJ Musumeci
7ed91c1668
Backport bug fixes from libfuse3
2023-01-28 01:17:07 -05:00
trapexit
041e3f50d5
Merge pull request #1126 from trapexit/removeallowother
...
Hard code setting of allow_other, ignore when set
2023-01-26 23:40:12 -05:00
Antonio SJ Musumeci
92ccfd3c89
Hard code setting of allow_other, ignore when set
2023-01-26 23:37:37 -05:00
trapexit
24f2d3c94d
Merge pull request #1125 from trapexit/scheduling-priority
...
Allow setting of scheduling priority
2023-01-25 23:42:20 -05:00
Antonio SJ Musumeci
a7113bb163
Allow setting of scheduling priority
2023-01-25 23:38:31 -05:00
trapexit
ec5ac0c517
Merge pull request #1124 from trapexit/builds
...
Update CirrusCI setup
2023-01-25 20:24:52 -05:00
Antonio SJ Musumeci
fdec3355a1
Update CirrusCI setup
2023-01-25 20:12:53 -05:00
trapexit
16e9ba2f19
Merge pull request #1123 from trapexit/wait
...
Add option to wait for branches to become new mounts
2023-01-25 19:51:58 -05:00
Antonio SJ Musumeci
939eb3996a
Add option to wait for branches to become new mounts
...
branches-mount-timeout=UINT64 in seconds (default: 0)
2023-01-25 11:59:14 -05:00
trapexit
2d8d0f7ad6
Merge pull request #1120 from trapexit/nonempty
...
Remove 'nonempty' argument
2023-01-16 23:41:51 -05:00
Antonio SJ Musumeci
3ee93d4c56
Remove 'nonempty' argument
...
This makes it like all other filesystems and brings it into alignment
with libfuse3's behavior.
2023-01-16 23:33:36 -05:00
trapexit
0b2afda30e
Merge pull request #1119 from trapexit/useino
...
Remove use_ino option and make behavior same as if set
2023-01-16 16:53:30 -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
trapexit
3e725a66e3
Merge pull request #1118 from trapexit/msghandling
...
Add async message processing
2023-01-16 13:41:00 -05:00
Antonio SJ Musumeci
24423b8d2a
Add async message processing
2023-01-16 13:15:53 -05:00
trapexit
c89fbde48d
Merge pull request #1116 from davidkaufman/patch-1
...
small grammar correction to README file
2023-01-13 13:47:07 -05:00
David Kaufman
b65e52d56b
small grammar correction to README file
...
sorry, i'm a grammar nerd with ocd :-)
2023-01-03 00:58:08 -05:00
trapexit
6c2db76b92
Merge pull request #1109 from trapexit/fixes
...
Fix regression testing for implemented functions
2022-12-11 14:44:54 -05:00
Antonio SJ Musumeci
094ad862e7
Fix regression testing for implemented functions
2022-12-11 14:44:19 -05:00
trapexit
e81b1a6b9d
Merge pull request #1107 from trapexit/32bitfixes
...
Fix printf for 32bit systems
2022-12-08 22:06:15 -05:00
Antonio SJ Musumeci
a6ca96fa08
Fix printf for 32bit systems
2022-12-08 22:04:15 -05:00
trapexit
a449829d5f
Merge pull request #1106 from trapexit/xattrfix
...
Fix reading of setxattr name
2022-12-08 18:40:57 -05:00
Antonio SJ Musumeci
d14427ad9e
Fix reading of setxattr name
2022-12-08 18:40:08 -05:00
trapexit
ac1f4b4d52
Merge pull request #1105 from trapexit/ll
...
Misc cleanup
2022-11-27 23:29:53 -05:00
Antonio SJ Musumeci
ddf5e53aa4
Misc cleanup
2022-11-27 22:23:38 -06:00
trapexit
a2a12afb34
Merge pull request #1104 from trapexit/ll
...
Remove libfuse abstraction in prep for adding request data
2022-11-27 00:39:05 -05:00
Antonio SJ Musumeci
7606430188
Remove libfuse abstraction in prep for adding request data
2022-11-26 23:30:27 -06:00
trapexit
629806e896
Merge pull request #1093 from lgtm-migrator/codeql
...
Add CodeQL workflow for GitHub code scanning
2022-11-11 09:53:27 -05:00
LGTM Migrator
50fbf14e1e
Add CodeQL workflow for GitHub code scanning
2022-11-11 07:59:54 +00:00
trapexit
4a67bbdc71
Merge pull request #1092 from trapexit/cleanup
...
Remove write_buf, simplify FUSE msg dispatching
2022-11-10 23:24:25 -05:00
Antonio SJ Musumeci
dba9c4451a
Remove write_buf, simplify FUSE msg dispatching
2022-11-10 22:43:02 -05:00
trapexit
fea499e220
Merge pull request #1091 from trapexit/cleanup
...
Remove unnecessary libfuse abstractions
2022-11-07 23:35:18 -05:00
Antonio SJ Musumeci
9d056d609f
Remove unnecessary libfuse abstractions
2022-11-07 23:09:25 -05:00
trapexit
9a839dd8ba
Merge pull request #1089 from trapexit/32bit
...
Tweaks for 32bit systems
2022-11-05 23:37:19 -04:00
Antonio SJ Musumeci
32e2c9c48e
Tweaks for 32bit systems
2022-11-05 23:28:10 -04:00
trapexit
83d7886a0a
Merge pull request #1087 from trapexit/kernelh
...
Update fuse_kernel.h
2022-11-03 23:29:22 -04:00
Antonio SJ Musumeci
316abba0ac
Update fuse_kernel.h
2022-11-03 23:28:44 -04:00
trapexit
8001c58c36
Merge pull request #1085 from trapexit/symlinkify
...
Fix setting of stat vars for symlinkify
2022-10-31 19:47:36 -04:00
Antonio SJ Musumeci
3b0d7fb26e
Fix setting of stat vars for symlinkify
2022-10-30 22:27:33 -04:00
trapexit
5d3c5002e0
Merge pull request #1058 from trapexit/docs
...
Support doc update
2022-08-08 14:09:22 -04:00
Antonio SJ Musumeci
9082285cc8
Support doc update
2022-08-08 13:40:43 -04:00
trapexit
d1762b2bac
Merge pull request #1057 from trapexit/cfgerrs
...
Error when given invalid policy names
2022-08-06 23:08:10 -04:00
Antonio SJ Musumeci
46ce28b149
Error when given invalid policy names
2022-08-06 23:01:23 -04:00
trapexit
faadeb75e0
Merge pull request #1045 from Gelma/master
...
Fix typos
2022-06-22 14:27:13 -04:00
Andrea Gelmini
338e559e53
Fix typos
2022-06-22 11:51:23 +02:00
trapexit
3db673410f
Merge pull request #1039 from trapexit/docs
...
Add details about usage of FUSE to docs
2022-05-23 12:49:06 -04:00
Antonio SJ Musumeci
77f098614f
Add details about usage of FUSE to docs
2022-05-23 12:40:00 -04:00
trapexit
9589846e9a
Merge pull request #1032 from trapexit/support
...
Rework support section in readme
2022-04-25 17:44:16 -04:00
Antonio SJ Musumeci
e2dda3c1b1
Rework support section in readme
2022-04-25 17:42:31 -04:00
trapexit
d9ab18282f
Merge pull request #1031 from trapexit/root-parent
...
Return ENOENT when dotdot for root node requested
2022-04-12 23:18:57 -04:00
Antonio SJ Musumeci
14c2ff9ab8
Return ENOENT when dotdot for root node requested
2022-04-12 23:17:39 -04:00
trapexit
77e6f400b5
Merge pull request #1026 from trapexit/loglock
...
Lock less often during logging
2022-03-20 22:45:07 -04:00
Antonio SJ Musumeci
b95ff8ba3a
Lock less often during logging
2022-03-20 22:34:55 -04:00
trapexit
4bf8738e5c
Merge pull request #1025 from trapexit/estale
...
Change ENOENT to ESTALE for looking up paths to handle rename race conditions
2022-03-20 12:19:00 -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
trapexit
c4c35a9ad0
Merge pull request #1023 from trapexit/follow-symlink-fix
...
Fix query of attr during symlink
2022-03-19 17:01:11 -04:00
Antonio SJ Musumeci
c9a935835f
Fix query of attr during symlink
...
Using getattr when follow-symlink is enabled causes invalid type to the kernel
if symlink pointed to non-symlink.
2022-03-19 16:18:46 -04:00
trapexit
015002ebd9
Merge pull request #1020 from trapexit/slab-maintenance
...
Rework node slab garbage collection to limit blocking work threads
2022-03-19 15:54:29 -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
trapexit
2d5c2c2b6e
Merge pull request #1007 from trapexit/trapexit-patch-1
...
Update bug_report.md
2022-01-18 21:16:22 -05:00
trapexit
e3ab739a56
Update bug_report.md
2022-01-18 21:15:59 -05:00
trapexit
c784d06029
Merge pull request #1005 from trapexit/readme-readahead
...
Update README.md regarding readahead
2022-01-15 17:39:31 -05:00
trapexit
58803f4845
Update README.md
2022-01-15 17:33:07 -05:00
trapexit
f159fe61f9
Merge pull request #997 from trapexit/link-getattr
...
Call FUSE getattr rather than syscall for extra logic
2021-12-18 17:21:19 -05:00
Antonio SJ Musumeci
c43b464d6c
Call FUSE getattr rather than syscall for extra logic
...
While more efficient calling regular getattr (stat) leads to incorrect
information being returned and would not work correctly when using
symlinkify.
2021-12-18 17:07:23 -05:00
trapexit
34c684a4f5
Merge pull request #991 from trapexit/fix/symlink
...
Get attrs for link, not target
2021-12-16 19:35:18 -05:00
Antonio SJ Musumeci
e256c88e4c
Get attrs for link, not target
2021-12-16 19:11:29 -05:00
trapexit
518b4a6b85
Merge pull request #984 from trapexit/disable-locks
...
Ensure server handling of locks is disabled
2021-11-27 00:02:55 -05:00
Antonio SJ Musumeci
ee8532c70d
Ensure server handling of locks is disabled
2021-11-27 00:01:12 -05:00
trapexit
c58da1ab9c
Merge pull request #979 from trapexit/node-size
...
Remove embedded name in node struct
2021-11-01 22:46:09 -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
trapexit
810c5a40f7
Merge pull request #978 from trapexit/debug2
...
Add new debug printing routines, fix ioctl cmd type
2021-10-27 22:31:58 -04:00
Antonio SJ Musumeci
18dead4d86
Add new debug printing routines
2021-10-27 22:12:10 -04:00
trapexit
2082357d3a
Merge pull request #977 from trapexit/readme
...
Readme
2021-10-25 21:58:01 -04:00
Antonio SJ Musumeci
68719da828
Remove ioctl runtime section, use getfattr instead of xattr
2021-10-25 21:57:30 -04:00
trapexit
31fd1ec82e
Merge pull request #975 from trapexit/sponsorship
...
Remove subscribestar from sponsor platforms
2021-10-15 23:30:33 -04:00
trapexit
c3845097ee
Remove subscribestar from sponsor platforms
2021-10-15 23:30:22 -04:00
trapexit
d76934ee9d
Merge pull request #972 from trapexit/log-node-info
...
Add option to log node memory usage metrics
2021-10-11 12:33:11 -04:00
Antonio SJ Musumeci
5f737cb7bf
Add option to log node memory usage metrics
2021-10-11 11:57:16 -04:00
trapexit
50ede1ba97
Merge pull request #969 from trapexit/node-size
...
Reduce struct node size
2021-10-03 22:44:03 -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
trapexit
88b91161e0
Merge pull request #968 from trapexit/fix
...
Fix regression from remember_node refactor
2021-09-30 22:14:51 -04:00
Antonio SJ Musumeci
8150957a01
Fix regression from remember_node refactor
2021-09-30 22:13:29 -04:00
trapexit
fee97efafb
Merge pull request #967 from trapexit/malloc-trim
...
Add malloc_trim configure test
2021-09-30 20:25:42 -04:00
trapexit
80856cf7ac
Merge pull request #966 from trapexit/libupdates
...
Update ghc::filesystem and nonstd::optional
2021-09-30 20:05:40 -04:00
Antonio SJ Musumeci
c929781d08
Add malloc_trim configure test
2021-09-30 20:00:40 -04:00
Antonio SJ Musumeci
313aa2a1d3
Update ghc::filesystem and nonstd::optional
2021-09-30 19:43:05 -04:00
trapexit
021ce3d97c
Merge pull request #964 from trapexit/fmp
...
Rework of allocation in libfuse
2021-09-19 17:31:39 -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
trapexit
b165332486
Merge pull request #959 from trapexit/readme
...
Add details on dropping caches before benchmarks
2021-09-03 07:22:21 -04:00
Antonio SJ Musumeci
f598d3bc38
Add details on dropping caches before benchmarks
2021-09-03 07:21:16 -04:00
trapexit
4daa9e4eb9
Merge pull request #957 from trapexit/cirrus-ci
...
Add new cirrus-ci targets
2021-08-29 14:25:17 -04:00
Antonio SJ Musumeci
122f9c1d5d
Add new cirrus-ci targets
2021-08-29 13:56:56 -04:00
trapexit
2da5cda4b3
Merge pull request #956 from trapexit/mount-bsd
...
Remove usage printing regression in mount_bsd
2021-08-29 13:20:07 -04:00
Antonio SJ Musumeci
5263a65dcf
Remove usage printing regression in mount_bsd
2021-08-29 13:09:38 -04:00
trapexit
1255d3d1b2
Merge pull request #955 from trapexit/mfs
...
Fix infinite loop in mfs action policy
2021-08-29 13:07:40 -04:00
Antonio SJ Musumeci
8def16a811
Fix infinite loop in mfs action policy
2021-08-29 12:33:52 -04:00
trapexit
7d1683b607
Merge pull request #954 from trapexit/libfuse-cleanup
...
Major cleanup of libfuse to remove unneeded features
2021-08-29 12:15:05 -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
trapexit
8b33f9a766
Merge pull request #953 from trapexit/readme-chia
...
Update docs with Chia wallet address
2021-08-26 12:57:16 -04:00
Antonio SJ Musumeci
df721eb253
Update docs with Chia wallet address
2021-08-26 12:56:33 -04:00
trapexit
0547517a99
Merge pull request #951 from trapexit/readme
...
Add more clarity in what to provide when submitting bug reports
2021-08-22 13:12:03 -04:00
Antonio SJ Musumeci
54e85007a2
Add more clarity in what to provide when submitting bug reports or questions
2021-08-22 13:10:54 -04:00
trapexit
6e53f3b698
Merge pull request #945 from trapexit/readme
...
Update 'features' section of readme
2021-08-10 21:49:32 -04:00
Antonio SJ Musumeci
1aaf742c13
Update 'features' section of readme
2021-08-10 21:48:51 -04:00
trapexit
3754e20049
Merge pull request #944 from trapexit/trapexit-patch-1
...
tweak bug report template language
2021-08-09 21:10:16 -04:00
trapexit
b4c031d1f0
tweak bug report template language
2021-08-09 21:09:54 -04:00
trapexit
3b8d495c43
Merge pull request #940 from trapexit/ioctl-runtime-removal
...
Remove config ioctl calls
2021-08-03 17:02:01 -04:00
Antonio SJ Musumeci
61c2187c14
Remove config ioctl calls
...
While they were going to be the new way of interacting with the runtime config
I've decided to use toml based config for mergerfs v3. In that case all updates
will happen through the config file and ioctl will only be used to load/reload
the config rather than a key:value like API.
2021-08-02 16:56:20 -04:00
trapexit
192e4a4af8
Merge pull request #939 from trapexit/update-nonstd-optional
...
Update nonstd::optional to v3.4.0
2021-08-02 16:29:40 -04:00
trapexit
749f0290e9
Merge pull request #938 from trapexit/update-ghc-filesystem
...
Update ghc::filesystem to v1.5.8
2021-08-02 16:24:22 -04:00
Antonio SJ Musumeci
7013ff9aeb
Update nonstd::optional to v3.4.0
2021-08-02 16:10:56 -04:00
Antonio SJ Musumeci
3ce0dc56e4
Update ghc::filesystem to v1.5.8
2021-08-02 16:06:43 -04:00
trapexit
8e47bf4946
Merge pull request #926 from trapexit/modzero
...
pfrd: fix mod by zero error when all branches are filtered
2021-06-25 09:45:01 -04:00
Antonio SJ Musumeci
098f353bf1
pfrd: fix mod by zero error when all branches are filtered
2021-06-25 09:17:16 -04:00
trapexit
859b4da3dc
Merge pull request #924 from trapexit/varinit-master
...
properly initialize fuse_buf in worker loop
2021-06-20 17:40:12 -04:00
Antonio SJ Musumeci
80f30999fa
properly initialize fuse_buf in worker loop
2021-06-20 17:38:17 -04:00
trapexit
3fdd322a5c
Merge pull request #914 from trapexit/readme
...
mention bind-propagation and add link to hotio
2021-05-29 13:27:19 -04:00
trapexit
c40f42e57e
mention bind-propagation and add link to hotio
2021-05-29 13:26:54 -04:00
trapexit
18e87980a4
Merge pull request #913 from trapexit/readme
...
Update README.md
2021-05-29 13:07:54 -04:00
trapexit
44efbaabe6
Update README.md
...
Add FAQ entry regarding container runtimes
2021-05-29 13:07:09 -04:00
trapexit
a02f3a6856
Merge pull request #891 from trapexit/trapexit-patch-1
...
Update bug_report.md
2021-03-15 07:58:22 -04:00
trapexit
9573a053d6
Update bug_report.md
...
update the strace commands and make clear to use a recent release
2021-03-15 07:58:02 -04:00
trapexit
9a5d691619
Merge pull request #889 from trapexit/readme
...
README: update strace args and add question on snapraid
2021-03-11 15:37:37 -05:00
Antonio SJ Musumeci
495afeffb1
README: update strace args and add question on snapraid
2021-03-11 15:36:50 -05:00
trapexit
4acc1defe2
Merge pull request #888 from Gelma/typo
...
Fix typo
2021-03-06 17:49:40 -05:00
Andrea Gelmini
58b4eb9089
Fix typo
2021-03-06 23:38:33 +01:00
trapexit
ca4b4c6d35
Merge pull request #884 from trapexit/travis
...
remove travis-ci
2021-02-25 15:40:32 -05:00
Antonio SJ Musumeci
9a90609428
remove travis-ci
2021-02-25 15:40:00 -05:00
trapexit
3e691149f5
Merge pull request #883 from trapexit/link-symlink
...
new features: follow-symlinks, rename-exdev, link-exdev
2021-02-25 15:33:26 -05: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
trapexit
50daf84ec0
Merge pull request #880 from trapexit/branch-parse-fix
...
fix parsing of relative branch paths
2021-02-11 19:37:38 -05:00
Antonio SJ Musumeci
d337574665
fix parsing of relative branch paths
2021-02-11 19:22:17 -05:00
trapexit
39d98f1eac
Merge pull request #878 from trapexit/readdir_rewind_fix
...
reset dentry buffer when rewind'ed
2021-02-09 20:21:59 -05:00
trapexit
cbea2ba91b
Merge branch 'master' into readdir_rewind_fix
2021-02-09 18:13:08 -05:00
Antonio SJ Musumeci
f6e37672b8
reset dentry buffer when rewind'ed
2021-02-09 18:09:28 -05:00
trapexit
55bd9a06b1
Merge pull request #876 from trapexit/readme
...
readme: update support section
2021-02-08 18:15:45 -05:00
Antonio SJ Musumeci
6a9f7e6afc
readme: update support section
2021-02-08 17:55:49 -05:00
trapexit
f2158d3e66
Merge pull request #871 from trapexit/support
...
README: update support section
2021-01-23 18:54:42 -05:00
Antonio SJ Musumeci
3bc189cfc8
README: update support section
2021-01-23 18:54:06 -05:00
trapexit
d0c5ff7f87
Merge pull request #870 from trapexit/readme
...
README: add warning/clearity about caching script and hardlinks and cow
2021-01-23 17:19:59 -05:00
Antonio SJ Musumeci
dfb544fed8
README: add warning/clearity about caching script and hardlinks and cow
2021-01-23 17:18:07 -05:00
trapexit
ae893ca051
Merge pull request #865 from trapexit/config
...
config: rework global config, remove rwlock, make branches RCU like
2021-01-14 22:10:20 -05:00
Antonio SJ Musumeci
538467b86d
config: rework global config, remove rwlock, make branches RCU like
...
Also added unit tests. Should have done separately but found a number of bugs.
2021-01-14 21:02:10 -05:00
trapexit
46de43d4ad
Merge pull request #860 from trapexit/funding
...
Update FUNDING.yml
2021-01-01 15:52:41 -05:00
trapexit
3808e2683e
Update FUNDING.yml
2021-01-01 15:52:15 -05:00
trapexit
52342a76c1
Merge pull request #858 from trapexit/docs
...
README: misc updates and tweaks
2020-12-29 19:36:30 -05:00
Antonio SJ Musumeci
e9e17baf5e
README: misc updates and tweaks
2020-12-29 19:34:13 -05:00
trapexit
2e4c6c5fd1
Merge pull request #856 from trapexit/dirname
...
dirname should not return an empty string
2020-12-18 17:03:43 -05:00
Antonio SJ Musumeci
f50812a9ce
dirname should not return an empty string
2020-12-18 16:04:17 -05:00
trapexit
861edff49a
Merge pull request #855 from trapexit/builds
...
update cirrus-ci builds
2020-12-17 20:18:16 -05:00
Antonio SJ Musumeci
5e08357f0e
update cirrus-ci builds
2020-12-17 20:17:16 -05:00
trapexit
411ee36c90
Merge pull request #854 from trapexit/mspfix
...
msp policies stopped before root path
2020-12-17 20:14:54 -05:00
Antonio SJ Musumeci
44a98910ba
msp policies stopped before root path
2020-12-17 19:55:49 -05:00
trapexit
8a335d8a6e
Merge pull request #851 from trapexit/fix
...
fix segv: zero out data structures
2020-12-13 16:56:55 -05:00
Antonio SJ Musumeci
3900543970
fix segv: zero out data structures
2020-12-13 13:40:04 -05:00
trapexit
2e34c7598a
Merge pull request #845 from trapexit/configfile
...
config: fix invalid error check when parsing config file
2020-11-28 21:49:51 -05:00
Antonio SJ Musumeci
7edd3c6cf3
config: fix invalid error check when parsing config file
2020-11-28 20:26:18 -05:00
trapexit
ddf0075938
Merge pull request #844 from trapexit/cleanup
...
general cleanup, slight memory reduction
2020-11-19 23:30:48 -05:00
Antonio SJ Musumeci
1b26f4908e
general cleanup, slight memory reduction
2020-11-19 22:58:52 -05:00
trapexit
2d8fab534a
Merge pull request #843 from trapexit/policyfixes
...
msp policies: used wrong path to check existance
2020-11-19 20:34:51 -05:00
Antonio SJ Musumeci
c3fffefbc1
msp policies: used wrong path to check existance
2020-11-19 18:34:28 -05:00