Skip to content

Commit d512f62

Browse files
committed
crimson/os/seastore/transaction_manager: adjust do_with for pin_list in get_extents_if_live
To make pin_list alive during parallel_for_each(). Signed-off-by: Yingxin Cheng <[email protected]>
1 parent 19581dd commit d512f62

File tree

1 file changed

+10
-9
lines changed

1 file changed

+10
-9
lines changed

src/crimson/os/seastore/transaction_manager.cc

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -746,14 +746,15 @@ TransactionManager::get_extents_if_live(
746746
).si_then([=, this, &t](lba_pin_list_t pin_list) {
747747
return seastar::do_with(
748748
std::list<CachedExtentRef>(),
749-
[=, this, &t, pin_list=std::move(pin_list)](
750-
std::list<CachedExtentRef> &list) mutable
749+
std::move(pin_list),
750+
[=, this, &t]
751+
(std::list<CachedExtentRef> &extent_list, auto& pin_list)
751752
{
752753
auto paddr_seg_id = paddr.as_seg_paddr().get_segment_id();
753754
return trans_intr::parallel_for_each(
754755
pin_list,
755-
[=, this, &list, &t](
756-
LBAMappingRef &pin) -> Cache::get_extent_iertr::future<>
756+
[=, this, &extent_list, &t](
757+
LBAMappingRef& pin) -> Cache::get_extent_iertr::future<>
757758
{
758759
auto pin_paddr = pin->get_val();
759760
auto &pin_seg_paddr = pin_paddr.as_seg_paddr();
@@ -779,16 +780,16 @@ TransactionManager::get_extents_if_live(
779780
// ceph_assert(pin_seg_paddr >= paddr &&
780781
// pin_seg_paddr.add_offset(pin_len) <= paddr.add_offset(len));
781782
return read_pin_by_type(t, std::move(pin), type
782-
).si_then([&list](auto ret) {
783-
list.emplace_back(std::move(ret));
783+
).si_then([&extent_list](auto ret) {
784+
extent_list.emplace_back(std::move(ret));
784785
return seastar::now();
785786
});
786-
}).si_then([&list, &t, FNAME, type, laddr, len, paddr] {
787+
}).si_then([&extent_list, &t, FNAME, type, laddr, len, paddr] {
787788
DEBUGT("{} {}~0x{:x} {} is alive as {} extents",
788-
t, type, laddr, len, paddr, list.size());
789+
t, type, laddr, len, paddr, extent_list.size());
789790
return get_extents_if_live_ret(
790791
interruptible::ready_future_marker{},
791-
std::move(list));
792+
std::move(extent_list));
792793
});
793794
});
794795
}).handle_error_interruptible(crimson::ct_error::enoent::handle([] {

0 commit comments

Comments
 (0)