From c0f362434560ea773350b5677365d7eed83c2c42 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Fri, 7 Jun 2019 10:48:24 -0500 Subject: [PATCH] mon/OSDMonitor: refactor snap key and value helpers Signed-off-by: Sage Weil --- src/mon/OSDMonitor.cc | 30 ++++++------------------------ src/mon/OSDMonitor.h | 21 +++++++++++++++++---- 2 files changed, 23 insertions(+), 28 deletions(-) diff --git a/src/mon/OSDMonitor.cc b/src/mon/OSDMonitor.cc index cbe4dd35612..9e984afe4ef 100644 --- a/src/mon/OSDMonitor.cc +++ b/src/mon/OSDMonitor.cc @@ -6214,17 +6214,17 @@ string OSDMonitor::make_snap_epoch_key(int64_t pool, epoch_t epoch) return k; } -string OSDMonitor::make_removed_snap_key(int64_t pool, snapid_t snap) +string OSDMonitor::_make_snap_key(bool purged, int64_t pool, snapid_t snap) { char k[80]; - snprintf(k, sizeof(k), "removed_snap_%llu_%016llx", + snprintf(k, sizeof(k), "%s_snap_%llu_%016llx", + purged ? "purged" : "removed", (unsigned long long)pool, (unsigned long long)snap); return k; } - -string OSDMonitor::make_removed_snap_key_value( - int64_t pool, snapid_t snap, snapid_t num, +string OSDMonitor::_make_snap_key_value( + bool purged, int64_t pool, snapid_t snap, snapid_t num, epoch_t epoch, bufferlist *v) { // encode the *last* epoch in the key so that we can use forward @@ -6232,27 +6232,9 @@ string OSDMonitor::make_removed_snap_key_value( encode(snap, *v); encode(snap + num, *v); encode(epoch, *v); - return make_removed_snap_key(pool, snap + num - 1); + return _make_snap_key(purged, pool, snap + num - 1); } -string OSDMonitor::make_purged_snap_key(int64_t pool, snapid_t snap) -{ - char k[80]; - snprintf(k, sizeof(k), "purged_snap_%llu_%016llx", - (unsigned long long)pool, (unsigned long long)snap); - return k; -} -string OSDMonitor::make_purged_snap_key_value( - int64_t pool, snapid_t snap, snapid_t num, - epoch_t epoch, bufferlist *v) -{ - // encode the *last* epoch in the key so that we can use forward - // iteration only to search for an epoch in an interval. - encode(snap, *v); - encode(snap + num, *v); - encode(epoch, *v); - return make_purged_snap_key(pool, snap + num - 1); -} int OSDMonitor::lookup_purged_snap(int64_t pool, snapid_t snap, snapid_t *begin, snapid_t *end) diff --git a/src/mon/OSDMonitor.h b/src/mon/OSDMonitor.h index fefadb2a94d..af7becb679d 100644 --- a/src/mon/OSDMonitor.h +++ b/src/mon/OSDMonitor.h @@ -505,12 +505,25 @@ private: bool _is_pending_removed_snap(int64_t pool_id, snapid_t snapid); string make_snap_epoch_key(int64_t pool, epoch_t epoch); - string make_removed_snap_key(int64_t pool, snapid_t snap); + string _make_snap_key(bool purged, int64_t pool, snapid_t snap); + string _make_snap_key_value(bool purged, + int64_t pool, snapid_t snap, snapid_t num, + epoch_t epoch, bufferlist *v); + string make_removed_snap_key(int64_t pool, snapid_t snap) { + return _make_snap_key(false, pool, snap); + } string make_removed_snap_key_value(int64_t pool, snapid_t snap, snapid_t num, - epoch_t epoch, bufferlist *v); - string make_purged_snap_key(int64_t pool, snapid_t snap); + epoch_t epoch, bufferlist *v) { + return _make_snap_key_value(false, pool, snap, num, epoch, v); + } + string make_purged_snap_key(int64_t pool, snapid_t snap) { + return _make_snap_key(true, pool, snap); + } string make_purged_snap_key_value(int64_t pool, snapid_t snap, snapid_t num, - epoch_t epoch, bufferlist *v); + epoch_t epoch, bufferlist *v) { + return _make_snap_key_value(true, pool, snap, num, epoch, v); + } + bool try_prune_purged_snaps(); int lookup_purged_snap(int64_t pool, snapid_t snap, snapid_t *begin, snapid_t *end); -- 2.39.5