]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
PG: only complete replicas should count toward min_size
authorSage Weil <sage@inktank.com>
Tue, 1 Apr 2014 23:01:28 +0000 (16:01 -0700)
committerSage Weil <sage@inktank.com>
Tue, 6 May 2014 20:29:03 +0000 (13:29 -0700)
Backport: emperor,dumpling,cuttlefish
Fixes: #7805
Signed-off-by: Samuel Just <sam.just@inktank.com>
Signed-off-by: Sage Weil <sage@inktank.com>
(cherry picked from commit 0d5d3d1a30685e7c47173b974caa12076c43a9c4)

src/osd/PG.cc

index 973559e455c81ec34b2555d24be7edb15c8499c4..e8c039ee78086f4af7daf45653b81220f7ccf3bf 100644 (file)
@@ -1010,7 +1010,20 @@ bool PG::choose_acting(int& newest_update_osd)
     return false;
   }
 
-  if (want.size() < pool.info.min_size) {
+  unsigned complete = 0;
+  for (vector<int>::iterator i = want.begin();
+       i != want.end();
+       ++i) {
+    if (*i == osd->whoami) {
+      if (!info.is_incomplete())
+       ++complete;
+    } else {
+      assert(peer_info.count(*i));
+      if (!peer_info[*i].is_incomplete())
+       ++complete;
+    }
+  }
+  if (complete < pool.info.min_size) {
     want_acting.clear();
     return false;
   }