]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
osd: fix osd shutdown
authorSage Weil <sage@newdream.net>
Tue, 2 Feb 2010 19:39:44 +0000 (11:39 -0800)
committerSage Weil <sage@newdream.net>
Tue, 2 Feb 2010 19:39:44 +0000 (11:39 -0800)
src/osd/OSD.cc
src/osd/ReplicatedPG.cc

index fe6223c657ce09b2ef033edf4d2554e1901dfe91..5b774e16392e5c44855f31676a208ccaf1c00082 100644 (file)
@@ -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();
index f45d37ebfc2d323bb019b950d00ee1fe12b19c8e..c108b2d215244acf52f1053027e0a12d0efc7e61 100644 (file)
@@ -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();