From: Haomai Wang Date: Sun, 7 Feb 2016 06:46:51 +0000 (+0800) Subject: NVMEDevice: cleanup task iterator process X-Git-Tag: v10.1.0~347^2~10 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=398e331ea92a244a4f67b84cf06b603f0d1cdb55;p=ceph.git NVMEDevice: cleanup task iterator process Signed-off-by: Haomai Wang --- diff --git a/src/os/bluestore/NVMEDevice.cc b/src/os/bluestore/NVMEDevice.cc index 69712e2e7b7b..48eee088d1b4 100644 --- a/src/os/bluestore/NVMEDevice.cc +++ b/src/os/bluestore/NVMEDevice.cc @@ -259,27 +259,24 @@ void SharedDriverData::_aio_thread() } } - if (t) { + for (; t; t = t->next) { switch (t->command) { case IOCommand::WRITE_COMMAND: { - while (t) { - lba_off = t->offset / block_size; - lba_count = t->len / block_size; - dout(20) << __func__ << " write command issued " << lba_off << "~" << lba_count << dendl; - r = nvme_ns_cmd_write(ns, t->buf, lba_off, lba_count, io_complete, t, 0); - if (r < 0) { - t->ctx->nvme_task_first = t->ctx->nvme_task_last = nullptr; - rte_free(t->buf); - rte_mempool_put(task_pool, t); - derr << __func__ << " failed to do write command" << dendl; - assert(0); - } - lat = ceph_clock_now(g_ceph_context); - lat -= t->start; - logger->tinc(l_bluestore_nvmedevice_aio_write_queue_lat, lat); - t = t->next; + lba_off = t->offset / block_size; + lba_count = t->len / block_size; + dout(20) << __func__ << " write command issued " << lba_off << "~" << lba_count << dendl; + r = nvme_ns_cmd_write(ns, t->buf, lba_off, lba_count, io_complete, t, 0); + if (r < 0) { + t->ctx->nvme_task_first = t->ctx->nvme_task_last = nullptr; + rte_free(t->buf); + rte_mempool_put(task_pool, t); + derr << __func__ << " failed to do write command" << dendl; + assert(0); } + lat = ceph_clock_now(g_ceph_context); + lat -= t->start; + logger->tinc(l_bluestore_nvmedevice_aio_write_queue_lat, lat); break; } case IOCommand::READ_COMMAND: @@ -318,7 +315,8 @@ void SharedDriverData::_aio_thread() break; } } - } else if (inflight_ops.read()) { + } + if (inflight_ops.read()) { nvme_ctrlr_process_io_completions(ctrlr, max); dout(30) << __func__ << " idle, have a pause" << dendl; #ifdef HAVE_SSE