Objecter doesn't want it, librbd will.
Signed-off-by: Sage Weil <sage@inktank.com>
}
}
- 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())
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);
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]);