From a4eb59969a0c38b9cf12532d6d92fedeb9223f22 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Tue, 5 Oct 2010 15:41:40 -0700 Subject: [PATCH] osd: cancel deletion on pg change If the primary changes, cancel deletion so that the new primary has the benefit of considering whether they need anything we have. Before we were only canceling if our role changed, but that makes little sense. Signed-off-by: Sage Weil --- src/osd/OSD.cc | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/osd/OSD.cc b/src/osd/OSD.cc index 56889c0a0985c..e69b81e48ab08 100644 --- a/src/osd/OSD.cc +++ b/src/osd/OSD.cc @@ -2659,14 +2659,14 @@ void OSD::advance_map(ObjectStore::Transaction& t) if (osdmap->is_down(oldacting[i])) pg->on_osd_failure(oldacting[i]); pg->on_change(); + + if (pg->deleting) { + dout(10) << *pg << " canceling deletion!" << dendl; + pg->deleting = false; + remove_wq.dequeue(pg); + } if (role != oldrole) { - // old stray? - if (oldrole < 0 && pg->deleting) { - dout(10) << *pg << " canceling deletion!" << dendl; - pg->deleting = false; - } - // old primary? if (oldrole == 0) { pg->state_clear(PG_STATE_CLEAN); -- 2.39.5