std::map<epoch_t, ceph::buffer::list> incremental_maps;
epoch_t oldest_map =0, newest_map = 0;
- // 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,snap_interval_set_t> gap_removed_snaps;
-
epoch_t get_first() const {
epoch_t e = 0;
auto i = maps.cbegin();
newest_map = 0;
}
if (header.version >= 4) {
+ // removed in octopus
+ mempool::osdmap::map<int64_t,snap_interval_set_t> gap_removed_snaps;
decode(gap_removed_snaps, p);
}
}
encode(newest_map, payload);
}
if (header.version >= 4) {
- encode(gap_removed_snaps, payload);
+ encode((uint32_t)0, payload);
}
}
out << "osd_map(" << get_first() << ".." << get_last();
if (oldest_map || newest_map)
out << " src has " << oldest_map << ".." << newest_map;
- if (!gap_removed_snaps.empty())
- out << " +gap_removed_snaps";
out << ")";
}
private:
m->oldest_map = get_first_committed();
m->newest_map = osdmap.get_epoch();
- // share removed snaps during the gap
- get_removed_snaps_range(first, m->oldest_map, &m->gap_removed_snaps);
-
first = get_first_committed();
bufferlist bl;
int err = get_version_full(first, features, bl);
}
}
-void OSDMonitor::get_removed_snaps_range(
- epoch_t start, epoch_t end,
- 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()) {
- auto& t = (*gap_removed_snaps)[p.first];
- for (epoch_t epoch = start; epoch < end; ++epoch) {
- string k = make_removed_snap_epoch_key(p.first, epoch);
- bufferlist v;
- mon->store->get(OSD_SNAP_PREFIX, k, v);
- if (v.length()) {
- auto q = v.cbegin();
- snap_interval_set_t snaps;
- decode(snaps, q);
- t.union_of(snaps);
- }
- }
- dout(10) << __func__ << " " << p.first << " " << t << dendl;
- }
-}
-
int OSDMonitor::get_version(version_t ver, bufferlist& bl)
{
return get_version(ver, mon->get_quorum_con_features(), bl);
send_incremental(op, start);
}
- void get_removed_snaps_range(
- epoch_t start, epoch_t end,
- 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);