]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
osd/PG: move down peers out from peer_purged 27878/head
authorxie xingguo <xie.xingguo@zte.com.cn>
Tue, 26 Mar 2019 07:02:02 +0000 (15:02 +0800)
committerPrashant D <pdhange@redhat.com>
Mon, 29 Apr 2019 23:22:58 +0000 (19:22 -0400)
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>
(cherry picked from commit f7c5b01e181630bb15e8b923b0334eb6adfdf50a)

src/osd/PG.cc

index 98758ef1a40b3497a5bec0ad0445887d11cd7066..266c70d1478a36a7b11acda0d7cb0e063d5df7b6 100644 (file)
@@ -946,6 +946,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