]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mon/OSDMonitor: generalize/refactor lookup_*_snap
authorSage Weil <sage@redhat.com>
Fri, 7 Jun 2019 15:51:52 +0000 (10:51 -0500)
committerSage Weil <sage@redhat.com>
Tue, 2 Jul 2019 13:37:50 +0000 (08:37 -0500)
Signed-off-by: Sage Weil <sage@redhat.com>
src/mon/OSDMonitor.cc
src/mon/OSDMonitor.h

index 9e984afe4ef524d704afdec082c0832c84ce8458..e7c7aeeb7dcc5c060506776085d261968e5febb3 100644 (file)
@@ -6236,19 +6236,23 @@ string OSDMonitor::_make_snap_key_value(
 }
 
 
-int OSDMonitor::lookup_purged_snap(int64_t pool, snapid_t snap,
-                                  snapid_t *begin, snapid_t *end)
+int OSDMonitor::_lookup_snap(bool purged,
+                            int64_t pool, snapid_t snap,
+                            snapid_t *begin, snapid_t *end)
 {
-  string k = make_purged_snap_key(pool, snap);
+  string k = _make_snap_key(purged, pool, snap);
   auto it = mon->store->get_iterator(OSD_SNAP_PREFIX);
   it->lower_bound(k);
   if (!it->valid()) {
-    dout(20) << __func__ << " pool " << pool << " snap " << snap
+    dout(20) << __func__ << (purged ? " (purged)" : " (removed)")
+            << " pool " << pool << " snap " << snap
             << " - key '" << k << "' not found" << dendl;
     return -ENOENT;
   }
-  if (it->key().find("purged_snap_") != 0) {
-    dout(20) << __func__ << " pool " << pool << " snap " << snap
+  if ((purged && it->key().find("purged_snap_") != 0) ||
+      (!purged && it->key().find("removed_snap_") != 0)) {
+    dout(20) << __func__ << (purged ? " (purged)" : " (removed)")
+            << " pool " << pool << " snap " << snap
             << " - key '" << k << "' got '" << it->key()
             << "', wrong prefix" << dendl;
     return -ENOENT;
@@ -6258,7 +6262,8 @@ int OSDMonitor::lookup_purged_snap(int64_t pool, snapid_t snap,
   decode(*begin, p);
   decode(*end, p);
   if (snap < *begin || snap >= *end) {
-    dout(20) << __func__ << " pool " << pool << " snap " << snap
+    dout(20) << __func__ << (purged ? " (purged)" : " (removed)")
+            << " pool " << pool << " snap " << snap
             << " - found [" << *begin << "," << *end << "), no overlap"
             << dendl;
     return -ENOENT;
index af7becb679d72ade2fa530ce4e45c14a58c85815..b7e40e2fa9846832ed35df2980efe6d061d5b236 100644 (file)
@@ -525,8 +525,16 @@ private:
   }
 
   bool try_prune_purged_snaps();
+  int _lookup_snap(bool purged, int64_t pool, snapid_t snap,
+                  snapid_t *begin, snapid_t *end);
+  int lookup_removed_snap(int64_t pool, snapid_t snap,
+                         snapid_t *begin, snapid_t *end) {
+    return _lookup_snap(false, pool, snap, begin,end);
+  }
   int lookup_purged_snap(int64_t pool, snapid_t snap,
-                        snapid_t *begin, snapid_t *end);
+                        snapid_t *begin, snapid_t *end) {
+    return _lookup_snap(true, pool, snap, begin,end);
+  }
 
   bool prepare_set_flag(MonOpRequestRef op, int flag);
   bool prepare_unset_flag(MonOpRequestRef op, int flag);