diff --git a/src/osd/OSDMap.cc b/src/osd/OSDMap.cc index da3602b1e88..5cea2a58b6d 100644 --- a/src/osd/OSDMap.cc +++ b/src/osd/OSDMap.cc @@ -74,7 +74,7 @@ void OSDMap::print(ostream& out) void OSDMap::print_summary(ostream& out) { out << "e" << get_epoch() << ": " - << get_max_osd() << " osds: " + << get_num_osds() << " osds: " << get_num_up_osds() << " up, " << get_num_in_osds() << " in"; if (blacklist.size()) diff --git a/src/osd/OSDMap.h b/src/osd/OSDMap.h index ba7126948c8..9469f8acc06 100644 --- a/src/osd/OSDMap.h +++ b/src/osd/OSDMap.h @@ -254,6 +254,7 @@ private: uint32_t flags; + int num_osd; // not saved int32_t max_osd; vector osd_state; vector osd_addr; @@ -279,7 +280,7 @@ private: OSDMap() : epoch(0), pool_max(-1), flags(0), - max_osd(0) { + num_osd(0), max_osd(0) { memset(&fsid, 0, sizeof(fsid)); } @@ -313,14 +314,27 @@ private: int o = max_osd; max_osd = m; osd_state.resize(m); - osd_info.resize(m); osd_weight.resize(m); for (; o& ls) { @@ -331,14 +345,14 @@ private: int get_num_up_osds() { int n = 0; for (int i=0; i::iterator i = inc.new_up.begin(); i != inc.new_up.end(); i++) { - osd_state[i->first] |= CEPH_OSD_UP; + osd_state[i->first] |= CEPH_OSD_EXISTS | CEPH_OSD_UP; osd_addr[i->first] = i->second; if (inc.new_hb_up.empty()) { //this is a backward-compatibility hack @@ -661,6 +677,8 @@ private: name_pool.clear(); for (map::iterator i = pool_name.begin(); i != pool_name.end(); i++) name_pool[i->second] = i->first; + + calc_num_osds(); }