]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
osd: wait for cleanup from bench 5646/head
authorSage Weil <sage@redhat.com>
Mon, 24 Aug 2015 15:00:13 +0000 (11:00 -0400)
committerSage Weil <sage@redhat.com>
Mon, 24 Aug 2015 15:00:13 +0000 (11:00 -0400)
We need to wait for cleanup to flush before we destroy the
sequencer or else we get a use-after-free.

Introduced e7bbafa3bfbd5e936a8be026a30b83a89f6121c3.

Fixes: #12766
Signed-off-by: Sage Weil <sage@redhat.com>
src/osd/OSD.cc

index f8660c07c7635a63a1698fa8521dc3f8cd86b48a..87c47bc25d43623a32cec00118674a6d24b90726 100644 (file)
@@ -5162,6 +5162,12 @@ void OSD::do_command(Connection *con, ceph_tid_t tid, vector<string>& cmd, buffe
 
     // clean up
     store->queue_transaction_and_cleanup(osr.get(), cleanupt);
+    {
+      C_SaferCond waiter;
+      if (!osr->flush_commit(&waiter)) {
+       waiter.wait();
+      }
+    }
 
     uint64_t rate = (double)count / (end - start);
     if (f) {