// if we are fetching maps from the mon and have to jump a gap
// (client's next needed std::map is older than mon's oldest) we can
// share removed snaps from the gap here.
- mempool::osdmap::map<int64_t,OSDMap::snap_interval_set_t> gap_removed_snaps;
+ mempool::osdmap::map<int64_t,snap_interval_set_t> gap_removed_snaps;
epoch_t get_first() const {
epoch_t e = 0;
void OSDMonitor::get_removed_snaps_range(
epoch_t start, epoch_t end,
- mempool::osdmap::map<int64_t,OSDMap::snap_interval_set_t> *gap_removed_snaps)
+ mempool::osdmap::map<int64_t,snap_interval_set_t> *gap_removed_snaps)
{
// we only care about pools that exist now.
for (auto& p : osdmap.get_pools()) {
mon->store->get(OSD_SNAP_PREFIX, k, v);
if (v.length()) {
auto q = v.cbegin();
- OSDMap::snap_interval_set_t snaps;
+ snap_interval_set_t snaps;
decode(snaps, q);
t.union_of(snaps);
}
continue;
}
dout(20) << __func__ << " pool " << p.first << " purged " << purged << dendl;
- OSDMap::snap_interval_set_t to_prune;
+ snap_interval_set_t to_prune;
unsigned maybe_pruned = actually_pruned;
for (auto i = purged.begin(); i != purged.end(); ++i) {
snapid_t begin = i.get_start();
if (!to_prune.empty()) {
// PGs may still be reporting things as purged that we have already
// pruned from removed_snaps_queue.
- OSDMap::snap_interval_set_t actual;
+ snap_interval_set_t actual;
auto r = osdmap.removed_snaps_queue.find(p.first);
if (r != osdmap.removed_snaps_queue.end()) {
actual.intersection_of(to_prune, r->second);
void get_removed_snaps_range(
epoch_t start, epoch_t end,
- mempool::osdmap::map<int64_t,OSDMap::snap_interval_set_t> *gap_removed_snaps);
+ mempool::osdmap::map<int64_t,snap_interval_set_t> *gap_removed_snaps);
int get_version(version_t ver, bufferlist& bl) override;
int get_version(version_t ver, uint64_t feature, bufferlist& bl);
public:
MEMPOOL_CLASS_HELPERS();
- typedef interval_set<
- snapid_t,
- mempool::osdmap::flat_map<snapid_t,snapid_t>> snap_interval_set_t;
-
class Incremental {
public:
MEMPOOL_CLASS_HELPERS();
typedef std::map<int, osd_alert_list_t> osd_alerts_t;
void dump(ceph::Formatter* f, const osd_alerts_t& alerts);
+
+typedef interval_set<
+ snapid_t,
+ mempool::osdmap::flat_map<snapid_t,snapid_t>> snap_interval_set_t;
+
+
/**
* osd request identifier
*
list<LingerOp*>& need_resend_linger,
map<ceph_tid_t, CommandOp*>& need_resend_command,
shunique_lock& sul,
- const mempool::osdmap::map<int64_t,OSDMap::snap_interval_set_t> *gap_removed_snaps)
+ const mempool::osdmap::map<int64_t,snap_interval_set_t> *gap_removed_snaps)
{
ceph_assert(sul.owns_lock() && sul.mutex() == &rwlock);
void Objecter::_prune_snapc(
const mempool::osdmap::map<int64_t,
- OSDMap::snap_interval_set_t>& new_removed_snaps,
+ snap_interval_set_t>& new_removed_snaps,
Op *op)
{
bool match = false;
#include "messages/MOSDOp.h"
#include "msg/Dispatcher.h"
-#include "osd/OSDMap.h" // for OSDMap::snap_interval_set_t
+
+#include "osd/OSDMap.h"
class Context;
class Messenger;
bool _osdmap_full_flag() const;
bool _osdmap_has_pool_full() const;
void _prune_snapc(
- const mempool::osdmap::map<int64_t, OSDMap::snap_interval_set_t>& new_removed_snaps,
+ const mempool::osdmap::map<int64_t, snap_interval_set_t>& new_removed_snaps,
Op *op);
bool target_should_be_paused(op_target_t *op);
std::list<LingerOp*>& need_resend_linger,
std::map<ceph_tid_t, CommandOp*>& need_resend_command,
shunique_lock& sul,
- const mempool::osdmap::map<int64_t,OSDMap::snap_interval_set_t> *gap_removed_snaps);
+ const mempool::osdmap::map<int64_t,snap_interval_set_t> *gap_removed_snaps);
int64_t get_object_hash_position(int64_t pool, const std::string& key,
const std::string& ns);