* Introduce *extent scan mode* that scans the extent tree directly. It is the
new default scan mode.
* Show estimated data size and expected time to finish scanning in logs and
status outputs.
* Smarter dedupe criteria that prevents dedupe operations that save less than
half the blocks in an extent or require more than 100 copy/dedupe operations
to free space.
* Add the new dynamic rate throttling option `--throttle-factor` to estimate
the rate at which the kernel deletes extents and slow down dedupe requests
to match this rate.
* Threads now dynamically redistribute their work so that they can make
continuous progress without waiting for each other.
* Remove excessively costly "toxic extent" workarounds yielding up to
100x–1000x speed boost on some workloads.
* Coordinate between threads to prevent thrashing during disk reads.
* Prefetche data into page-cache before dedupe calls.
* Submit full-extent dedupe operations, avoiding obsolete 16M kernel limits.
* Reduce the size of `ioctl` buffers, which avoids forcing the kernel to
evict pages from memory to accommodate large buffers.
* Limit reference counts for very frequently duplicated data, which avoids
performance issues in btrfs (even when bees is not running).
* Use the new `openat2` system call for improved robustness against rename and
symlink attacks.
* Use a private mount namespace for isolation even without `systemd`.
* Recude warning and debug log verbosity.
* `SIGUSR1` and `SIGUSR2` signals allow bees to be paused and unpaused without
preventing bees from closing open files and subvols during the pause.
* It is now safe to locate `$BEESHOME` on filesystems such as XFS that lack
data flushing on `rename`.
* Fix 32-bit `ioctl` compatibility for mixed 32/64-bit systems.
* Detect a `btrfs send` in progress, and wait for it to complete
automatically. `--workaround-btrfs-send` is no longer necessary when used
with extent scan mode.
OBS-URL: https://build.opensuse.org/package/show/filesystems/bees?expand=0&rev=30
* roots: don't share a RootFetcher between threads
* seeker: fix the test for ILP32 platforms
* reduce memory usage with long-running work items
* allow BtrfsIoctlLogicalInoArgs to be reused, remove virtual methods
* create a Pool of BtrfsIoctlLogicalInoArgs objects
- add avoid-swap.patch to fix build with gcc 13
OBS-URL: https://build.opensuse.org/package/show/filesystems/bees?expand=0&rev=24
- update to 0.9.1:
* Fix the install target.
* Makefile: also drop fiemap and fiewalk from main Makefile
- update to 0.9:
- Highlights:
* Work around a kernel bug which can be triggered by running the
LOGICAL_INO ioctl and dedupe on the same extent at the same time.
* Prevent worker threads from being blocked by extent and inode
locks. Defer the blocked item and find something else for that
worker thread to do.
* Fix the labelling of threads so they aren't all "task_consumer".
* Speed up SIGTERM process termination to have a better chance of
flushing the hash table and crawl state to $BEESHOME before the
process is killed by a service timeout.
* Reduce the hash table writeback rate to 128K/s.
* Reduce the interval between crawl restarts to one transid.
* Add 'recent' scan mode, which dedupes new data in fully scanned
subvols instead of waiting for every old subvol to be scanned.
* Better behavior when there are write errors in $BEESHOME.
* Drop the unused and obsolete `fiemap` and `fiewalk` binaries.
OBS-URL: https://build.opensuse.org/request/show/1065673
OBS-URL: https://build.opensuse.org/package/show/filesystems/bees?expand=0&rev=20