]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mon/OSDMonitor: do not populate void pg_temp into nextmap 25845/head
authorxie xingguo <xie.xingguo@zte.com.cn>
Fri, 4 Jan 2019 00:39:01 +0000 (08:39 +0800)
committerPrashant D <pdhange@redhat.com>
Tue, 8 Jan 2019 23:15:10 +0000 (18:15 -0500)
Due to commit ea723fb, pg_temp with clean acting set are added to inc map.
The original intent was to clear out pg_temps during priming, but as
written it would set a new_pg_temp item clearing the pg_temp even if one
didn't already exist.  Adding the up != acting condition in there makes us
only take that path if there is an existing pg_temp entry to remove.

Fixes: https://tracker.ceph.com/issues/37784
Signed-off-by: Aleksei Zakharov <zakharov.a.g@yandex.ru>
(cherry picked from commit b1d3ca5e78eaee509c923f06e9024c23cc6ce31a)

src/mon/OSDMonitor.cc

index ac2c3b5242f047e5886f36f25ee62a7eb35ee63e..bab11dd7ff9e69099bd6d3be290806ab0171d84e 100644 (file)
@@ -1006,7 +1006,8 @@ void OSDMonitor::prime_pg_temp(
   int next_up_primary, next_acting_primary;
   next.pg_to_up_acting_osds(pgid, &next_up, &next_up_primary,
                            &next_acting, &next_acting_primary);
-  if (acting == next_acting && next_up != next_acting)
+  if (acting == next_acting &&
+      !(up != acting && next_up == next_acting))
     return;  // no change since last epoch
 
   if (acting.empty())