]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mon/PGMap: fix pg_by_osd
authorSage Weil <sage@redhat.com>
Tue, 9 Jun 2015 21:55:59 +0000 (17:55 -0400)
committerSage Weil <sage@redhat.com>
Tue, 9 Jun 2015 21:56:42 +0000 (17:56 -0400)
Broken since it was introduced in 7a04762fe09661cc2ac98a034626912ec0583116.

Signed-off-by: Sage Weil <sage@redhat.com>
src/mon/PGMap.cc

index dc3a4fe6087a960f0539c82c260c1514d91bc5c1..0aa837af59d7290c9eb99a4b619e2da0ed53fa87 100644 (file)
@@ -486,18 +486,10 @@ void PGMap::stat_pg_add(const pg_t &pgid, const pg_stat_t &s, bool sumonly,
     ++blocked_by_sum[*p];
   }
 
-  for (vector<int>::const_iterator p = s.acting.begin(); p != s.acting.end(); ++p) {
-    set<pg_t>& oset = pg_by_osd[*p];
-    oset.erase(pgid);
-    if (oset.empty())
-      pg_by_osd.erase(*p);
-  }
-  for (vector<int>::const_iterator p = s.up.begin(); p != s.up.end(); ++p) {
-    set<pg_t>& oset = pg_by_osd[*p];
-    oset.erase(pgid);
-    if (oset.empty())
-      pg_by_osd.erase(*p);
-  }
+  for (vector<int>::const_iterator p = s.acting.begin(); p != s.acting.end(); ++p)
+    pg_by_osd[*p].insert(pgid);
+  for (vector<int>::const_iterator p = s.up.begin(); p != s.up.end(); ++p)
+    pg_by_osd[*p].insert(pgid);
 }
 
 void PGMap::stat_pg_sub(const pg_t &pgid, const pg_stat_t &s, bool sumonly,
@@ -538,10 +530,18 @@ void PGMap::stat_pg_sub(const pg_t &pgid, const pg_stat_t &s, bool sumonly,
       blocked_by_sum.erase(q);
   }
 
-  for (vector<int>::const_iterator p = s.acting.begin(); p != s.acting.end(); ++p)
-    pg_by_osd[*p].insert(pgid);
-  for (vector<int>::const_iterator p = s.up.begin(); p != s.up.end(); ++p)
-    pg_by_osd[*p].insert(pgid);
+  for (vector<int>::const_iterator p = s.acting.begin(); p != s.acting.end(); ++p) {
+    set<pg_t>& oset = pg_by_osd[*p];
+    oset.erase(pgid);
+    if (oset.empty())
+      pg_by_osd.erase(*p);
+  }
+  for (vector<int>::const_iterator p = s.up.begin(); p != s.up.end(); ++p) {
+    set<pg_t>& oset = pg_by_osd[*p];
+    oset.erase(pgid);
+    if (oset.empty())
+      pg_by_osd.erase(*p);
+  }
 }
 
 void PGMap::stat_pg_update(const pg_t pgid, pg_stat_t& s,