1
0
mirror of https://github.com/Zygo/bees.git synced 2025-08-02 22:03:29 +02:00

3 Commits
v0.9 ... v0.9.2

Author SHA1 Message Date
Zygo Blaxell
299509ce32 seeker: fix the test for ILP32 platforms
Not sure what I was thinking, but the argument here should clearly
be uint64_t.

Fixes: https://github.com/Zygo/bees/issues/248
Signed-off-by: Zygo Blaxell <bees@furryterror.org>
2023-02-20 11:30:56 -05:00
Zygo Blaxell
d5a99c2f5e roots: don't share a RootFetcher between threads
If the send workaround is enabled, it is possible for two threads (a
thread running the crawl_new task, and a thread attempting to apply the
send workaround) to access the same RootFetcher object at the same time.
That never ends well.

Give each function its own BtrfsRootFetcher object.

Fixes: https://github.com/Zygo/bees/issues/250
Signed-off-by: Zygo Blaxell <bees@furryterror.org>
2023-02-20 11:14:34 -05:00
Kai Krakow
fd6c3b3769 Makefile: also drop fiemap and fiewalk from main Makefile
Fixes: ccd8dcd43f
Signed-off-by: Kai Krakow <kai@kaishome.de>
2023-01-28 11:21:51 +01:00
4 changed files with 7 additions and 12 deletions

View File

@@ -49,11 +49,6 @@ scripts/%: scripts/%.in
scripts: scripts/beesd scripts/beesd@.service
install_tools: ## Install support tools + libs
install_tools: src
install -Dm755 bin/fiemap $(DESTDIR)$(PREFIX)/bin/fiemap
install -Dm755 bin/fiewalk $(DESTDIR)$(PREFIX)/sbin/fiewalk
install_bees: ## Install bees + libs
install_bees: src $(RUN_INSTALL_TESTS)
install -Dm755 bin/bees $(DESTDIR)$(LIBEXEC_PREFIX)/bees
@@ -67,7 +62,7 @@ ifneq ($(SYSTEMD_SYSTEM_UNIT_DIR),)
endif
install: ## Install distribution
install: install_bees install_scripts $(OPTIONAL_INSTALL_TARGETS)
install: install_bees install_scripts
help: ## Show help
@fgrep -h "##" $(MAKEFILE_LIST) | fgrep -v fgrep | sed -e 's/\\$$//' | sed -e 's/##/\t/'

View File

@@ -500,7 +500,8 @@ BeesRoots::transid_max_nocache()
// We look for the root of the extent tree and read its transid.
// Should run in O(1) time and be fairly reliable.
const auto bti = m_root_fetcher.root(BTRFS_EXTENT_TREE_OBJECTID);
BtrfsRootFetcher root_fetcher(m_ctx->root_fd());
const auto bti = root_fetcher.root(BTRFS_EXTENT_TREE_OBJECTID);
BEESTRACE("extracting transid from " << bti);
const auto rv = bti.transid();
@@ -927,7 +928,6 @@ BeesRoots::state_load()
BeesRoots::BeesRoots(shared_ptr<BeesContext> ctx) :
m_ctx(ctx),
m_root_fetcher(ctx->root_fd()),
m_crawl_state_file(ctx->home_fd(), crawl_state_filename()),
m_crawl_thread("crawl_transid"),
m_writeback_thread("crawl_writeback")
@@ -1101,7 +1101,8 @@ BeesRoots::is_root_ro(uint64_t root)
BEESTRACE("checking subvol flags on root " << root);
const auto item = m_root_fetcher.root(root);
BtrfsRootFetcher root_fetcher(m_ctx->root_fd());
const auto item = root_fetcher.root(root);
// If we can't access the subvol's root item...guess it's ro?
if (!item || item.root_flags() & BTRFS_ROOT_SUBVOL_RDONLY) {
return true;

View File

@@ -534,7 +534,6 @@ class BeesScanMode;
class BeesRoots : public enable_shared_from_this<BeesRoots> {
shared_ptr<BeesContext> m_ctx;
BtrfsRootFetcher m_root_fetcher;
BeesStringFile m_crawl_state_file;
map<uint64_t, shared_ptr<BeesCrawl>> m_root_crawl_map;
mutex m_mutex;

View File

@@ -28,7 +28,7 @@ static bool test_fails = false;
static
void
seeker_test(const vector<uint64_t> &vec, size_t target)
seeker_test(const vector<uint64_t> &vec, uint64_t const target)
{
cerr << "Find " << target << " in {";
for (auto i : vec) {
@@ -42,7 +42,7 @@ seeker_test(const vector<uint64_t> &vec, size_t target)
return seeker_finder(vec, lower, upper);
});
cerr << found;
size_t my_found = 0;
uint64_t my_found = 0;
for (auto i : vec) {
if (i <= target) {
my_found = i;