len = ROUND_UP_TO(len, write_alignment);
}
- auto& data = contents[new_obj].data;
- if (data.length() < offset + len) {
- data.append_zero(offset+len-data.length());
+ if (len > 0) {
+ auto& data = contents[new_obj].data;
+ if (data.length() < offset + len) {
+ data.append_zero(offset+len-data.length());
+ }
+ bufferlist n;
+ n.substr_of(data, 0, offset);
+ n.append_zero(len);
+ if (data.length() > offset + len)
+ data.copy(offset + len, data.length() - offset - len, n);
+ data.swap(n);
}
- bufferlist n;
- n.substr_of(data, 0, offset);
- n.append_zero(len);
- if (data.length() > offset + len)
- data.copy(offset + len, data.length() - offset - len, n);
- data.swap(n);
t.zero(cid, new_obj, offset, len);
++in_flight;