From 56dbf7a63cb39999c2eda288e97fcf2b2c778052 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Mon, 14 Sep 2015 17:11:31 -0400 Subject: [PATCH] osd/OSDMap: cache values for in, up osds We already do this for num_osd; do the same for the up and in counts. Signed-off-by: Sage Weil --- src/osd/OSDMap.cc | 34 +++++++++++++--------------------- src/osd/OSDMap.h | 17 +++++++++++++---- 2 files changed, 26 insertions(+), 25 deletions(-) diff --git a/src/osd/OSDMap.cc b/src/osd/OSDMap.cc index d308186871ded..ebe73d694e542 100644 --- a/src/osd/OSDMap.cc +++ b/src/osd/OSDMap.cc @@ -937,9 +937,19 @@ void OSDMap::set_max_osd(int m) int OSDMap::calc_num_osds() { num_osd = 0; - for (int i=0; i& ls) const } } -unsigned OSDMap::get_num_up_osds() const -{ - unsigned n = 0; - for (int i=0; i& st) { unsigned t = state; diff --git a/src/osd/OSDMap.h b/src/osd/OSDMap.h index 39e0ef0756a26..e929b72ce1743 100644 --- a/src/osd/OSDMap.h +++ b/src/osd/OSDMap.h @@ -212,7 +212,10 @@ private: uint32_t flags; - int num_osd; // not saved + int num_osd; // not saved; see calc_num_osds + int num_up_osd; // not saved; see calc_num_osds + int num_in_osd; // not saved; see calc_num_osds + int32_t max_osd; vector osd_state; @@ -265,7 +268,8 @@ private: OSDMap() : epoch(0), pool_max(-1), flags(0), - num_osd(0), max_osd(0), + num_osd(0), num_up_osd(0), num_in_osd(0), + max_osd(0), osd_addrs(new addrs_s), pg_temp(new map >), primary_temp(new map), @@ -329,12 +333,17 @@ public: unsigned get_num_osds() const { return num_osd; } + unsigned get_num_up_osds() const { + return num_up_osd; + } + unsigned get_num_in_osds() const { + return num_in_osd; + } + /// recalculate cached values for get_num{,_up,_in}_osds int calc_num_osds(); void get_all_osds(set& ls) const; void get_up_osds(set& ls) const; - unsigned get_num_up_osds() const; - unsigned get_num_in_osds() const; unsigned get_num_pg_temp() const { return pg_temp->size(); } -- 2.39.5