]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
src/bluestore/NVMEDevice: make all read use aio_submit 17655/head
authorZiye Yang <optimistyzy@gmail.com>
Mon, 11 Sep 2017 21:58:37 +0000 (05:58 +0800)
committerZiye Yang <optimistyzy@gmail.com>
Mon, 11 Sep 2017 23:55:21 +0000 (07:55 +0800)
Signed-off-by: Ziye Yang <optimistyzy@gmail.com>
Signed-off-by: Pan Liu <wanjun.lp@alibaba-inc.com>
src/os/bluestore/NVMEDevice.cc

index e72b81e61b07517078b21e49e317dd9ba3045e45..ca73d7444282399f83a96c2ca8094c804caef924 100644 (file)
@@ -842,14 +842,12 @@ void io_complete(void *t, const struct spdk_nvme_cpl *completion)
           task->device->aio_callback(task->device->aio_callback_priv, ctx->priv);
        }
       } else {
-       ctx->try_aio_wake();
+        ctx->try_aio_wake();
       }
       delete task;
     } else {
       task->return_code = 0;
-      if (!--ctx->num_running) {
-        task->io_wake();
-      }
+      ctx->try_aio_wake();
     }
   } else {
     assert(task->command == IOCommand::FLUSH_COMMAND);
@@ -1068,14 +1066,11 @@ int NVMEDevice::read(uint64_t off, uint64_t len, bufferlist *pbl,
     t->copy_to_buf(buf, 0, t->len);
   };
 
-  ++ioc->num_running;
-  if(queue_id == -1)
-    queue_id = ceph_gettid();
-  driver->get_queue(queue_id)->queue_task(t);
+  ++ioc->num_pending;
+  ioc->nvme_task_first = t;
+  aio_submit(ioc);
+  ioc->aio_wait();
 
-  while(t->return_code > 0) {
-    t->io_wait();
-  }
   pbl->push_back(std::move(p));
   r = t->return_code;
   delete t;
@@ -1130,14 +1125,12 @@ int NVMEDevice::read_random(uint64_t off, uint64_t len, char *buf, bool buffered
   t->fill_cb = [buf, t, off, len]() {
     t->copy_to_buf(buf, off-t->offset, len);
   };
-  ++ioc.num_running;
-  if(queue_id == -1)
-    queue_id = ceph_gettid();
-  driver->get_queue(queue_id)->queue_task(t);
 
-  while(t->return_code > 0) {
-    t->io_wait();
-  }
+  ++ioc.num_pending;
+  ioc.nvme_task_first = t;
+  aio_submit(&ioc);
+  ioc.aio_wait();
+
   r = t->return_code;
   delete t;
   return r;