diff --git a/src/bees-roots.cc b/src/bees-roots.cc index 7b9c5cd..cf471fa 100644 --- a/src/bees-roots.cc +++ b/src/bees-roots.cc @@ -392,15 +392,22 @@ BeesRoots::crawl_thread() m_crawl_task = Task("crawl_master", [shared_this]() { auto tqs = TaskMaster::get_queue_count(); BEESNOTE("queueing extents to scan, " << tqs << " of " << BEES_MAX_QUEUE_SIZE); +#if 0 bool run_again = true; while (tqs < BEES_MAX_QUEUE_SIZE && run_again) { run_again = shared_this->crawl_roots(); tqs = TaskMaster::get_queue_count(); } +#else + bool run_again = false; + while (tqs < BEES_MAX_QUEUE_SIZE) { + run_again = shared_this->crawl_roots(); + tqs = TaskMaster::get_queue_count(); + if (!run_again) break; + } +#endif if (run_again) { shared_this->m_crawl_task.run(); - } else { - shared_this->m_task_running = false; } }); @@ -429,12 +436,7 @@ BeesRoots::crawl_thread() last_count = new_count; // If no crawl task is running, start a new one - bool already_running = m_task_running.exchange(true); - if (!already_running) { - auto resumed_after_time = m_crawl_timer.lap(); - BEESLOGINFO("Crawl master resumed after " << resumed_after_time << "s at transid " << new_count); - m_crawl_task.run(); - } + m_crawl_task.run(); auto poll_time = m_transid_re.seconds_for(m_transid_factor); BEESLOGDEBUG("Polling " << poll_time << "s for next " << m_transid_factor << " transid " << m_transid_re); @@ -554,8 +556,7 @@ BeesRoots::BeesRoots(shared_ptr ctx) : m_ctx(ctx), m_crawl_state_file(ctx->home_fd(), crawl_state_filename()), m_crawl_thread("crawl_transid"), - m_writeback_thread("crawl_writeback"), - m_task_running(false) + m_writeback_thread("crawl_writeback") { m_root_ro_cache.func([&](uint64_t root) -> bool { diff --git a/src/bees.h b/src/bees.h index 1f9ade2..2b0260a 100644 --- a/src/bees.h +++ b/src/bees.h @@ -525,7 +525,6 @@ class BeesRoots : public enable_shared_from_this { BeesThread m_writeback_thread; RateEstimator m_transid_re; size_t m_transid_factor = BEES_TRANSID_FACTOR; - atomic m_task_running; Task m_crawl_task; bool m_workaround_btrfs_send = false; LRUCache m_root_ro_cache;