From: chen.xiaowei Date: Tue, 20 Oct 2015 04:31:27 +0000 (+0800) Subject: PG: pg down state blocked by osd.x, lost osd.x cannot solve peering stuck. X-Git-Tag: v10.1.1~75^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=refs%2Fpull%2F6317%2Fhead;p=ceph.git PG: pg down state blocked by osd.x, lost osd.x cannot solve peering stuck. Fixes #13531 Signed-off-by: Xiaowei Chen --- diff --git a/src/osd/PG.cc b/src/osd/PG.cc index f3faabb84d57..8cd6be3fc78a 100644 --- a/src/osd/PG.cc +++ b/src/osd/PG.cc @@ -7715,6 +7715,14 @@ bool PG::PriorSet::affected_by_map(const OSDMapRef osdmap, const PG *debug_pg) c dout(10) << "affected_by_map osd." << o << " no longer exists" << dendl; return true; } + // did a down osd in down get (re)marked as lost? + map::const_iterator r = blocked_by.find(o); + if (r != blocked_by.end()) { + if (osdmap->get_info(o).lost_at != r->second) { + dout(10) << "affected_by_map osd." << o << " (re)marked as lost" << dendl; + return true; + } + } } return false;