From 1b63b0f496433adcc8756d3e839f4d9e5ad8af1a Mon Sep 17 00:00:00 2001 From: Yan Jun Date: Fri, 27 Mar 2020 09:49:05 +0800 Subject: [PATCH] osd/PrimaryLogPG: fix SPARSE_READ stat 22960192 use readv to reimplement SPARSE_READ, however it is still using total_read to accumulate total bytes it reads from bluestore, which is always zero in code. Fix by dropping the redundant local total_read counter. By definition objects_readv_sync should return the correct bytes it has read. Use that instead. Signed-off-by: Yan Jun (cherry picked from commit 528fb95326e76518e93fe43274f7a8e86049851d) --- src/osd/PrimaryLogPG.cc | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/osd/PrimaryLogPG.cc b/src/osd/PrimaryLogPG.cc index 5332703ba33bc..a16ba09eb22d1 100644 --- a/src/osd/PrimaryLogPG.cc +++ b/src/osd/PrimaryLogPG.cc @@ -5591,7 +5591,6 @@ int PrimaryLogPG::do_sparse_read(OpContext *ctx, OSDOp& osd_op) { } else { // read into a buffer map m; - uint32_t total_read = 0; int r = osd->store->fiemap(ch, ghobject_t(soid, ghobject_t::NO_GEN, info.pgid.shard), op.extent.offset, op.extent.length, m); @@ -5626,7 +5625,7 @@ int PrimaryLogPG::do_sparse_read(OpContext *ctx, OSDOp& osd_op) { } } - op.extent.length = total_read; + op.extent.length = r; encode(m, osd_op.outdata); // re-encode since it might be modified ::encode_destructively(data_bl, osd_op.outdata); -- 2.39.5