From 441f42b8add06304df331b655b75da9b3a491cd8 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Fri, 7 Jun 2019 10:23:18 -0500 Subject: [PATCH] mon/OSDMonitor: fix lookup_purged_snap implementation - look at purged, not removed snap keys - fix the key check to look at the *key name* prefix, not the overall prefix (the one implemented by the KeyValueDB interface). Signed-off-by: Sage Weil --- src/mon/OSDMonitor.cc | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/mon/OSDMonitor.cc b/src/mon/OSDMonitor.cc index 1bd941129d6..6fba3718ab3 100644 --- a/src/mon/OSDMonitor.cc +++ b/src/mon/OSDMonitor.cc @@ -6257,13 +6257,18 @@ string OSDMonitor::make_snap_purged_key_value( int OSDMonitor::lookup_purged_snap(int64_t pool, snapid_t snap, snapid_t *begin, snapid_t *end) { - string k = make_snap_key(pool, snap); + string k = make_snap_purged_key(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 + << " - key '" << k << "' not found" << dendl; return -ENOENT; } - if (it->key().find(OSD_SNAP_PREFIX) != 0) { + if (it->key().find("purged_snap_") != 0) { + dout(20) << __func__ << " pool " << pool << " snap " << snap + << " - key '" << k << "' got '" << it->key() + << "', wrong prefix" << dendl; return -ENOENT; } bufferlist v = it->value(); @@ -6271,6 +6276,9 @@ 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 + << " - found [" << *begin << "," << *end << "), no overlap" + << dendl; return -ENOENT; } return 0; -- 2.39.5