]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
librbd: remove io::ReadResult::set_clip_length 37727/head
authorJason Dillaman <dillaman@redhat.com>
Tue, 20 Oct 2020 17:10:06 +0000 (13:10 -0400)
committerJason Dillaman <dillaman@redhat.com>
Tue, 20 Oct 2020 17:10:06 +0000 (13:10 -0400)
Combined the functionality with the newer 'set_image_extents' call
to simplify the call-site logic for IO reads.

Signed-off-by: Jason Dillaman <dillaman@redhat.com>
src/librbd/cache/WriteLogImageDispatch.cc
src/librbd/io/ImageRequest.cc
src/librbd/io/ReadResult.cc
src/librbd/io/ReadResult.h
src/librbd/io/Utils.cc
src/librbd/io/Utils.h

index 254eb431f5184ce7d075209a8b800714296a0b93..bf1831cbacfbd9891e3df2820dd4893aa0a27d9c 100644 (file)
@@ -63,8 +63,7 @@ bool WriteLogImageDispatch<I>::read(
 
   aio_comp->set_request_count(1);
   aio_comp->read_result = std::move(read_result);
-  uint64_t length = io::util::extents_length(image_extents);
-  aio_comp->read_result.set_clip_length(length);
+  aio_comp->read_result.set_image_extents(image_extents);
 
   auto *req_comp = new io::ReadResult::C_ImageReadRequest(
     aio_comp, image_extents);
@@ -218,7 +217,7 @@ bool WriteLogImageDispatch<I>::list_snaps(
 template <typename I>
 bool WriteLogImageDispatch<I>::preprocess_length(
     io::AioCompletion* aio_comp, io::Extents &image_extents) const {
-  auto total_bytes = io::util::extents_length(image_extents);
+  auto total_bytes = io::util::get_extents_length(image_extents);
   if (total_bytes == 0) {
     aio_comp->set_request_count(0);
     return true;
index 5f5ea4471ecb315d57060efc1d9743b34a19eefd..17b97f9edf870ca752f332d72c8e56a1239222b1 100644 (file)
@@ -403,7 +403,6 @@ void ImageReadRequest<I>::send_request() {
   }
 
   AioCompletion *aio_comp = this->m_aio_comp;
-  aio_comp->read_result.set_clip_length(buffer_ofs);
   aio_comp->read_result.set_image_extents(image_extents);
 
   // issue the requests
index 963d4c685accf4faaffabe05b01f5fe70305ed4f..d0a1e7e8294a311958569070f7199126f3fdaffc 100644 (file)
@@ -5,6 +5,7 @@
 #include "include/buffer.h"
 #include "common/dout.h"
 #include "librbd/io/AioCompletion.h"
+#include "librbd/io/Utils.h"
 #include <boost/variant/apply_visitor.hpp>
 #include <boost/variant/static_visitor.hpp>
 
 namespace librbd {
 namespace io {
 
-struct ReadResult::SetClipLengthVisitor : public boost::static_visitor<void> {
-  size_t length;
+struct ReadResult::SetImageExtentsVisitor : public boost::static_visitor<void> {
+  Extents image_extents;
 
-  explicit SetClipLengthVisitor(size_t length) : length(length) {
+  explicit SetImageExtentsVisitor(const Extents& image_extents)
+    : image_extents(image_extents) {
   }
 
   void operator()(Linear &linear) const {
+    uint64_t length = util::get_extents_length(image_extents);
+
     ceph_assert(length <= linear.buf_len);
     linear.buf_len = length;
   }
 
-  template <typename T>
-  void operator()(T &t) const {
-  }
-};
-
-struct ReadResult::SetImageExtentsVisitor : public boost::static_visitor<void> {
-  Extents image_extents;
-
-  explicit SetImageExtentsVisitor(const Extents& image_extents)
-    : image_extents(image_extents) {
-  }
-
   void operator()(SparseBufferlist &sbl) const {
     sbl.image_extents = image_extents;
   }
@@ -253,10 +245,6 @@ ReadResult::ReadResult(Extents* extent_map, ceph::bufferlist* bl)
   : m_buffer(SparseBufferlist(extent_map, bl)) {
 }
 
-void ReadResult::set_clip_length(size_t length) {
-  boost::apply_visitor(SetClipLengthVisitor(length), m_buffer);
-}
-
 void ReadResult::set_image_extents(const Extents& image_extents) {
   boost::apply_visitor(SetImageExtentsVisitor(image_extents), m_buffer);
 }
index 3a5b0d7bb37b60833e1ad0d815d3abf9999da2ba..69ced0c7b37601775bd02de586223c91f0be951d 100644 (file)
@@ -63,7 +63,6 @@ public:
   ReadResult(ceph::bufferlist *bl);
   ReadResult(Extents* extent_map, ceph::bufferlist* bl);
 
-  void set_clip_length(size_t length);
   void set_image_extents(const Extents& image_extents);
 
   void assemble_result(CephContext *cct);
@@ -112,7 +111,6 @@ private:
                          Vector,
                          Bufferlist,
                          SparseBufferlist> Buffer;
-  struct SetClipLengthVisitor;
   struct SetImageExtentsVisitor;
   struct AssembleResultVisitor;
 
index bc5f9644ff9e60c9972f1d459d309b9c37e792ae..bfb89cfecc37b97e6be1c6fce45b005e7fd6d069 100644 (file)
@@ -151,14 +151,6 @@ int clip_request(I *image_ctx, Extents *image_extents) {
   return 0;
 }
 
-uint64_t extents_length(Extents &extents) {
-  uint64_t total_bytes = 0;
-  for (auto& image_extent : extents) {
-    total_bytes += image_extent.second;
-  }
-  return total_bytes;
-}
-
 void unsparsify(CephContext* cct, ceph::bufferlist* bl,
                 const Extents& extent_map, uint64_t bl_off,
                 uint64_t out_bl_len) {
index c58649bb975dbdf389a48d930d814c5f9a7d21ad..d28786b2a3d79c139f2662b8a5e57d4574e09af2 100644 (file)
@@ -37,7 +37,13 @@ void read_parent(ImageCtxT *image_ctx, uint64_t object_no,
 template <typename ImageCtxT = librbd::ImageCtx>
 int clip_request(ImageCtxT *image_ctx, Extents *image_extents);
 
-uint64_t extents_length(Extents &extents);
+inline uint64_t get_extents_length(const Extents &extents) {
+  uint64_t total_bytes = 0;
+  for (auto [_, extent_length] : extents) {
+    total_bytes += extent_length;
+  }
+  return total_bytes;
+}
 
 void unsparsify(CephContext* cct, ceph::bufferlist* bl,
                 const Extents& extent_map, uint64_t bl_off,