From: Mykola Golub Date: Tue, 7 May 2019 05:37:52 +0000 (+0100) Subject: osdc/striper: make possible to assemble sparse read result X-Git-Tag: v15.1.0~2678^2~4 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=5f0c2c434fdaa0d8e2a1895b03f063f86deb84d8;p=ceph.git osdc/striper: make possible to assemble sparse read result Signed-off-by: Mykola Golub --- diff --git a/src/osdc/Striper.cc b/src/osdc/Striper.cc index 91c8e05f767a..2eff69b38cba 100644 --- a/src/osdc/Striper.cc +++ b/src/osdc/Striper.cc @@ -402,3 +402,18 @@ void Striper::StripedReadResult::assemble_result(CephContext *cct, char *buffer, ceph_assert(curr == 0); } +void Striper::StripedReadResult::assemble_result( + CephContext *cct, std::map *extent_map, + bufferlist *bl) +{ + ldout(cct, 10) << "assemble_result(" << this << ")" << dendl; + for (auto& p : partial) { + uint64_t off = p.first; + uint64_t len = p.second.first.length(); + if (len > 0) { + (*extent_map)[off] = len; + bl->claim_append(p.second.first); + } + } + partial.clear(); +} diff --git a/src/osdc/Striper.h b/src/osdc/Striper.h index f7f9b6727f31..12278e1f0642 100644 --- a/src/osdc/Striper.h +++ b/src/osdc/Striper.h @@ -104,6 +104,10 @@ class CephContext; * @len the length of buffer */ void assemble_result(CephContext *cct, char *buffer, size_t len); + + void assemble_result(CephContext *cct, + std::map *extent_map, + ceph::buffer::list *bl); }; };