If the requested write length does not match the provided bufferlist
length, disable the move optimization and instead fallback to creating
a new sub-bufferlist for the object request.
Fixes: https://tracker.ceph.com/issues/49173
Signed-off-by: Jason Dillaman <dillaman@redhat.com>
(cherry picked from commit
8dbb4a3d971d9a48c171f161f531956dd0030403)
I &image_ctx = this->m_image_ctx;
bufferlist bl;
- if (single_extent && object_extent.buffer_extents.size() == 1) {
+ if (single_extent && object_extent.buffer_extents.size() == 1 &&
+ m_bl.length() == object_extent.length) {
// optimization for single object/buffer extent writes
bl = std::move(m_bl);
} else {