From: David Zafman Date: Thu, 2 Aug 2018 00:14:59 +0000 (-0700) Subject: osd: do_read(): Use actual bytes read to determine if CRC can be checked X-Git-Tag: v13.2.2~101^2~1 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=925caf4bef7662c7d1da9e0a5b9589fba25b2895;p=ceph.git osd: do_read(): Use actual bytes read to determine if CRC can be checked Signed-off-by: David Zafman (cherry picked from commit 48d7448d72834810cf13eca1425e0cf0e8570c7a) Conflicts: src/osd/PrimaryLogPG.cc (trivial) --- diff --git a/src/osd/PrimaryLogPG.cc b/src/osd/PrimaryLogPG.cc index 4aa89555e4b6..65e9897cf06e 100644 --- a/src/osd/PrimaryLogPG.cc +++ b/src/osd/PrimaryLogPG.cc @@ -5439,8 +5439,8 @@ int PrimaryLogPG::do_read(OpContext *ctx, OSDOp& osd_op) { int r = pgbackend->objects_read_sync( soid, op.extent.offset, op.extent.length, op.flags, &osd_op.outdata); // whole object? can we verify the checksum? - if (!skip_data_digest && - r >= 0 && op.extent.length == oi.size && oi.is_data_digest()) { + if (!skip_data_digest && r >= 0 && op.extent.offset == 0 && + (uint64_t)r == oi.size && oi.is_data_digest()) { uint32_t crc = osd_op.outdata.crc32c(-1); if (oi.data_digest != crc) { osd->clog->error() << info.pgid << std::hex