From: Radoslaw Zarzynski Date: Fri, 18 Nov 2022 17:47:16 +0000 (+0000) Subject: crimson/osd: SnapMapper::record_purged_snaps() takes abstratced store and txn X-Git-Tag: v18.1.0~260^2~36 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=742cb2efb1e8913ac4b5aa3b037c7ecca651c81d;p=ceph.git crimson/osd: SnapMapper::record_purged_snaps() takes abstratced store and txn Signed-off-by: Radoslaw Zarzynski --- diff --git a/src/osd/OSD.cc b/src/osd/OSD.cc index 33939305e134b..7ab35bf0e080b 100644 --- a/src/osd/OSD.cc +++ b/src/osd/OSD.cc @@ -6650,10 +6650,14 @@ void OSD::handle_get_purged_snaps_reply(MMonGetPurgedSnapsReply *m) if (!is_preboot() || m->last < superblock.purged_snaps_last) { goto out; + } else { + OSDriver osdriver{store.get(), service.meta_ch, make_purged_snaps_oid()}; + SnapMapper::record_purged_snaps( + cct, + osdriver, + osdriver.get_transaction(&t), + m->purged_snaps); } - SnapMapper::record_purged_snaps(cct, store.get(), service.meta_ch, - make_purged_snaps_oid(), &t, - m->purged_snaps); superblock.purged_snaps_last = m->last; write_superblock(t); store->queue_transaction( @@ -8186,9 +8190,12 @@ void OSD::handle_osd_map(MOSDMap *m) // record new purged_snaps if (superblock.purged_snaps_last == start - 1) { - SnapMapper::record_purged_snaps(cct, store.get(), service.meta_ch, - make_purged_snaps_oid(), &t, - purged_snaps); + OSDriver osdriver{store.get(), service.meta_ch, make_purged_snaps_oid()}; + SnapMapper::record_purged_snaps( + cct, + osdriver, + osdriver.get_transaction(&t), + purged_snaps); superblock.purged_snaps_last = last; } else { dout(10) << __func__ << " superblock purged_snaps_last is " diff --git a/src/osd/SnapMapper.cc b/src/osd/SnapMapper.cc index 515c50e1fb535..45cc3a3c71af1 100644 --- a/src/osd/SnapMapper.cc +++ b/src/osd/SnapMapper.cc @@ -618,14 +618,11 @@ int SnapMapper::_lookup_purged_snap( void SnapMapper::record_purged_snaps( CephContext *cct, - ObjectStore *store, - ObjectStore::CollectionHandle& ch, - ghobject_t hoid, - ObjectStore::Transaction *t, + OSDriver& backend, + OSDriver::OSTransaction&& txn, map> purged_snaps) { dout(10) << __func__ << " purged_snaps " << purged_snaps << dendl; - OSDriver backend(store, ch, hoid); map m; set rm; for (auto& [epoch, bypool] : purged_snaps) { @@ -668,7 +665,6 @@ void SnapMapper::record_purged_snaps( } } } - auto txn = backend.get_transaction(t); txn.remove_keys(rm); txn.set_keys(m); dout(10) << __func__ << " rm " << rm.size() << " keys, set " << m.size() diff --git a/src/osd/SnapMapper.h b/src/osd/SnapMapper.h index b83dda1275624..dcc9dc1ecf072 100644 --- a/src/osd/SnapMapper.h +++ b/src/osd/SnapMapper.h @@ -197,10 +197,8 @@ public: static void record_purged_snaps( CephContext *cct, - ObjectStore *store, - ObjectStore::CollectionHandle& ch, - ghobject_t hoid, - ObjectStore::Transaction *t, + OSDriver& backend, + OSDriver::OSTransaction&& txn, std::map> purged_snaps); static void scrub_purged_snaps( CephContext *cct,