]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
NVMEDevice: reorder signal in case of signaled thread modify IOContext
authorHaomai Wang <haomai@xsky.com>
Tue, 5 Jan 2016 18:53:10 +0000 (02:53 +0800)
committerHaomai Wang <haomai@xsky.com>
Mon, 1 Feb 2016 14:00:44 +0000 (22:00 +0800)
Signed-off-by: Haomai Wang <haomai@xsky.com>
src/os/bluestore/NVMEDevice.cc

index ab83fcb1d358d09e8a01e996aa584edb49bd1d63..8731c3fc16bcbc82b919f8fb8aa8d7b18ad19e0f 100644 (file)
@@ -53,13 +53,12 @@ static void io_complete(void *t, const struct nvme_completion *completion) {
     dout(20) << __func__ << " write op successfully, left " << left << dendl;
     if (!left) {
       ctx->backend_priv = nullptr;
+      if (ctx->priv)
+        task->device->aio_callback(task->device->aio_callback_priv, ctx->priv);
       if (ctx->num_waiting.read()) {
         Mutex::Locker l(ctx->lock);
         ctx->cond.Signal();
       }
-      if (ctx->priv) {
-        task->device->aio_callback(task->device->aio_callback_priv, ctx->priv);
-      }
     }
     rte_free(task->buf);
     rte_mempool_put(task_pool, task);