From 75131f396f730a1163e91c0530f1fc745ef9e5a4 Mon Sep 17 00:00:00 2001 From: Zygo Blaxell Date: Mon, 17 Jul 2023 17:49:21 -0400 Subject: [PATCH] context: reduce the size of LOGICAL_INO buffers Since we'll never process more than BEES_MAX_EXTENT_REF_COUNT extent references by definition, it follows that we should not allocate buffer space for them when we perform the LOGICAL_INO ioctl. There is some evidence (particularly https://github.com/Zygo/bees/issues/260#issuecomment-1627598058) that the kernel is subjecting the page cache to a lot of disruption when trying allocate large buffers for LOGICAL_INO. Signed-off-by: Zygo Blaxell --- src/bees-context.cc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/bees-context.cc b/src/bees-context.cc index 36cccc9c..09ec1521 100644 --- a/src/bees-context.cc +++ b/src/bees-context.cc @@ -925,7 +925,8 @@ BeesContext::start() return make_shared(shared_from_this()); }); m_logical_ino_pool.generator([]() { - return make_shared(0); + const auto extent_ref_size = sizeof(uint64_t) * 3; + return make_shared(0, BEES_MAX_EXTENT_REF_COUNT * extent_ref_size + sizeof(btrfs_data_container)); }); m_tmpfile_pool.checkin([](const shared_ptr &btf) { catch_all([&](){