From 403a0c2c9c67d31814f44f9ba01ace71c0e93976 Mon Sep 17 00:00:00 2001 From: Samuel Just Date: Tue, 28 May 2024 13:37:56 -0700 Subject: [PATCH] crimson/.../snaptrim_event: remove remaining SnapTrimEvent pipeline stages SnapTrimEvent doesn't actually do or block on GetOBC or Process -- remove those stages entirely. Entering Process, in particular, causes problems unless we immediately leave it as SnapTrimObjSubEvent needs to enter and leave it to complete. Entering one of the stages removed in a prior commit had a side effect of exiting Process -- without that exit SnapTrimEvent and SnapTrimObjSubEvent mutually block preventing snap trim or client io from making progress. This leaves no actual pipeline stages on SnapTrimEvent, which makes sense as only SnapTrimObjSubEvent actually does IO. Signed-off-by: Samuel Just --- src/crimson/osd/osd_operations/snaptrim_event.cc | 14 -------------- src/crimson/osd/osd_operations/snaptrim_event.h | 2 -- 2 files changed, 16 deletions(-) diff --git a/src/crimson/osd/osd_operations/snaptrim_event.cc b/src/crimson/osd/osd_operations/snaptrim_event.cc index 561d0a7cd92..185af88c115 100644 --- a/src/crimson/osd/osd_operations/snaptrim_event.cc +++ b/src/crimson/osd/osd_operations/snaptrim_event.cc @@ -67,26 +67,15 @@ SnapTrimEvent::start() { ceph_assert(pg->is_active_clean()); - auto exit_handle = seastar::defer([this] { - logger().debug("{}: exit", *this); - handle.exit(); - }); - /* TODO: add a way to expose progress via the optracker without misusing * pipeline stages. https://tracker.ceph.com/issues/66473 */ ShardServices &shard_services = pg->get_shard_services(); - co_await enter_stage( - client_pp().get_obc); - { co_await pg->background_process_lock.lock_with_op(*this); auto unlocker = seastar::defer([this] { pg->background_process_lock.unlock(); }); - co_await enter_stage( - client_pp().process); - auto to_trim_fut = interruptor::async([this] { using crimson::common::local_conf; const auto max = @@ -135,9 +124,6 @@ SnapTrimEvent::start() std::chrono::milliseconds(std::lround(time_to_sleep * 1000)))); } - logger().debug("{}: completed", *this); - co_await interruptor::make_interruptible(handle.complete()); - logger().debug("{}: all completed", *this); co_return seastar::stop_iteration::no; } diff --git a/src/crimson/osd/osd_operations/snaptrim_event.h b/src/crimson/osd/osd_operations/snaptrim_event.h index f389943b833..c516769114e 100644 --- a/src/crimson/osd/osd_operations/snaptrim_event.h +++ b/src/crimson/osd/osd_operations/snaptrim_event.h @@ -72,8 +72,6 @@ public: std::tuple< StartEvent, - CommonPGPipeline::GetOBC::BlockingEvent, - CommonPGPipeline::Process::BlockingEvent, PG::BackgroundProcessLock::Wait::BlockingEvent, CompletionEvent > tracking_events; -- 2.39.5