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: v14.0.1~670^2~1 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=48d7448d72834810cf13eca1425e0cf0e8570c7a;p=ceph-ci.git osd: do_read(): Use actual bytes read to determine if CRC can be checked Signed-off-by: David Zafman --- diff --git a/src/osd/PrimaryLogPG.cc b/src/osd/PrimaryLogPG.cc index a7e9592109a..fc63d2a60b2 100644 --- a/src/osd/PrimaryLogPG.cc +++ b/src/osd/PrimaryLogPG.cc @@ -5431,7 +5431,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 (r >= 0 && op.extent.length == oi.size && oi.is_data_digest()) { + if (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