]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
osd/PG: drop pre-mimic snap_trimq code
authorSage Weil <sage@redhat.com>
Tue, 4 Jun 2019 19:26:45 +0000 (14:26 -0500)
committerSage Weil <sage@redhat.com>
Tue, 2 Jul 2019 13:37:48 +0000 (08:37 -0500)
This is no longer needed for octopus.

Signed-off-by: Sage Weil <sage@redhat.com>
src/osd/PG.cc

index 8b462b68e009636f9e52ebaa5510b56a4e643285..dd5664a3d5ae0e8a13655f9340222f88096de355 100644 (file)
@@ -1607,81 +1607,65 @@ void PG::on_active_exit()
 
 void PG::on_active_advmap(const OSDMapRef &osdmap)
 {
-  if (osdmap->require_osd_release >= ceph_release_t::mimic) {
-    const auto& new_removed_snaps = osdmap->get_new_removed_snaps();
-    auto i = new_removed_snaps.find(get_pgid().pool());
-    if (i != new_removed_snaps.end()) {
-      bool bad = false;
-      for (auto j : i->second) {
-       if (snap_trimq.intersects(j.first, j.second)) {
-         decltype(snap_trimq) added, overlap;
-         added.insert(j.first, j.second);
-         overlap.intersection_of(snap_trimq, added);
-         if (recovery_state.get_last_require_osd_release() < ceph_release_t::mimic) {
-           derr << __func__ << " removed_snaps already contains "
-                << overlap << ", but this is the first mimic+ osdmap,"
-                << " so it's expected" << dendl;
-         } else {
-           derr << __func__ << " removed_snaps already contains "
-                << overlap << dendl;
-           bad = true;
-         }
-         snap_trimq.union_of(added);
-       } else {
-         snap_trimq.insert(j.first, j.second);
-       }
-      }
-      if (recovery_state.get_last_require_osd_release() < ceph_release_t::mimic) {
-       // at upgrade, we report *all* previously removed snaps as removed in
-       // the first mimic epoch.  remove the ones we previously divined were
-       // removed (and subsequently purged) from the trimq.
-       derr << __func__ << " first mimic map, filtering purged_snaps"
-            << " from new removed_snaps" << dendl;
-       snap_trimq.subtract(recovery_state.get_info().purged_snaps);
+  const auto& new_removed_snaps = osdmap->get_new_removed_snaps();
+  auto i = new_removed_snaps.find(get_pgid().pool());
+  if (i != new_removed_snaps.end()) {
+    bool bad = false;
+    for (auto j : i->second) {
+      if (snap_trimq.intersects(j.first, j.second)) {
+       decltype(snap_trimq) added, overlap;
+       added.insert(j.first, j.second);
+       overlap.intersection_of(snap_trimq, added);
+       derr << __func__ << " removed_snaps already contains "
+            << overlap << dendl;
+       bad = true;
+       snap_trimq.union_of(added);
+      } else {
+       snap_trimq.insert(j.first, j.second);
       }
-      dout(10) << __func__ << " new removed_snaps " << i->second
-              << ", snap_trimq now " << snap_trimq << dendl;
-      ceph_assert(!bad || !cct->_conf->osd_debug_verify_cached_snaps);
     }
-
-    const auto& new_purged_snaps = osdmap->get_new_purged_snaps();
-    auto j = new_purged_snaps.find(get_pgid().pgid.pool());
-    if (j != new_purged_snaps.end()) {
-      bool bad = false;
-      for (auto k : j->second) {
-       if (!recovery_state.get_info().purged_snaps.contains(k.first, k.second)) {
-         interval_set<snapid_t> rm, overlap;
-         rm.insert(k.first, k.second);
-         overlap.intersection_of(recovery_state.get_info().purged_snaps, rm);
-         derr << __func__ << " purged_snaps does not contain "
-              << rm << ", only " << overlap << dendl;
-         recovery_state.adjust_purged_snaps(
-           [&overlap](auto &purged_snaps) {
-             purged_snaps.subtract(overlap);
-           });
-         // This can currently happen in the normal (if unlikely) course of
-         // events.  Because adding snaps to purged_snaps does not increase
-         // the pg version or add a pg log entry, we don't reliably propagate
-         // purged_snaps additions to other OSDs.
-         // One example:
-         //  - purge S
-         //  - primary and replicas update purged_snaps
-         //  - no object updates
-         //  - pg mapping changes, new primary on different node
-         //  - new primary pg version == eversion_t(), so info is not
-         //    propagated.
-         //bad = true;
-       } else {
-         recovery_state.adjust_purged_snaps(
-           [&k](auto &purged_snaps) {
-             purged_snaps.erase(k.first, k.second);
-           });
-       }
+    dout(10) << __func__ << " new removed_snaps " << i->second
+            << ", snap_trimq now " << snap_trimq << dendl;
+    ceph_assert(!bad || !cct->_conf->osd_debug_verify_cached_snaps);
+  }
+
+  const auto& new_purged_snaps = osdmap->get_new_purged_snaps();
+  auto j = new_purged_snaps.find(get_pgid().pgid.pool());
+  if (j != new_purged_snaps.end()) {
+    bool bad = false;
+    for (auto k : j->second) {
+      if (!recovery_state.get_info().purged_snaps.contains(k.first, k.second)) {
+       interval_set<snapid_t> rm, overlap;
+       rm.insert(k.first, k.second);
+       overlap.intersection_of(recovery_state.get_info().purged_snaps, rm);
+       derr << __func__ << " purged_snaps does not contain "
+            << rm << ", only " << overlap << dendl;
+       recovery_state.adjust_purged_snaps(
+         [&overlap](auto &purged_snaps) {
+           purged_snaps.subtract(overlap);
+         });
+       // This can currently happen in the normal (if unlikely) course of
+       // events.  Because adding snaps to purged_snaps does not increase
+       // the pg version or add a pg log entry, we don't reliably propagate
+       // purged_snaps additions to other OSDs.
+       // One example:
+       //  - purge S
+       //  - primary and replicas update purged_snaps
+       //  - no object updates
+       //  - pg mapping changes, new primary on different node
+       //  - new primary pg version == eversion_t(), so info is not
+       //    propagated.
+       //bad = true;
+      } else {
+       recovery_state.adjust_purged_snaps(
+         [&k](auto &purged_snaps) {
+           purged_snaps.erase(k.first, k.second);
+         });
       }
-      dout(10) << __func__ << " new purged_snaps " << j->second
-              << ", now " << recovery_state.get_info().purged_snaps << dendl;
-      ceph_assert(!bad || !cct->_conf->osd_debug_verify_cached_snaps);
     }
+    dout(10) << __func__ << " new purged_snaps " << j->second
+            << ", now " << recovery_state.get_info().purged_snaps << dendl;
+    ceph_assert(!bad || !cct->_conf->osd_debug_verify_cached_snaps);
   }
 }