]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
osd/PG: move down peers out from peer_purged 27839/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 00:55:44 +0000 (20:55 -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 f7f536265c433399e09ed9aa3268dc7c802be68e..05cd44a3cae343366f11067173c153bdaebd3684 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