]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
NVMEDevice: use wakeup instead of direct call
authorHaomai Wang <haomai@xsky.com>
Sun, 21 Feb 2016 12:36:25 +0000 (20:36 +0800)
committerHaomai Wang <haomai@xsky.com>
Sun, 21 Feb 2016 12:57:07 +0000 (20:57 +0800)
Signed-off-by: Haomai Wang <haomai@xsky.com>
src/os/bluestore/NVMEDevice.cc

index 355d38955ead6cf7e4f9b8ca3a8e2f06f7767e23..ed849e69ae597783afa120de6dce82da73274f06 100644 (file)
@@ -534,10 +534,7 @@ void io_complete(void *t, const struct spdk_nvme_cpl *completion)
       // check waiting count before doing callback (which may
       // destroy this ioc).
       if (!--ctx->num_running) {
-        if (ctx->num_waiting.load()) {
-          std::unique_lock<std::mutex> l(ctx->lock);
-          ctx->cond.notify_all();
-        }
+        ctx->aio_wake();
         if (task->device->aio_callback && ctx->priv) {
           task->device->aio_callback(task->device->aio_callback_priv, ctx->priv);
         }
@@ -795,6 +792,7 @@ int NVMEDevice::aio_zero(
     t->offset = off;
     t->len = len;
     t->device = this;
+    t->buf = nullptr;
 
     t->ctx = ioc;
     Task *first = static_cast<Task*>(ioc->nvme_task_first);