From c0233801a8bd78ce44e6bbf8baab1eae73e9fa5c Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Fri, 7 Jun 2019 10:51:52 -0500 Subject: [PATCH] mon/OSDMonitor: generalize/refactor lookup_*_snap Signed-off-by: Sage Weil --- src/mon/OSDMonitor.cc | 19 ++++++++++++------- src/mon/OSDMonitor.h | 10 +++++++++- 2 files changed, 21 insertions(+), 8 deletions(-) diff --git a/src/mon/OSDMonitor.cc b/src/mon/OSDMonitor.cc index 9e984afe4ef..e7c7aeeb7dc 100644 --- a/src/mon/OSDMonitor.cc +++ b/src/mon/OSDMonitor.cc @@ -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; diff --git a/src/mon/OSDMonitor.h b/src/mon/OSDMonitor.h index af7becb679d..b7e40e2fa98 100644 --- a/src/mon/OSDMonitor.h +++ b/src/mon/OSDMonitor.h @@ -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); -- 2.39.5