Mergerfs Versions Save

a featureful union filesystem

2.40.2

2 months ago

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.

https://github.com/trapexit/support

2.40.1

2 months ago

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.

https://github.com/trapexit/support

2.40.0

2 months ago

Change Summary

After many hours of debugging it looks like mergerfs users have uncovered another kernel bug.

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.

https://github.com/trapexit/support

2.39.0

3 months ago

Change Summary

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.

https://github.com/trapexit/support

2.38.0

6 months ago

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.

https://github.com/trapexit/support

2.37.1

8 months ago

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.

https://github.com/trapexit/support

2.37.0

8 months ago

Change Summary

  • readdir policies: func.readdir=X where X is seq, cor, or cosr.
    • 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

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.

https://github.com/trapexit/support

2.36.0

9 months ago

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

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.

https://github.com/trapexit/support

2.35.1

1 year ago

What's Changed

Documentation

https://github.com/trapexit/mergerfs/blob/2.35.1/README.md

Donations / Sponsorship

https://github.com/trapexit/support

2.35.0

1 year ago

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 policy per-process. Used with cache.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, or allow_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

Full Changelog

https://github.com/trapexit/mergerfs/compare/2.34.1...2.35.0