]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
os/bluestore: remove aio_zero from BlockDevice interface 9465/head
authorSage Weil <sage@redhat.com>
Thu, 2 Jun 2016 18:34:10 +0000 (14:34 -0400)
committerSage Weil <sage@redhat.com>
Thu, 2 Jun 2016 18:35:09 +0000 (14:35 -0400)
No users.  Not needed.

Signed-off-by: Sage Weil <sage@redhat.com>
src/os/bluestore/BlockDevice.h
src/os/bluestore/KernelDevice.cc
src/os/bluestore/KernelDevice.h
src/os/bluestore/NVMEDevice.cc
src/os/bluestore/NVMEDevice.h

index 07380d8634eb3a78706003846bddca872c18c5d8..6ccc79dc9d5ef76c858be2244530c38774b2b25b 100644 (file)
@@ -97,7 +97,6 @@ public:
 
   virtual int aio_write(uint64_t off, bufferlist& bl,
                IOContext *ioc, bool buffered) = 0;
-  virtual int aio_zero(uint64_t off, uint64_t len, IOContext *ioc) = 0;
   virtual int flush() = 0;
 
   void queue_reap_ioc(IOContext *ioc);
index 6f35d9870a51d52f4329c9511e718c8190eb82b8..5e4d563a29cc5d53ff78588bc68d683a861c2777 100644 (file)
@@ -457,31 +457,6 @@ int KernelDevice::aio_write(
   return 0;
 }
 
-int KernelDevice::aio_zero(
-  uint64_t off,
-  uint64_t len,
-  IOContext *ioc)
-{
-  dout(5) << __func__ << " 0x" << std::hex << off << "~" << len << std::dec
-         << dendl;
-  assert(off % block_size == 0);
-  assert(len % block_size == 0);
-  assert(len > 0);
-  assert(off < size);
-  assert(off + len <= size);
-
-  bufferlist bl;
-  while (len > 0) {
-    bufferlist t;
-    t.append(zeros, 0, MIN(zeros.length(), len));
-    len -= t.length();
-    bl.claim_append(t);
-  }
-  // note: this works with aio only becaues the actual buffer is
-  // this->zeros, which is page-aligned and never freed.
-  return aio_write(off, bl, ioc, false);
-}
-
 int KernelDevice::read(uint64_t off, uint64_t len, bufferlist *pbl,
                      IOContext *ioc,
                      bool buffered)
index 4ced2022d1c576906416dadcc46e9c5f661e1d39..0a1cc36a7af822edaa1104397c36f62b0634ef35 100644 (file)
@@ -82,8 +82,6 @@ public:
   int aio_write(uint64_t off, bufferlist& bl,
                IOContext *ioc,
                bool buffered) override;
-  int aio_zero(uint64_t off, uint64_t len,
-              IOContext *ioc) override;
   int flush() override;
 
   // for managing buffered readers/writers
index 871d624b6df77f71cebb5751733f3b6c2872893f..71667549f047abc5fed633f56d718d3b151cf584 100644 (file)
@@ -63,11 +63,9 @@ static constexpr uint16_t inline_segment_num = 32;
 enum {
   l_bluestore_nvmedevice_first = 632430,
   l_bluestore_nvmedevice_aio_write_lat,
-  l_bluestore_nvmedevice_aio_zero_lat,
   l_bluestore_nvmedevice_read_lat,
   l_bluestore_nvmedevice_flush_lat,
   l_bluestore_nvmedevice_aio_write_queue_lat,
-  l_bluestore_nvmedevice_aio_zero_queue_lat,
   l_bluestore_nvmedevice_read_queue_lat,
   l_bluestore_nvmedevice_flush_queue_lat,
   l_bluestore_nvmedevice_queue_ops,
@@ -210,13 +208,11 @@ class SharedDriverData {
     PerfCountersBuilder b(g_ceph_context, string("NVMEDevice-AIOThread-"+stringify(this)),
                           l_bluestore_nvmedevice_first, l_bluestore_nvmedevice_last);
     b.add_time_avg(l_bluestore_nvmedevice_aio_write_lat, "aio_write_lat", "Average write completing latency");
-    b.add_time_avg(l_bluestore_nvmedevice_aio_zero_lat, "aio_zero_lat", "Average zero completing latency");
     b.add_time_avg(l_bluestore_nvmedevice_read_lat, "read_lat", "Average read completing latency");
     b.add_time_avg(l_bluestore_nvmedevice_flush_lat, "flush_lat", "Average flush completing latency");
     b.add_u64(l_bluestore_nvmedevice_queue_ops, "queue_ops", "Operations in nvme queue");
     b.add_time_avg(l_bluestore_nvmedevice_polling_lat, "polling_lat", "Average polling latency");
     b.add_time_avg(l_bluestore_nvmedevice_aio_write_queue_lat, "aio_write_queue_lat", "Average queue write request latency");
-    b.add_time_avg(l_bluestore_nvmedevice_aio_zero_queue_lat, "aio_zero_queue_lat", "Average queue zero request latency");
     b.add_time_avg(l_bluestore_nvmedevice_read_queue_lat, "read_queue_lat", "Average queue read request latency");
     b.add_time_avg(l_bluestore_nvmedevice_flush_queue_lat, "flush_queue_lat", "Average queue flush request latency");
     b.add_u64_counter(l_bluestore_nvmedevice_buffer_alloc_failed, "buffer_alloc_failed", "Alloc data buffer failed count");
@@ -432,22 +428,6 @@ void SharedDriverData::_aio_thread()
           logger->tinc(l_bluestore_nvmedevice_aio_write_queue_lat, dur);
           break;
         }
-        case IOCommand::ZERO_COMMAND:
-        {
-          dout(20) << __func__ << " zero command issued " << lba_off << "~" << lba_count << dendl;
-          assert(zero_command_support);
-          r = spdk_nvme_ns_cmd_write_zeroes(ns, lba_off, lba_count, io_complete, t, 0);
-          if (r < 0) {
-            t->ctx->nvme_task_first = t->ctx->nvme_task_last = nullptr;
-            delete t;
-            derr << __func__ << " failed to do zero command" << dendl;
-            assert(0);
-          }
-          cur = ceph::coarse_real_clock::now(g_ceph_context);
-          auto dur = std::chrono::duration_cast<std::chrono::nanoseconds>(cur - start);
-          logger->tinc(l_bluestore_nvmedevice_aio_zero_queue_lat, dur);
-          break;
-        }
         case IOCommand::READ_COMMAND:
         {
           dout(20) << __func__ << " read command issueed " << lba_off << "~" << lba_count << dendl;
@@ -732,12 +712,8 @@ void io_complete(void *t, const struct spdk_nvme_cpl *completion)
   ++driver->completed_op_seq;
   auto dur = std::chrono::duration_cast<std::chrono::nanoseconds>(
       ceph::coarse_real_clock::now(g_ceph_context) - task->start);
-  if (task->command == IOCommand::WRITE_COMMAND ||
-      task->command == IOCommand::ZERO_COMMAND) {
-    if (task->command == IOCommand::WRITE_COMMAND)
-      driver->logger->tinc(l_bluestore_nvmedevice_aio_write_lat, dur);
-    else
-      driver->logger->tinc(l_bluestore_nvmedevice_aio_zero_lat, dur);
+  if (task->command == IOCommand::WRITE_COMMAND) {
+    driver->logger->tinc(l_bluestore_nvmedevice_aio_write_lat, dur);
     assert(!spdk_nvme_cpl_is_error(completion));
     dout(20) << __func__ << " write/zero op successfully, left "
              << driver->queue_op_seq - driver->completed_op_seq << dendl;
@@ -923,46 +899,6 @@ int NVMEDevice::aio_write(
   return 0;
 }
 
-int NVMEDevice::aio_zero(
-    uint64_t off,
-    uint64_t len,
-    IOContext *ioc)
-{
-  dout(5) << __func__ << " " << off << "~" << len << dendl;
-  assert(off % block_size == 0);
-  assert(len % block_size == 0);
-  assert(len > 0);
-  assert(off < size);
-  assert(off + len <= size);
-
-  if (driver->zero_command_support) {
-    Task *t = new Task(this, IOCommand::ZERO_COMMAND, off, len);
-    t->ctx = ioc;
-    Task *first = static_cast<Task*>(ioc->nvme_task_first);
-    Task *last = static_cast<Task*>(ioc->nvme_task_last);
-    if (last)
-      last->next = t;
-    if (!first)
-      ioc->nvme_task_first = t;
-    ioc->nvme_task_last = t;
-    ++ioc->num_pending;
-  } else {
-    assert(zeros.length());
-    bufferlist bl;
-    while (len > 0) {
-      bufferlist t;
-      t.append(zeros, 0, MIN(zeros.length(), len));
-      len -= t.length();
-      bl.claim_append(t);
-    }
-    // note: this works with aio only becaues the actual buffer is
-    // this->zeros, which is page-aligned and never freed.
-    return aio_write(off, bl, ioc, false);
-  }
-
-  return 0;
-}
-
 int NVMEDevice::read(uint64_t off, uint64_t len, bufferlist *pbl,
                      IOContext *ioc,
                      bool buffered)
index 7d654e52eee3f71891198bfbd86fef5b0393e3a4..62294def241d23c46d130beb9f60990967a66bd3 100644 (file)
@@ -35,7 +35,6 @@
 enum class IOCommand {
   READ_COMMAND,
   WRITE_COMMAND,
-  ZERO_COMMAND,
   FLUSH_COMMAND
 };
 
@@ -228,8 +227,6 @@ class NVMEDevice : public BlockDevice {
   int aio_write(uint64_t off, bufferlist& bl,
                 IOContext *ioc,
                 bool buffered) override;
-  int aio_zero(uint64_t off, uint64_t len,
-               IOContext *ioc) override;
   int flush() override;
   int read_buffered(uint64_t off, uint64_t len, char *buf) override;