Releases: trapexit/mergerfs
mergerfs v2.40.2
Change Summary
- Special case O_TMPFILE in preload. Fixes incorrect permissions when used.
Documentation
https://github.com/trapexit/mergerfs/blob/2.40.2/README.md
Donations / Sponsorship
If you find mergerfs useful please consider supporting its ongoing development.
2.40.1
Change Summary
- Fix intermittent error of EIO when used with NFS
Documentation
https://github.com/trapexit/mergerfs/blob/2.40.1/README.md
Donations / Sponsorship
If you find mergerfs useful please consider supporting its ongoing development.
mergerfs v2.40.0
Change Summary
After many hours of debugging it looks like mergerfs users have uncovered another kernel bug.
- Add
export-support
option as a possible workaround for NFS EIO issue. Set tofalse
. - Add details to README regarding remote filesystems
Documentation
https://github.com/trapexit/mergerfs/blob/2.40.0/README.md
Donations / Sponsorship
If you find mergerfs useful please consider supporting its ongoing development.
mergerfs v2.39.0
Change Summary
- Changed
flush-on-close
to default toopened-for-write
- Fix user.mergerfs.pid queries
- Misc updates to docs
- Add experimental LD_PRELOAD library to provide faked passthrough: https://github.com/trapexit/mergerfs/blob/2.39.0/README.md#preloadso
Documentation
https://github.com/trapexit/mergerfs/blob/2.39.0/README.md
Donations / Sponsorship
If you find mergerfs useful please consider supporting its ongoing development.
mergerfs v2.38.0
Change Summary
- Improvement: Rework how threadpools queue depth. There was a rare bug that affected 1 user that lead to the pool believing there were no queue slots open when there should have been.
- Improvement: Better compatibility with older versions of MUSL.
- Improvement: Print warnings to stderr and syslog if run as non-root indicating mergerfs may not work correctly.
- Improvement: Change how allow_other auto-setting works. Only set if running as root for those users who are on shared hosts with
user_allow_other
disabled and all activity is done as their user id. There may still be edge cases that fail but if it works for them I don't want to disallow it. - Add flushonclose feature. Takes advantage of a newer FUSE feature which gives the server control over if a
flush
is issued at file close. Defaults to a less aggressive policy of only flushing when a file is opened for write.
Documentation
https://github.com/trapexit/mergerfs/blob/2.38.0/README.md
Donations / Sponsorship
If you find mergerfs useful please consider supporting its ongoing development.
mergerfs v2.37.1
Change Summary
- Fix deadlock when exiting mergerfs
Documentation
https://github.com/trapexit/mergerfs/blob/2.37.1/README.md
Donations / Sponsorship
If you find mergerfs useful please consider supporting its ongoing development.
mergerfs v2.37.0
Change Summary
- readdir policies:
func.readdir=X
whereX
isseq
,cor
, orcosr
.- seq: sequential - works same as before. Iterate over each branch in order configured.
- cosr: concurrent open sequential read - dispatches requests to open directories to a thread pool and then reads directories sequentially the same way
seq
does. - cor: concurrent open and read - dispatches requests to a thread pool which both opens and reads directories concurrently.
- thread pool sizes are configurable.
cosr:5
would give you 5 threads. - see the docs for more info
- Add invalidation of gid cache via SIGUSR2 (which also triggers a full memory gc)
Changelog
- Lib updates by @trapexit in #1213
- Move fuse thread args out of fuse session object by @trapexit in #1219
- Fix logging pin-threads details by @trapexit in #1220
- Add readdir policies by @trapexit in #1224
- Add callbacks for newer functions by @trapexit in #1225
- Fix a typo in README.md by @feltcat in #1226
- Add ability to invalidate gid cache on demand by @trapexit in #1227
- Add thread names for easier debugging by @trapexit in #1228
- Fix setting of ugids for concurrent readdir by @trapexit in #1231
- Update wyhash to final4 by @trapexit in #1232
- Use relaxed memory order for atomic counters by @trapexit in #1233
- Misc fixes for older platforms by @trapexit in #1234
- Docs: clarify parallel-direct-writes and cache.files by @DavidFair in #1235
- Initialize readdir threadpool after daemonizing by @trapexit in #1237
- Change threadpool to use concurrentqueue by @trapexit in #1238
- Add proper input validation for readdir policy by @trapexit in #1239
- Rework thread pool, add ability to add/remove threads at runtime by @trapexit in #1240
- Add website and license to version option by @trapexit in #1241
- Remove unneeded debug logging from thread pool by @trapexit in #1242
- Add some new questions to FAQ by @trapexit in #1244
Documentation
https://github.com/trapexit/mergerfs/blob/2.37.0/README.md
Donations / Sponsorship
If you find mergerfs useful please consider supporting its ongoing development.
mergerfs v2.36.0
Change Summary
- Allow user to define depth of process thread message queues. Previously these were unbounded and "FORGET" message floods would bloat memory.
- O_DIRECT now supported, mostly. If software attempt to change the O_DIRECT flag on the fly using fcntl(F_SETFL) it won't work as that is not supported by FUSE.
- Fix bug in
moveonenospc
file moves when the file was opened in append mode. - When a create function fails with EROFS (which really only happens when an ext4 filesystem errors) the relevant branch will be marked as mode = RO and the call tried again.
- Add ability to trigger memory cleanup via custom ioctl calls or signal SIGUSR2.
- Add ability to trigger invalidation of all nodes to flush memory using custom ioctl or signal SIGUSR1.
Changelog
- Fix crash when exiting with open deleted files by @trapexit in #1170
- Make srcmounts readonly by @trapexit in #1171
- Fix move when in append mode + fix read/write direct_io vs cached behavior by @trapexit in #1203
- Add manual GC triggering + configurable process queue depth by @trapexit in #1204
- Fix error handling for cached writes by @trapexit in #1206
- Fix build on older distros due to std::atomic definitions by @trapexit in #1207
- Simplify syslog wrapper a bit by @trapexit in #1208
- Align msg buffer memory to allow O_DIRECT to work by @trapexit in #1209
- Create functions can set branches RO on EROFS by @trapexit in #1212
Documentation
https://github.com/trapexit/mergerfs/blob/2.36.0/README.md
Donations / Sponsorship
If you find mergerfs useful please consider supporting its ongoing development.
mergerfs v2.35.1
What's Changed
- Change default read-thread-count from -1 to 0 as documented by @trapexit in #1165
- Remove duplicate entries in docs by @trapexit in #1166
Documentation
https://github.com/trapexit/mergerfs/blob/2.35.1/README.md
Donations / Sponsorship
mergerfs v2.35.0
Summary Changelog
- Lots of documentation changes and tweaks.
- Add ability to log to syslog. Used only for certain new features at startup.
- New FUSE message processing mode. Allow for a separation between threads which are reading messages and those processing messages. See
process-thread-count
option. - Added ability to pin threads to physical or logical cores automatically. Numerous algorithms provided. Makes it easier to limit mergerfs' compute footprint while maintaining concurrency. See
pin-threads
option. - Added ability to change mergerfs' scheduling priority (default has been -10). See
scheduling-priority
option. - Added ability for mergerfs on startup only to wait for all branches to become a filesystem other than the mountpoint's. This is not a full replacement for proper dependency management via systemd or similar systems but can help. See
branches-mount-timeout
option. - Try to catch and forbid adding the target mountpoint as a branch.
- Added ability to set branch AND mergerfs readahead from within mergerfs at startup. Larger values may improve performance when using page caching in particular. See
readahead
option. - Added ability to lazily unmount the target mountpoint when started. This helps in live upgrades of mergerfs or instances where
mount -a
is run. This will allow the underlying instance of mergerfs to exit once it is no longer in use while the new instance is running on top of it. - Added new
cache.files
policyper-process
. Used withcache.files.process-names
it can define process comm names that will have page caching enabled when matched. - Reject all btrfs ioctl calls made to mergerfs.
- Optimized FUSE message handling to reduce memory allocation. Same with some internal functions like
read
. - Removed need to set
use_ino
,nonempty
, orallow_other
. They should have been always enabled for proper functionality and compatibility. Setting them is a noop. - Removed all
splice
features. Over the years there has been little evidence the feature actually improved performance but did complicate the code quite a bit. The splice options are now noops.
Documentation
https://github.com/trapexit/mergerfs/blob/2.35.0/README.md
Donations
https://github.com/trapexit/support
New Contributors
- @davidkaufman made their first contribution in #1116
- @jonaswinkler made their first contribution in #1146
- @kephir4eg made their first contribution in #1151