From 2a61d4f58119dbc7ab3d3bed4215752fc132ce0f Mon Sep 17 00:00:00 2001 From: Matan Breizman Date: Tue, 20 Aug 2024 13:08:35 +0000 Subject: [PATCH] crimson/osd/pg: make use of SnapMapper::update_snap_map Signed-off-by: Matan Breizman --- src/crimson/osd/pg.cc | 56 +++++++++---------------------------------- 1 file changed, 11 insertions(+), 45 deletions(-) diff --git a/src/crimson/osd/pg.cc b/src/crimson/osd/pg.cc index cd362a0c9f0..47f58ac81ad 100644 --- a/src/crimson/osd/pg.cc +++ b/src/crimson/osd/pg.cc @@ -1493,48 +1493,18 @@ PG::interruptible_future<> PG::update_snap_map( ObjectStore::Transaction& t) { LOG_PREFIX(PG::update_snap_map); - for (auto i = log_entries.cbegin(); i != log_entries.cend(); ++i) { - OSDriver::OSTransaction _t(osdriver.get_transaction(&t)); - if (i->soid.snap < CEPH_MAXSNAP) { - if (i->is_delete()) { - co_await OpsExecuter::snap_map_remove( - i->soid, - snap_mapper, - osdriver, - t); - } else if (i->is_update()) { - ceph_assert(i->snaps.length() > 0); - vector snaps; - bufferlist snapbl = i->snaps; - auto p = snapbl.cbegin(); - try { - decode(snaps, p); - } catch (...) { - ERRORDPP("Failed to decode snaps on {}", *this, *i); - snaps.clear(); - } - set _snaps(snaps.begin(), snaps.end()); - - if (i->is_clone() || i->is_promote()) { - co_await OpsExecuter::snap_map_clone( - i->soid, - _snaps, - snap_mapper, - osdriver, - t); - } else if (i->is_modify()) { - co_await OpsExecuter::snap_map_modify( - i->soid, - _snaps, - snap_mapper, - osdriver, - t); - } else { - ceph_assert(i->is_clean()); - } - } + DEBUGDPP("", *this); + return interruptor::do_for_each( + log_entries, + [this, &t](const auto& entry) mutable { + if (entry.soid.snap < CEPH_MAXSNAP) { + return interruptor::async( + [this, entry, _t=osdriver.get_transaction(&t)]() mutable { + snap_mapper.update_snap_map(entry, &_t); + }); } - } + return interruptor::now(); + }); } void PG::log_operation( @@ -1556,10 +1526,6 @@ void PG::log_operation( * handles these cases. */ #if 0 - if (transaction_applied) { - //TODO: - //update_snap_map(logv, t); - } auto last = logv.rbegin(); if (is_primary() && last != logv.rend()) { projected_log.skip_can_rollback_to_to_head(); -- 2.39.5