]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
osd/PG: make use of SnapMapper::update_snap_map 59706/head
authorMatan Breizman <mbreizma@redhat.com>
Tue, 10 Sep 2024 12:09:24 +0000 (12:09 +0000)
committerMatan Breizman <mbreizma@redhat.com>
Wed, 11 Sep 2024 11:11:12 +0000 (11:11 +0000)
https://github.com/ceph/ceph/pull/58868 introduced
SnapMapper::update_snap_map to be used both by
Crimson and Classic.
No change in behavior.

Signed-off-by: Matan Breizman <mbreizma@redhat.com>
src/osd/PG.cc

index f7a5033574f7672404561e8dc99ab3f3d12a868d..ee14f650e53368d3bd69269172dca81a0466cf65 100644 (file)
@@ -1137,46 +1137,10 @@ void PG::update_snap_map(
   const vector<pg_log_entry_t> &log_entries,
   ObjectStore::Transaction &t)
 {
-  for (auto i = log_entries.cbegin(); i != log_entries.cend(); ++i) {
+  for (const auto& entry : log_entries) {
     OSDriver::OSTransaction _t(osdriver.get_transaction(&t));
-    if (i->soid.snap < CEPH_MAXSNAP) {
-      if (i->is_delete()) {
-       int r = snap_mapper.remove_oid(
-         i->soid,
-         &_t);
-       if (r)
-         derr << __func__ << " remove_oid " << i->soid << " failed with " << r << dendl;
-        // On removal tolerate missing key corruption
-        ceph_assert(r == 0 || r == -ENOENT);
-      } else if (i->is_update()) {
-       ceph_assert(i->snaps.length() > 0);
-       vector<snapid_t> snaps;
-       bufferlist snapbl = i->snaps;
-       auto p = snapbl.cbegin();
-       try {
-         decode(snaps, p);
-       } catch (...) {
-         derr << __func__ << " decode snaps failure on " << *i << dendl;
-         snaps.clear();
-       }
-       set<snapid_t> _snaps(snaps.begin(), snaps.end());
-
-       if (i->is_clone() || i->is_promote()) {
-         snap_mapper.add_oid(
-           i->soid,
-           _snaps,
-           &_t);
-       } else if (i->is_modify()) {
-         int r = snap_mapper.update_snaps(
-           i->soid,
-           _snaps,
-           0,
-           &_t);
-         ceph_assert(r == 0);
-       } else {
-         ceph_assert(i->is_clean());
-       }
-      }
+    if (entry.soid.snap < CEPH_MAXSNAP) {
+      snap_mapper.update_snap_map(entry, &_t);
     }
   }
 }