From 88319b475f5d09b2dee2c31f326b11f89dac7771 Mon Sep 17 00:00:00 2001 From: Samuel Just Date: Fri, 8 Apr 2022 02:20:49 -0700 Subject: [PATCH] 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 --- src/crimson/os/seastore/object_data_handler.cc | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/crimson/os/seastore/object_data_handler.cc b/src/crimson/os/seastore/object_data_handler.cc index fb50b633e8720..228360e3e0877 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() -- 2.39.5