From: Ilya Dryomov Date: Tue, 13 Jan 2026 19:32:14 +0000 (+0100) Subject: osd/PrimaryLogPG: encode an empty data_bl for empty sparse reads X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=c694c35bbfce6e3033b34fe6994b40b00fad11d9;p=ceph.git osd/PrimaryLogPG: encode an empty data_bl for empty sparse reads Commit 0cf383da0741 ("ReplicatedPG: clamp SPARSE_READ to object size for ec pool") didn't handle the case of a sparse read that ends up being empty correctly: the OSD encodes only an empty extent map whereas clients (both userspace and kernel) also expect to see an empty data buffer. IOW the reply contains one 32-bit zero instead of the expected two. Fixes: https://tracker.ceph.com/issues/74394 Signed-off-by: Ilya Dryomov --- diff --git a/src/osd/PrimaryLogPG.cc b/src/osd/PrimaryLogPG.cc index b0f12f6925c..c5cb3308262 100644 --- a/src/osd/PrimaryLogPG.cc +++ b/src/osd/PrimaryLogPG.cc @@ -5991,6 +5991,8 @@ int PrimaryLogPG::do_sparse_read(OpContext *ctx, OSDOp& osd_op) { dout(10) << " sparse read ended up empty for " << soid << dendl; map extents; encode(extents, osd_op.outdata); + bufferlist data_bl; + encode(data_bl, osd_op.outdata); } } else { // read into a buffer