]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
osd/PG: move down peers out from peer_purged 27205/head
authorxie xingguo <xie.xingguo@zte.com.cn>
Tue, 26 Mar 2019 07:02:02 +0000 (15:02 +0800)
committerxie xingguo <xie.xingguo@zte.com.cn>
Sat, 30 Mar 2019 01:22:11 +0000 (09:22 +0800)
In purge_strays(), we'll aggressively clear stray_set and
add all related peers into peer_purged.

However, if the corrsponding peer is down and becomes
up again, (unconditionally) adding it to peer_purged
will prevent primary from re-purging it.
(See Active::react(const MNotifyRec& notevt))

On consuming a new osdmap, let's move any down peers out from
peer_purged simutaneously. This way we can lower the risk
of leaving any leftover PGs behind.

Related-to: http://tracker.ceph.com/issues/38931
Signed-off-by: xie xingguo <xie.xingguo@zte.com.cn>
src/osd/PG.cc

index bec5666ab9e4e36dd8a6df38ce26d5201039229f..0a01bb88599db536c48b50cd7552dec1b05cc32b 100644 (file)
@@ -980,6 +980,7 @@ void PG::remove_down_peer_info(const OSDMapRef osdmap)
       peer_missing.erase(p->first);
       peer_log_requested.erase(p->first);
       peer_missing_requested.erase(p->first);
+      peer_purged.erase(p->first); // so we can re-purge if necessary
       peer_info.erase(p++);
       removed = true;
     } else