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.80.10~73^2~1 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=bcc8cfb24a96a7874a24760771755088a231a8d7;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 (cherry picked from commit 8be6a6ab2aa5a000a39c73a98b11a0ab32fffa1c) --- diff --git a/src/mon/PGMonitor.cc b/src/mon/PGMonitor.cc index 159fd9b4e590..9a4aee36ae20 100644 --- a/src/mon/PGMonitor.cc +++ b/src/mon/PGMonitor.cc @@ -1302,9 +1302,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];