]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
crimson/osd: SnapMapper::record_purged_snaps() takes abstratced store and txn
authorRadoslaw Zarzynski <rzarzyns@redhat.com>
Fri, 18 Nov 2022 17:47:16 +0000 (17:47 +0000)
committerRadoslaw Zarzynski <rzarzyns@redhat.com>
Tue, 28 Feb 2023 16:22:04 +0000 (16:22 +0000)
Signed-off-by: Radoslaw Zarzynski <rzarzyns@redhat.com>
src/osd/OSD.cc
src/osd/SnapMapper.cc
src/osd/SnapMapper.h

index 33939305e134bc78cc4dc1c12a42b606e5567661..7ab35bf0e080b1d02c7f639b0bf6b91aceb37a38 100644 (file)
@@ -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 "
index 515c50e1fb5354c529f99531188bf1bd215c4802..45cc3a3c71af18d67bd7eadb624c8cea2eb7a0fb 100644 (file)
@@ -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<epoch_t,mempool::osdmap::map<int64_t,snap_interval_set_t>> purged_snaps)
 {
   dout(10) << __func__ << " purged_snaps " << purged_snaps << dendl;
-  OSDriver backend(store, ch, hoid);
   map<string,ceph::buffer::list> m;
   set<string> 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()
index b83dda1275624592407ef7942e64ddfd32ef3889..dcc9dc1ecf07284a9e4017c0f65e09b1fd087d6d 100644 (file)
@@ -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<epoch_t,mempool::osdmap::map<int64_t,snap_interval_set_t>> purged_snaps);
   static void scrub_purged_snaps(
     CephContext *cct,