From ab6c65a3ec3003a763259380bd486fb9b903acc6 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Sat, 7 Feb 2015 11:13:52 -0800 Subject: [PATCH] mon/OSDMonitor: fix nan on 'osd df' variance Fixes: half of #10695 Signed-off-by: Sage Weil --- src/mon/OSDMonitor.cc | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/mon/OSDMonitor.cc b/src/mon/OSDMonitor.cc index f9e2f2d87fb8..18d1ba6dd052 100644 --- a/src/mon/OSDMonitor.cc +++ b/src/mon/OSDMonitor.cc @@ -619,11 +619,14 @@ public: osdmap(osdmap_), pgm(pgm_), tree(tree_), - average_util(100.0 * (double)pgm->osd_sum.kb_used / (double)pgm->osd_sum.kb), + average_util(0), min_var(-1), max_var(-1), stddev(0), - sum(0) {} + sum(0) { + if (pgm->osd_sum.kb) + average_util = 100.0 * (double)pgm->osd_sum.kb_used / (double)pgm->osd_sum.kb; + } protected: void dump_stray(F *f) { @@ -639,8 +642,9 @@ protected: float reweight = qi.is_bucket() ? -1 : osdmap->get_weightf(qi.id); int64_t kb = 0, kb_used = 0, kb_avail = 0; - double util = get_bucket_utilization(qi.id, kb, kb_used, kb_avail) ? - 100.0 * (double)kb_used / (double)kb : 0; + double util = 0; + if (get_bucket_utilization(qi.id, kb, kb_used, kb_avail) && kb > 0) + util = 100.0 * (double)kb_used / (double)kb; double var = 1.0; if (average_util) var = util / average_util; -- 2.47.3