From: Yingxin Cheng Date: Thu, 11 Aug 2022 05:54:48 +0000 (+0800) Subject: crimson/os/seastore/async_cleaner: use weak transaction to get backref mappings X-Git-Tag: v18.0.0~247^2~7 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=d041427a6c42fcd9949d59ecf30b59e567311daf;p=ceph-ci.git crimson/os/seastore/async_cleaner: use weak transaction to get backref mappings Signed-off-by: Yingxin Cheng --- diff --git a/src/crimson/os/seastore/async_cleaner.cc b/src/crimson/os/seastore/async_cleaner.cc index 70e590ec240..70e83bb4f88 100644 --- a/src/crimson/os/seastore/async_cleaner.cc +++ b/src/crimson/os/seastore/async_cleaner.cc @@ -905,23 +905,14 @@ AsyncCleaner::retrieve_backref_mappings( paddr_t start_paddr, paddr_t end_paddr) { - return seastar::do_with( - backref_pin_list_t(), - [this, start_paddr, end_paddr](auto &pin_list) { - return repeat_eagain([this, start_paddr, end_paddr, &pin_list] { - return ecb->with_transaction_intr( - Transaction::src_t::READ, - "get_backref_mappings", - [this, start_paddr, end_paddr](auto &t) { - return backref_manager.get_mappings( - t, start_paddr, end_paddr - ); - }).safe_then([&pin_list](auto&& list) { - pin_list = std::move(list); - }); - }).safe_then([&pin_list] { - return seastar::make_ready_future(std::move(pin_list)); - }); + // Backref-tree doesn't support tree-read during tree-updates with parallel + // transactions. So, concurrent transactions between trim and reclaim are + // not allowed right now. + return ecb->with_transaction_weak( + "backref_get_mappings", + [this, start_paddr, end_paddr](auto &t) { + return backref_manager.get_mappings( + t, start_paddr, end_paddr); }); }