Files
bees/bees.spec
David Sterba e5d2707924 - Update to 0.11:
* 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
2025-07-16 14:34:37 +00:00

86 lines
2.5 KiB
RPMSpec

#
# spec file for package bees
#
# Copyright (c) 2025 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
Name: bees
Version: 0.11
Release: 0
Summary: Best-Effort Extent-Same, a btrfs deduplication agent
License: GPL-3.0-only
Group: System/Filesystems
URL: https://github.com/Zygo/bees
Source: https://github.com/Zygo/bees/archive/refs/tags/v%{version}.tar.gz
BuildRequires: gcc-c++
BuildRequires: libbtrfs-devel
BuildRequires: libuuid-devel
BuildRequires: make
%if 0%{?suse_version} == 1500 && 0%{?sle_version} > 150200
BuildRequires: gcc13-c++
%else
BuildRequires: gcc-c++
%endif
%description
bees is a block-oriented userspace deduplication agent designed for large btrfs
filesystems. It is an offline dedupe combined with an incremental data scan
capability to minimize time data spends on disk from write to dedupe.
Hilights:
* Space-efficient hash table and matching algorithms - can use as little as 1
GB hash table per 10 TB unique data (0.1GB/TB)
* Daemon incrementally dedupes new data using btrfs tree search
* Works with btrfs compression - dedupe any combination of compressed and uncompressed files
* Persistent hash table for rapid restart after shutdown
* Whole-filesystem dedupe - including snapshots
* Constant hash table size - no increased RAM usage if data set becomes larger
* Works on live data - no scheduled downtime required
* Automatic self-throttling based on system load
%prep
%autosetup -p1
%build
%if 0%{?suse_version} == 1500 && 0%{?sle_version} > 150200
export CC=gcc-13
export CXX=g++-13
%endif
cat >localconf <<-EOF
SYSTEMD_SYSTEM_UNIT_DIR=%{_unitdir}
LIBEXEC_PREFIX=%{_bindir}
LIB_PREFIX=%{_libdir}
PREFIX=%{_prefix}
LIBDIR=%{_libdir}
DEFAULT_MAKE_TARGET=all
EOF
%make_build BEES_VERSION=%{version}
%install
%make_install
%files
%license COPYING
%doc README.md
%{_bindir}/bees
%{_sbindir}/beesd
%{_unitdir}/beesd@.service
%dir %{_sysconfdir}/bees
%{_sysconfdir}/bees/beesd.conf.sample
%changelog