]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
ReplicatedPG::hit_set_setup: fix hit_set_remove_all call 5825/head
authorSamuel Just <sjust@redhat.com>
Mon, 21 Sep 2015 18:16:49 +0000 (11:16 -0700)
committerKefu Chai <kchai@redhat.com>
Fri, 9 Oct 2015 10:22:45 +0000 (03:22 -0700)
We only want to do it if the pool config changed AND we are
primary && active.

fd38902dd4693b9b72f7532833e78f5df2c9efa5 partially fixed a related
bug.  This should be backported along with it.

Fixes: 13192
Signed-off-by: Samuel Just <sjust@redhat.com>
(cherry picked from commit 36e4a80c39f7daab2a35efc04650ae8b7b11c4e0)

src/osd/ReplicatedPG.cc

index a67201f5d66f1deaadaa4dd08e2680ee74a0ba64..607a5ae7f23174a0d878fa589bf5b7e32fa74292 100644 (file)
@@ -10141,15 +10141,19 @@ void ReplicatedPG::hit_set_clear()
 void ReplicatedPG::hit_set_setup()
 {
   if (!is_active() ||
-      !is_primary() ||
-      !pool.info.hit_set_count ||
-      !pool.info.hit_set_period ||
-      pool.info.hit_set_params.get_type() == HitSet::TYPE_NONE) {
+      !is_primary()) {
     hit_set_clear();
+    return;
+  }
+
+  if (is_active() && is_primary() &&
+      (!pool.info.hit_set_count ||
+       !pool.info.hit_set_period ||
+       pool.info.hit_set_params.get_type() == HitSet::TYPE_NONE)) {
+    hit_set_clear();
+
     // only primary is allowed to remove all the hit set objects
-    if (is_primary() && is_peered()) {
-      hit_set_remove_all();
-    }
+    hit_set_remove_all();
     return;
   }