]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mon/OSDMonitor: fix nan on 'osd df' variance 3664/head
authorSage Weil <sage@redhat.com>
Sat, 7 Feb 2015 19:13:52 +0000 (11:13 -0800)
committerSage Weil <sage@redhat.com>
Sat, 7 Feb 2015 19:13:52 +0000 (11:13 -0800)
Fixes: half of #10695
Signed-off-by: Sage Weil <sage@redhat.com>
src/mon/OSDMonitor.cc

index f9e2f2d87fb86ad9358e322329bc0049b4c3d87e..18d1ba6dd05291a12507a783721ceeb735874a2c 100644 (file)
@@ -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;