bool ack;
osd_peer_stat_t peer_stat;
- MOSDPing(ceph_fsid_t& f, epoch_t e, epoch_t pe, osd_peer_stat_t& ps, bool a=false) :
+ MOSDPing(const ceph_fsid_t& f, epoch_t e, epoch_t pe, osd_peer_stat_t& ps, bool a=false) :
Message(MSG_OSD_PING), fsid(f), map_epoch(e), peer_as_of_epoch(pe), ack(a), peer_stat(ps) { }
MOSDPing() {}
private:
bool repair;
MOSDScrub() {}
- MOSDScrub(ceph_fsid_t& f, bool r) :
+ MOSDScrub(const ceph_fsid_t& f, bool r) :
Message(MSG_OSD_SCRUB),
fsid(f), repair(r) {}
- MOSDScrub(ceph_fsid_t& f, vector<pg_t>& pgs, bool r) :
+ MOSDScrub(const ceph_fsid_t& f, vector<pg_t>& pgs, bool r) :
Message(MSG_OSD_SCRUB),
fsid(f), scrub_pgs(pgs), repair(r) {}
private:
utime_t had_map_for;
MPGStats() : PaxosServiceMessage(MSG_PGSTATS, 0) {}
- MPGStats(ceph_fsid_t& f, epoch_t e, utime_t had) :
+ MPGStats(const ceph_fsid_t& f, epoch_t e, utime_t had) :
PaxosServiceMessage(MSG_PGSTATS, e), fsid(f), epoch(e), had_map_for(had) {}
private:
-void OSDMap::print(ostream& out)
+void OSDMap::print(ostream& out) const
{
out << "epoch " << get_epoch() << "\n"
<< "fsid " << get_fsid() << "\n"
out << " pauserec";
out << "\n" << std::endl;
- for (map<int,pg_pool_t>::iterator p = pools.begin(); p != pools.end(); p++) {
+ for (map<int,pg_pool_t>::const_iterator p = pools.begin(); p != pools.end(); ++p) {
+ std::string name("<unknown>");
+ map<int32_t,string>::const_iterator pni = pool_name.find(p->first);
+ if (pni != pool_name.end())
+ name = pni->second;
out << "pg_pool " << p->first
- << " '" << pool_name[p->first]
+ << " '" << name
<< "' " << p->second << "\n";
- for (map<snapid_t,pool_snap_info_t>::iterator q = p->second.snaps.begin();
+ for (map<snapid_t,pool_snap_info_t>::const_iterator q = p->second.snaps.begin();
q != p->second.snaps.end();
q++)
out << "\tsnap " << q->second.snapid << " '" << q->second.name << "' " << q->second.stamp << "\n";
if (is_in(i))
out << " weight " << get_weightf(i);
out << (is_up(i) ? " up ":" down");
- osd_info_t& info = get_info(i);
+ const osd_info_t& info(get_info(i));
out << info << " ";
if (is_up(i))
out << get_addr(i) << " " << get_hb_addr(i);
}
out << std::endl;
- for (map<pg_t,vector<int> >::iterator p = pg_temp.begin();
+ for (map<pg_t,vector<int> >::const_iterator p = pg_temp.begin();
p != pg_temp.end();
p++)
out << "pg_temp " << p->first << " " << p->second << "\n";
- for (hash_map<entity_addr_t,utime_t>::iterator p = blacklist.begin();
+ for (hash_map<entity_addr_t,utime_t>::const_iterator p = blacklist.begin();
p != blacklist.end();
p++)
out << "blacklist " << p->first << " expires " << p->second << "\n";
// ignore pg_swap_primary
}
-void OSDMap::print_summary(ostream& out)
+void OSDMap::print_summary(ostream& out) const
{
out << "e" << get_epoch() << ": "
<< get_num_osds() << " osds: "
}
// map info
- ceph_fsid_t& get_fsid() { return fsid; }
+ const ceph_fsid_t& get_fsid() const { return fsid; }
void set_fsid(ceph_fsid_t& f) { fsid = f; }
epoch_t get_epoch() const { return epoch; }
calc_num_osds();
}
- int get_num_osds() {
+ int get_num_osds() const {
return num_osd;
}
int calc_num_osds() {
if (exists(i))
ls.insert(i);
}
- int get_num_up_osds() {
+ int get_num_up_osds() const {
int n = 0;
for (int i=0; i<max_osd; i++)
if (osd_state[i] & CEPH_OSD_EXISTS &&
osd_state[i] & CEPH_OSD_UP) n++;
return n;
}
- int get_num_in_osds() {
+ int get_num_in_osds() const {
int n = 0;
for (int i=0; i<max_osd; i++)
if (osd_state[i] & CEPH_OSD_EXISTS &&
if (w)
osd_state[o] |= CEPH_OSD_EXISTS;
}
- unsigned get_weight(int o) {
+ unsigned get_weight(int o) const {
assert(o < max_osd);
return osd_weight[o];
}
- float get_weightf(int o) {
+ float get_weightf(int o) const {
return (float)get_weight(o) / (float)CEPH_OSD_IN;
}
void adjust_osd_weights(map<int,double>& weights, Incremental& inc) {
- bool exists(int osd) {
+ bool exists(int osd) const {
//assert(osd >= 0);
return osd >= 0 && osd < max_osd && (osd_state[osd] & CEPH_OSD_EXISTS);
}
- bool is_up(int osd) { return exists(osd) && osd_state[osd] & CEPH_OSD_UP; }
- bool is_down(int osd) { return !exists(osd) || !is_up(osd); }
- bool is_out(int osd) { return !exists(osd) || get_weight(osd) == CEPH_OSD_OUT; }
- bool is_in(int osd) { return exists(osd) && !is_out(osd); }
+
+ bool is_up(int osd) const {
+ return exists(osd) && osd_state[osd] & CEPH_OSD_UP;
+ }
+
+ bool is_down(int osd) const {
+ return !exists(osd) || !is_up(osd);
+ }
+
+ bool is_out(int osd) const {
+ return !exists(osd) || get_weight(osd) == CEPH_OSD_OUT;
+ }
+
+ bool is_in(int osd) const {
+ return exists(osd) && !is_out(osd);
+ }
int identify_osd(const entity_addr_t& addr) const {
for (unsigned i=0; i<osd_addr.size(); i++)
bool have_inst(int osd) {
return exists(osd) && is_up(osd);
}
- const entity_addr_t &get_addr(int osd) {
+ const entity_addr_t &get_addr(int osd) const {
assert(exists(osd));
return osd_addr[osd];
}
- const entity_addr_t &get_cluster_addr(int osd) {
+ const entity_addr_t &get_cluster_addr(int osd) const {
assert(exists(osd));
if (osd_cluster_addr[osd] == entity_addr_t())
return get_addr(osd);
return osd_cluster_addr[osd];
}
- const entity_addr_t &get_hb_addr(int osd) {
+ const entity_addr_t &get_hb_addr(int osd) const {
assert(exists(osd));
return osd_hb_addr[osd];
}
assert(exists(osd));
return osd_info[osd].down_at;
}
- osd_info_t& get_info(int osd) {
+ const osd_info_t& get_info(int osd) const {
assert(osd < max_osd);
return osd_info[osd];
}
static void build_simple_crush_map(CrushWrapper& crush, map<int, const char*>& poolsets, int num_osd, int num_dom=0);
- void print(ostream& out);
- void print_summary(ostream& out);
+ void print(ostream& out) const;
+ void print_summary(ostream& out) const;
};
-inline ostream& operator<<(ostream& out, OSDMap& m) {
+inline ostream& operator<<(ostream& out, const OSDMap& m) {
m.print_summary(out);
return out;
}