}
-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;
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;
}
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);