diff options
Diffstat (limited to 'sys-fs')
-rw-r--r-- | sys-fs/Manifest.gz | bin | 22244 -> 22241 bytes | |||
-rw-r--r-- | sys-fs/bees/Manifest | 5 | ||||
-rw-r--r-- | sys-fs/bees/bees-0.10-r1.ebuild | 112 | ||||
-rw-r--r-- | sys-fs/bees/bees-9999.ebuild | 6 | ||||
-rw-r--r-- | sys-fs/bees/files/0001-context-demote-abandoned-toxic-match-to-debug-log-le.patch | 36 | ||||
-rw-r--r-- | sys-fs/bees/files/0002-HACK-crucible-Work-around-kernel-memory-fragmentatio_v2.patch | 43 | ||||
-rw-r--r-- | sys-fs/btrfs-progs/Manifest | 4 | ||||
-rw-r--r-- | sys-fs/btrfs-progs/btrfs-progs-6.9.2.ebuild | 9 | ||||
-rw-r--r-- | sys-fs/btrfs-progs/metadata.xml | 1 |
9 files changed, 208 insertions, 8 deletions
diff --git a/sys-fs/Manifest.gz b/sys-fs/Manifest.gz Binary files differindex ed1dcec9d16d..ce779c2eb953 100644 --- a/sys-fs/Manifest.gz +++ b/sys-fs/Manifest.gz diff --git a/sys-fs/bees/Manifest b/sys-fs/bees/Manifest index cab62ad6564b..8f062277fcd9 100644 --- a/sys-fs/bees/Manifest +++ b/sys-fs/bees/Manifest @@ -1,5 +1,8 @@ AUX 0001-HACK-crucible-Work-around-kernel-memory-fragmentatio.patch 1183 BLAKE2B 784ad6e8150a5d791c839c04060aa1116f72a29c0e2f4d1d790d6e1fb1d56b5a6ced843f38ac56930a63426ed7e9c5506f81c1f7189728937e0ee49f9f5af079 SHA512 29ac086a2c84d7eb89090498849b2e01e99da62c3ce49b5c4d36f071a3a8ff506e15b227a2303c01da25bdc4572e5dc1129767df496897de8ca2bed579dd3017 +AUX 0001-context-demote-abandoned-toxic-match-to-debug-log-le.patch 1500 BLAKE2B c6f6895b92caae4ac8de83931574f87274d7798889c0589859204d73cd41072ee6967ae908c8509e7f5c929f3a4f04c73932b72a27ab3d244cef254ebc15030e SHA512 82e3e8872e4b9943afff883c3ee420a8850b337914fc0b388171f1331c4cd900778c2263b98ff1705f50f7cd3ffe5868d7f88ec48ab68217471a21573a559479 +AUX 0002-HACK-crucible-Work-around-kernel-memory-fragmentatio_v2.patch 1445 BLAKE2B e1ebe9c50deeaf7eed82c738d172ab332c5048ab192150cc967843ea16f387631ee44c201c43f49c3c0a032a735219f3a08881e5f92fbbf5b85d050eebb1c7f8 SHA512 75655e40084a0f8660773293693d0a214d34c6bb2f861c2e502a4cc5a1576d5c8084b8af87f790155f419affa56886c23eed09532f82c29b2623f553a5c82999 DIST bees-0.10.tar.gz 177509 BLAKE2B 269cf65d5250a07297dfaee6c0fd6bc25199d63fe423d63ce39df8bcdb64d6f8110a0e03d0dc7dc1b105a8886f2a9364da8878481546eaa8dbf3dc46abc569ed SHA512 77a4ae3d66430c2d9dc0351c16c60bad95f21e238fc00f5f5787f55929ba75ee25212ac4bb4a3e4a9419cec27bbcfd2987aa925a54bc2872609b38a698dbedc3 +EBUILD bees-0.10-r1.ebuild 4151 BLAKE2B d0b2ddea9523905f3a5620aa6e0da3c595a405afd34a9ab5488a20e7b1f5c77130d9b56b3856a236004982d6069f213ddacf28a9234f3498cc805b4f9a980f56 SHA512 35d51de04f606c5fe35bd0dd071c58e435398dc304f0520e307974a2436bc358856580f35f1611a8e45b6e1d16b4b67d050308ac61dfb8ea8c60872c616f47cd EBUILD bees-0.10.ebuild 4076 BLAKE2B dad615a8ad7fada7c1cd31a5cffa6fad2cdcbc1cf241cc6e602d927cd9c182289d944663365cbeaa27a2f14f89cd8150e7c7196c19b5bbd4cb2580dae80bc19c SHA512 53a60088a2e078e1dec4899d77961c51976f941ca3952de32ddacdb6c03b4e6350d977f159b7a845ec45901bb4cb77b19ca9aebeec2ef1cc7867740df74adbbb -EBUILD bees-9999.ebuild 4077 BLAKE2B 8208983c244fd03a1c615b485011bb1fefbdffe91b0d1846aec7a13775c9c1da06dd895092f847a9da0ce2e1a88dac10611f0f2a35df1589042e58a70f11b1a4 SHA512 41bc775e23be08cc87fd06da485b1101e3924dca1ab00150e4abbc50bcfc2b892a08bce0560403e9830a70fac9be0ea669f8017c71a78a414ab5cf1f580644e7 +EBUILD bees-9999.ebuild 4151 BLAKE2B d0b2ddea9523905f3a5620aa6e0da3c595a405afd34a9ab5488a20e7b1f5c77130d9b56b3856a236004982d6069f213ddacf28a9234f3498cc805b4f9a980f56 SHA512 35d51de04f606c5fe35bd0dd071c58e435398dc304f0520e307974a2436bc358856580f35f1611a8e45b6e1d16b4b67d050308ac61dfb8ea8c60872c616f47cd MISC metadata.xml 529 BLAKE2B 69ea069e33d1af7c2c38aa7f8fc61516f23c586ad162d9581859829b084c8da3ef76278173e1ac3afa1ef432355ab14f2ecc01d07f039f8447c20cc27b22d633 SHA512 cb9ba7a32c6a8269f7303ebd41bf0e21f4325560b40bba10aff08a05d07170f9f0e35e687e688f6793c0abf994c9b23f90a47b9d32544636f2d6b5ab51140bd3 diff --git a/sys-fs/bees/bees-0.10-r1.ebuild b/sys-fs/bees/bees-0.10-r1.ebuild new file mode 100644 index 000000000000..e1d5da90f548 --- /dev/null +++ b/sys-fs/bees/bees-0.10-r1.ebuild @@ -0,0 +1,112 @@ +# Copyright 1999-2024 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit linux-info systemd toolchain-funcs + +DESCRIPTION="Best-Effort Extent-Same, a btrfs dedup agent" +HOMEPAGE="https://github.com/Zygo/bees" + +if [[ ${PV} == 9999 ]] ; then + inherit git-r3 + EGIT_REPO_URI="https://github.com/Zygo/bees.git" +else + SRC_URI="https://github.com/Zygo/bees/archive/v${PV}.tar.gz -> ${P}.tar.gz" + KEYWORDS="~amd64 ~arm64" +fi + +LICENSE="GPL-3" +SLOT="0" + +DEPEND=" + >=sys-apps/util-linux-2.30.2 + >=sys-fs/btrfs-progs-4.20.2 +" +RDEPEND="${DEPEND}" + +CONFIG_CHECK="~BTRFS_FS" +ERROR_BTRFS_FS="CONFIG_BTRFS_FS: bees does currently only work with btrfs" + +PATCHES=( + "${FILESDIR}/0001-context-demote-abandoned-toxic-match-to-debug-log-le.patch" + "${FILESDIR}/0002-HACK-crucible-Work-around-kernel-memory-fragmentatio_v2.patch" +) + +pkg_pretend() { + if [[ ${MERGE_TYPE} != buildonly ]]; then + if kernel_is -lt 4 11; then + ewarn "With kernel versions below 4.11, bees may severely degrade system performance" + ewarn "and responsiveness. Especially, the kernel may deadlock while bees is" + ewarn "running, it's recommended to run at least kernel 4.11." + ewarn + elif kernel_is -lt 4 14 29; then + ewarn "With kernel versions below 4.14.29, bees may generate a lot of bogus WARN_ON()" + ewarn "messages in the kernel log. These messages can be ignored and this is fixed" + ewarn "with more recent kernels:" + ewarn "# WARNING: CPU: 3 PID: 18172 at fs/btrfs/backref.c:1391 find_parent_nodes+0xc41/0x14e0" + ewarn + elif kernel_is -lt 5 7 0; then + ewarn "With kernel versions below 5.4.96 and 5.7, the kernel may hold file system" + ewarn "locks for a long time while at the same time CPU usage increases when bees is" + ewarn "operating. bees tries to avoid this behavior by excluding very common extents" + ewarn "from deduplication. This has only a minimal impact on dedupe effectiveness." + ewarn + fi + if kernel_is -lt 5 1 0; then + ewarn "IMPORTANT: With kernel versions below 5.1.0, you may experience data corruption" + ewarn "due to bees using compression in btrfs. You are adviced to use a chronologically" + ewarn "later kernel, that includes older LTS versions released after 5.0.4:" + ewarn "Fixed in: 5.1+, 5.0.4+, 4.19.31+, 4.14.108+, 4.9.165+, 4.4.177+, 3.18.137+" + ewarn "# commit 8e92821 btrfs: fix corruption reading shared and compressed extents after hole punching" + ewarn + fi + if kernel_is -lt 5 4 19; then + ewarn "With kernel versions below 5.4.19, bees may trigger a btrfs bug when running" + ewarn "btrfs-balance in parallel. This may lead to meta-data corruption in the worst" + ewarn "case. Especially, kernels 5.1.21 and 5.2.21 should be avoided. Kernels 5.0.x" + ewarn "after 5.0.21 should be safe. In the best case, affected kernels may force" + ewarn "the device RO without writing corrupted meta-data. More details:" + ewarn "https://github.com/Zygo/bees/blob/master/docs/btrfs-kernel.md" + ewarn + fi + if kernel_is -gt 5 15 106; then + if kernel_is -lt 6 3 10; then + ewarn "With kernel versions 5.15.107 or later, there is a memory fragmentation" + ewarn "issue with LOGICAL_INO which can lead to cache thrashing and cause IO" + ewarn "latency spikes. This version ships with a work-around at the cost of not" + ewarn "handling highly duplicated filesystems that well. More details:" + ewarn "https://github.com/Zygo/bees/issues/260" + ewarn + fi + fi + + elog "Bees recommends running the latest current kernel for performance and" + elog "reliability reasons, see README.md." + fi +} + +src_prepare() { + default + sed -i 's/ -Werror//' makeflags || die +} + +src_configure() { + tc-export CC CXX AR + cat >localconf <<-EOF || die + ETC_PREFIX="${EPREFIX}/etc" + LIBEXEC_PREFIX="${EPREFIX}/usr/libexec" + PREFIX="${EPREFIX}/usr" + SYSTEMD_SYSTEM_UNIT_DIR="$(systemd_get_systemunitdir)" + DEFAULT_MAKE_TARGET=all + EOF + if [[ ${PV} != "9999" ]] ; then + echo BEES_VERSION=v${PV} >>localconf || die + fi +} + +src_compile() { + default + # localconf quotes leak in the systemd unit but are still needed for spaces + sed -i 's/"//g' scripts/beesd@.service || die +} diff --git a/sys-fs/bees/bees-9999.ebuild b/sys-fs/bees/bees-9999.ebuild index 1b164eb56b08..e1d5da90f548 100644 --- a/sys-fs/bees/bees-9999.ebuild +++ b/sys-fs/bees/bees-9999.ebuild @@ -1,4 +1,4 @@ -# Copyright 1999-2023 Gentoo Authors +# Copyright 1999-2024 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=8 @@ -18,7 +18,6 @@ fi LICENSE="GPL-3" SLOT="0" -IUSE="" DEPEND=" >=sys-apps/util-linux-2.30.2 @@ -30,7 +29,8 @@ CONFIG_CHECK="~BTRFS_FS" ERROR_BTRFS_FS="CONFIG_BTRFS_FS: bees does currently only work with btrfs" PATCHES=( - "${FILESDIR}/0001-HACK-crucible-Work-around-kernel-memory-fragmentatio.patch" + "${FILESDIR}/0001-context-demote-abandoned-toxic-match-to-debug-log-le.patch" + "${FILESDIR}/0002-HACK-crucible-Work-around-kernel-memory-fragmentatio_v2.patch" ) pkg_pretend() { diff --git a/sys-fs/bees/files/0001-context-demote-abandoned-toxic-match-to-debug-log-le.patch b/sys-fs/bees/files/0001-context-demote-abandoned-toxic-match-to-debug-log-le.patch new file mode 100644 index 000000000000..387ae7f1100c --- /dev/null +++ b/sys-fs/bees/files/0001-context-demote-abandoned-toxic-match-to-debug-log-le.patch @@ -0,0 +1,36 @@ +From fad9230cea8a9970980c36b442b71b864e69ded3 Mon Sep 17 00:00:00 2001 +From: Kai Krakow <kai@kaishome.de> +Date: Sun, 30 Jun 2024 16:27:20 +0200 +Subject: [PATCH 1/2] context: demote "abandoned toxic match" to debug log + level + +This log message creates a overwhelmingly lot of messages in the system +journal, leading to write-back flushing storms under high activity. As +it is a work-around message, it is probably only useful to developers, +thus demote to debug level. + +This fixes latency spikes in desktop usage after adding a lot of new +files, especially since systemd-journal starts to flush caches if it +sees memory pressure. + +Signed-off-by: Kai Krakow <kai@kaishome.de> +--- + src/bees-context.cc | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/bees-context.cc b/src/bees-context.cc +index 09ec152..2251783 100644 +--- a/src/bees-context.cc ++++ b/src/bees-context.cc +@@ -471,7 +471,7 @@ BeesContext::scan_one_extent(const BeesFileRange &bfr, const Extent &e) + + // Hash is toxic + if (found_addr.is_toxic()) { +- BEESLOGWARN("WORKAROUND: abandoned toxic match for hash " << hash << " addr " << found_addr << " matching bbd " << bbd); ++ BEESLOGDEBUG("WORKAROUND: abandoned toxic match for hash " << hash << " addr " << found_addr << " matching bbd " << bbd); + // Don't push these back in because we'll never delete them. + // Extents may become non-toxic so give them a chance to expire. + // hash_table->push_front_hash_addr(hash, found_addr); +-- +2.44.2 + diff --git a/sys-fs/bees/files/0002-HACK-crucible-Work-around-kernel-memory-fragmentatio_v2.patch b/sys-fs/bees/files/0002-HACK-crucible-Work-around-kernel-memory-fragmentatio_v2.patch new file mode 100644 index 000000000000..b62957c05291 --- /dev/null +++ b/sys-fs/bees/files/0002-HACK-crucible-Work-around-kernel-memory-fragmentatio_v2.patch @@ -0,0 +1,43 @@ +From 291574986ccfaff8b620f6baa185a567f2f0cfb5 Mon Sep 17 00:00:00 2001 +From: Kai Krakow <kai@kaishome.de> +Date: Sun, 9 Jul 2023 12:24:40 +0200 +Subject: [PATCH 2/2] HACK: crucible: Work around kernel memory fragmentation + +According to @Zygo: + +> This will drastically reduce the number of reflinks bees can handle +> to a single extent, but that size is beyond more than enough for most +> filesystems. Making the buffer smaller may also reduce the size of +> vmallocs which might be aggravating the kernel's memory manager. + +v2: + +According to @Zygo: + +> Lately I've been running with vm.swappiness=0 and +> BEES_MAX_EXTENT_REF_COUNT set to 9999. With those settings there's no +> swapping at all. + +Link: https://github.com/Zygo/bees/issues/260#issuecomment-1627586574 +Link: https://github.com/Zygo/bees/issues/260#issuecomment-2068287231 +Signed-off-by: Kai Krakow <kai@kaishome.de> +--- + src/bees.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/bees.h b/src/bees.h +index 4dbc005..a3c3872 100644 +--- a/src/bees.h ++++ b/src/bees.h +@@ -96,7 +96,7 @@ const double BEES_TOO_LONG = 5.0; + const double BEES_TOXIC_SYS_DURATION = 0.1; + + // Maximum number of refs to a single extent +-const size_t BEES_MAX_EXTENT_REF_COUNT = (16 * 1024 * 1024 / 24) - 1; ++const size_t BEES_MAX_EXTENT_REF_COUNT = (10000) - 1; + + // How long between hash table histograms + const double BEES_HASH_TABLE_ANALYZE_INTERVAL = BEES_STATS_INTERVAL; +-- +2.44.2 + diff --git a/sys-fs/btrfs-progs/Manifest b/sys-fs/btrfs-progs/Manifest index b5b169d89e5a..c2d152145eae 100644 --- a/sys-fs/btrfs-progs/Manifest +++ b/sys-fs/btrfs-progs/Manifest @@ -15,7 +15,7 @@ EBUILD btrfs-progs-6.7.1.ebuild 4599 BLAKE2B 79fd7e385b4ebffb59d0b919cfba4603984 EBUILD btrfs-progs-6.8.1-r1.ebuild 4403 BLAKE2B dc5b353b713a59e467da06ddb7b0c1e7a67d95d3b4b0f3438e148570d63e82aa87416da77a11264ab8602b9e5278ed4e3e355d0dc8cbde947f3511f5e1a0ce1f SHA512 b68e3aee56f709ef9e529c2b0ac1ec31d11cbed51ce16b9c4cd8470d358acf2f36995a3047fef697e920dbf601335635d4016720289417a70e10f3958b757472 EBUILD btrfs-progs-6.8.1.ebuild 4599 BLAKE2B 2fdbb02df514a9c78b34e6b7df55d266b222b60515ba463e8cdaa4b2dcb5d06c68752218691ff2182b6468edcecd735c3ec39433633de1fd52bc80ac8610bd22 SHA512 8705968998ae1f454051d1dabe7c392311d61d81fb93217e3cc2f39913bbe56cbcbd7de75d452aadde14e905c371f3d543cb9673de34544776fe685dfa9a65ac EBUILD btrfs-progs-6.9.1.ebuild 4171 BLAKE2B c74e04d0dbf096e372c2a2b634a16f517f2f035c4301e7c88fac0258a295084774b786638ee3f7a90f24deac91dd1cf789fb245ffc115c1d9fa5469cdf722612 SHA512 7c758a53937991f46988263f182017fe462cdb3ca9e77679dc0fed499bb48c53e5a06292c0c397cb1c779772974e88e04cfc10e022de8770e313b2ec3c37c770 -EBUILD btrfs-progs-6.9.2.ebuild 4206 BLAKE2B 60f5b210c693151a4bb537c35d2a410fbd57bbebb1c4888fb19e23b47b3a681ac3664b983eb32f3b69c1729a28e5e1c48117fc4406bcb650c075c24d6582b458 SHA512 4dd6664784cd3b203d0c210002aa7604b9b3658b1aa2ef3b427da12fdf197b2a0409cf26f274d3060c0a34e77e94eb1e4ad41f8058538c0e1051e9d7d432429c +EBUILD btrfs-progs-6.9.2.ebuild 4299 BLAKE2B 773e16ebdd7e86cbda20e75cb3fde2d0084617f94b1b5fc5fb05bd1be36b880b00b64e1264e1f8cb02d5cac607b626e54c124c582e1d2e1b261f9dfda5116a4e SHA512 6548774675c54c3e1c8261d48f6c01e0f5878f0c0da12bf1318aa37cc5d1b137fda0f7cf40672b2da014b63cc99eed18cdbebefe52efefc70db48f49bc901991 EBUILD btrfs-progs-6.9.ebuild 4170 BLAKE2B 6c2ba7f6bc8ea09f62a8f6b5ada660c8c34fd9e1f861a52049be46dc9961edde57c33b5375fd50a3cfe1f7e314af7efa01ddf144c12686542f788fdd9c6fd660 SHA512 af2cf5d1996c4e3637c313fd0731d8427d3455869758a346742d8781d704290fa2ffd8cc009fb70e0cfdbaf1a266f1eb5e55acb13093ea5d23fdcc55c70ac890 EBUILD btrfs-progs-9999.ebuild 4212 BLAKE2B b48e34dac023dd14ed224087c24b34ba8d2ae10a6b52f291c6a5a1f2ecbba9479d818860c5bce98f0ef3de98cba154e8ec0e6b0a4689daa314686e0309cb79a6 SHA512 e8454b129d5af4a32705cba283cc79de0dcf804ff73db6069294601887eeb28dcdf0b9e7151fcfb34fe52487625e29bed97e69943b6207e2a9cc86ab8981e5a3 -MISC metadata.xml 610 BLAKE2B 70361c4d5434a98f73a3d38ed47d7be830783529db6217396f2235cdedd58744fc6e52e4de1994d28184fe9d8aa5d2982c433d47eda1868cfdb79edf0769a620 SHA512 8958c02574adb1395a9d21d9e9ad5db38570b82a1c7211752eb007eecbd0e541e880a060649641f40be877f167e14f278f14d5ef8775766ef9a6fa5d3843dc53 +MISC metadata.xml 744 BLAKE2B 6c23644af7f970c93a3c3bd1fd1bf82e5290832afac427bec1da93bfd2694799f779bdce3f51742a171218d6e29460a4986452426ab2239ad8ab6627dc45b81d SHA512 06df1d728d39b92384bdd026d0339a494ce1fe3966376a413a80f8dd85bedd5e5d843db9cdd60a9ab29857b79d5a24de24de2330aab70916a0e57acfc01a2e5d diff --git a/sys-fs/btrfs-progs/btrfs-progs-6.9.2.ebuild b/sys-fs/btrfs-progs/btrfs-progs-6.9.2.ebuild index 0fe0ac94b99c..432b2b58e34d 100644 --- a/sys-fs/btrfs-progs/btrfs-progs-6.9.2.ebuild +++ b/sys-fs/btrfs-progs/btrfs-progs-6.9.2.ebuild @@ -35,7 +35,7 @@ HOMEPAGE="https://btrfs.readthedocs.io/en/latest/" LICENSE="GPL-2" SLOT="0/0" # libbtrfs soname -IUSE="+convert +man reiserfs static static-libs udev +zstd" +IUSE="+convert +man experimental reiserfs static static-libs udev +zstd" # Could support it with just !systemd => eudev, see mdadm, but let's # see if someone asks for it first. REQUIRED_USE="static? ( !udev )" @@ -131,7 +131,7 @@ src_configure() { --bindir="${EPREFIX}"/sbin --enable-lzo - --disable-experimental + $(use_enable experimental) --disable-python $(use_enable convert) $(use_enable man documentation) @@ -171,6 +171,11 @@ src_install() { emake V=1 DESTDIR="${D}" install "${makeargs[@]}" + if use experimental; then + exeinto /sbin + doexe btrfs-corrupt-block + fi + newbashcomp btrfs-completion btrfs } diff --git a/sys-fs/btrfs-progs/metadata.xml b/sys-fs/btrfs-progs/metadata.xml index e0d9388ce73c..9bd0c43c582b 100644 --- a/sys-fs/btrfs-progs/metadata.xml +++ b/sys-fs/btrfs-progs/metadata.xml @@ -7,6 +7,7 @@ </maintainer> <use> <flag name="convert">Build ext2 conversion utility (btrfs-convert)</flag> + <flag name="experimental">Enable unstable and experimental features and install btrfs-corrupt-block, as needed by xfstests</flag> <flag name="reiserfs">Enable reiserfs support in btrfs-convert tool.</flag> <flag name="static">Build static binaries in addition to the dynamic ones</flag> </use> |