From: Joao Eduardo Luis Date: Fri, 16 Jan 2015 18:13:05 +0000 (+0000) Subject: mon: PGMonitor: available size 0 if no osds on pool's ruleset X-Git-Tag: v0.93~234^2~1 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=8be6a6ab2aa5a000a39c73a98b11a0ab32fffa1c;p=ceph.git mon: PGMonitor: available size 0 if no osds on pool's ruleset get_rule_avail() may return < 0, which we were using blindly assuming it would always return an unsigned value. We would end up with weird values if the ruleset had no osds. Signed-off-by: Joao Eduardo Luis --- diff --git a/src/mon/PGMonitor.cc b/src/mon/PGMonitor.cc index 32352b5c8753..ba4ba45f8a18 100644 --- a/src/mon/PGMonitor.cc +++ b/src/mon/PGMonitor.cc @@ -1342,9 +1342,11 @@ void PGMonitor::dump_pool_stats(stringstream &ss, Formatter *f, bool verbose) int ruleno = osdmap.crush->find_rule(pool->get_crush_ruleset(), pool->get_type(), pool->get_size()); - uint64_t avail; + int64_t avail; if (avail_by_rule.count(ruleno) == 0) { avail = get_rule_avail(osdmap, ruleno); + if (avail < 0) + avail = 0; avail_by_rule[ruleno] = avail; } else { avail = avail_by_rule[ruleno];