]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
osd: do_read(): Use actual bytes read to determine if CRC can be checked
authorDavid Zafman <dzafman@redhat.com>
Thu, 2 Aug 2018 00:14:59 +0000 (17:14 -0700)
committerDavid Zafman <dzafman@redhat.com>
Thu, 2 Aug 2018 03:10:09 +0000 (20:10 -0700)
Signed-off-by: David Zafman <dzafman@redhat.com>
src/osd/PrimaryLogPG.cc

index a7e9592109a597d89cbe9e5a92c227a23f365e91..fc63d2a60b2db4ac3cc5a9d25d568808bf5ab4b0 100644 (file)
@@ -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