From: Samuel Just Date: Fri, 8 Apr 2022 09:20:49 +0000 (-0700) Subject: crimson/os/seastore/object_data_handler: don't return empty buffers from split_pin* X-Git-Tag: v18.0.0~1076^2~1 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=88319b475f5d09b2dee2c31f326b11f89dac7771;p=ceph.git crimson/os/seastore/object_data_handler: don't return empty buffers from split_pin* Always return std::nullopt rather than an empty buffer -- this way users can rely on this as an invariant. Signed-off-by: Samuel Just --- diff --git a/src/crimson/os/seastore/object_data_handler.cc b/src/crimson/os/seastore/object_data_handler.cc index fb50b633e87..228360e3e08 100644 --- a/src/crimson/os/seastore/object_data_handler.cc +++ b/src/crimson/os/seastore/object_data_handler.cc @@ -177,7 +177,10 @@ split_ret split_pin_left(context_t ctx, LBAPinRef &pin, laddr_t offset) (zero_extent_len == 0 ? std::nullopt : std::make_optional(extent_to_write_t(pin_offset, zero_extent_len))), - bufferptr(ceph::buffer::create(zero_prepend_len, 0)) + (zero_prepend_len == 0 + ? std::nullopt + : std::make_optional( + bufferptr(ceph::buffer::create(zero_prepend_len, 0)))) ); } else { // Data, return up to offset to prepend @@ -213,7 +216,10 @@ split_ret split_pin_right(context_t ctx, LBAPinRef &pin, laddr_t end) (zero_extent_len == 0 ? std::nullopt : std::make_optional(extent_to_write_t(aligned_end, zero_extent_len))), - bufferptr(ceph::buffer::create(zero_suffix_len, 0)) + (zero_suffix_len == 0 + ? std::nullopt + : std::make_optional( + bufferptr(ceph::buffer::create(zero_suffix_len, 0)))) ); } else { return read_pin(ctx, pin->duplicate()