From d5b3926e8309f4a3e17287bbe7ef2724b23028e3 Mon Sep 17 00:00:00 2001 From: "chen.xiaowei" Date: Tue, 20 Oct 2015 12:31:27 +0800 Subject: [PATCH] PG: pg down state blocked by osd.x, lost osd.x cannot solve peering stuck. Fixes #13531 Signed-off-by: Xiaowei Chen --- src/osd/PG.cc | 8 ++++++++ 1 file changed, 8 insertions(+) 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; -- 2.47.3