From 37a45d52a96aca1a7b5d3cb27078443c017ac050 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Tue, 2 Feb 2010 11:39:44 -0800 Subject: [PATCH] osd: fix osd shutdown --- src/osd/OSD.cc | 5 +++++ src/osd/ReplicatedPG.cc | 10 +++++++--- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/src/osd/OSD.cc b/src/osd/OSD.cc index fe6223c657ce0..5b774e16392e5 100644 --- a/src/osd/OSD.cc +++ b/src/osd/OSD.cc @@ -539,6 +539,11 @@ int OSD::shutdown() p->second->unlock(); } + osd_lock.Unlock(); + store->sync(); + store->flush(); + osd_lock.Lock(); + // zap waiters (bleh, this is messy) finished_lock.Lock(); finished.clear(); diff --git a/src/osd/ReplicatedPG.cc b/src/osd/ReplicatedPG.cc index f45d37ebfc2d3..c108b2d215244 100644 --- a/src/osd/ReplicatedPG.cc +++ b/src/osd/ReplicatedPG.cc @@ -1777,8 +1777,11 @@ void ReplicatedPG::op_applied(RepGather *repop) // (logical) local ack. int whoami = osd->get_nodeid(); - assert(repop->waitfor_ack.count(whoami)); - repop->waitfor_ack.erase(whoami); + + if (!repop->aborted) { + assert(repop->waitfor_ack.count(whoami)); + repop->waitfor_ack.erase(whoami); + } if (repop->ctx->clone_obc) { put_object_context(repop->ctx->clone_obc); @@ -1831,7 +1834,8 @@ void ReplicatedPG::op_applied(RepGather *repop) break; } - eval_repop(repop); + if (!repop->aborted) + eval_repop(repop); repop->put(); unlock(); -- 2.39.5