mergerfs v2.42.0
Donations / Sponsorship
If you find mergerfs useful please consider supporting its ongoing development.
https://github.com/trapexit/support
New features
lup(least used percentage) policy: selects the branch with the lowest used space percentage.mount.mergerfsnow includes the-nflag to support mounting without updating /etc/mtab.
Improvements
- Better lock management and behavior with open files. Reduction of contention.
- Custom filename dedup strategy improving directory reading performance
- Pre-calculate part of the file inode within readdir significantly reducing cost of overall calculation.
- Replace sched_yield with nanosleep for improved scheduling of contention situations.
- improved stat auto cache fingerprinting to reduce stale reads.
Behavior changes
- credential handling reworked to be compatible with chroot and idmap. removed ability to disable
default_permissionsoption as a result as mergerfs now requires the kernel to manage entitlements. - broken mounts with ENOTCONN (common due to crashed FUSE instances) are automatically unmounted if possible on start instead of hard erroring. (mostly useful while developing).
fusermount3will be used if available and other options missing.remember-nodesoption is deprecated and the feature removed. There is now onlynever-forget-nodesbehavior. Any non-zero value inremember-nodeswill enablenever-forget-nodes. It was removed because time based really didn't save much memory and complicated the code. Doing this also reduced the size of each node helping offset increased node count.
Bug fixes
- fix race condition between runtime changing of branches and certain requests.
rmdirno longer returns success if any rmdir call returns ENOTEMPTY.- Invalid policy names are properly rejected.
- statfs calculation could theoretically have overflowed with impossibly large branch values.
- Fixed
readlinkbuffer size management. The size does not include a nul terminating value. - Minor calculation bugs in
copy_file_rangeandfutimens. moveonenospcno longer crashes when all destination branches are rejected. Returns ENOSPC.- Better / more proper error calculations in a number of functions.
- rare ioctl call crash fixed
Hardening
- many "the kernel should never do this bug just in case" enhancements