]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
filer: make tail zeroing in stripe result assembly optional
authorSage Weil <sage@inktank.com>
Tue, 2 Oct 2012 22:37:41 +0000 (15:37 -0700)
committerSage Weil <sage@inktank.com>
Mon, 15 Oct 2012 22:34:04 +0000 (15:34 -0700)
Objecter doesn't want it, librbd will.

Signed-off-by: Sage Weil <sage@inktank.com>
src/osdc/Filer.h
src/osdc/Objecter.cc

index 237f618458c8dfea5bd3eb85a4dd80379a6cec24..bd09a8eaecd88970169c6f4ff65a3895da41efa4 100644 (file)
@@ -143,7 +143,7 @@ class Filer {
       }
     }
 
-    void assemble_result(bufferlist& bl) {
+    void assemble_result(bufferlist& bl, bool zero_tail) {
       // go backwards, so that we can efficiently discard zeros
       map<uint64_t,pair<bufferlist,uint64_t> >::reverse_iterator p = partial.rbegin();
       if (p == partial.rend())
@@ -157,7 +157,7 @@ class Filer {
 
        size_t len = p->second.first.length();
        if (len < p->second.second) {
-         if (bl.length()) {
+         if (zero_tail || bl.length()) {
            bufferptr bp(p->second.second - p->second.first.length());
            bp.zero();
            bl.push_front(bp);
index a1f40c62fcf4952e02a910b75017e62302ba25b0..291013179a82e33afa102da4222647275cf4b4fd 100644 (file)
@@ -1875,7 +1875,7 @@ void Objecter::_sg_read_finish(vector<ObjectExtent>& extents, vector<bufferlist>
       r.add_partial_result(*bit, eit->buffer_extents);
     }
     bl->clear();
-    r.assemble_result(*bl);
+    r.assemble_result(*bl, false);
   } else {
     ldout(cct, 15) << "  only one frag" << dendl;
     bl->claim(resultbl[0]);