From: Li Wang Date: Mon, 16 Nov 2015 04:15:54 +0000 (+0800) Subject: scrub: do not assign value if read error for ECBackend X-Git-Tag: v10.0.1~38^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=refs%2Fpull%2F6568%2Fhead;p=ceph.git scrub: do not assign value if read error for ECBackend Signed-off-by: Li Wang --- diff --git a/src/osd/ECBackend.cc b/src/osd/ECBackend.cc index 47e3b2f88773..a79ba096da6f 100644 --- a/src/osd/ECBackend.cc +++ b/src/osd/ECBackend.cc @@ -2088,6 +2088,7 @@ void ECBackend::be_deep_scrub( dout(0) << "_scan_list " << poid << " got " << r << " on read, read_error" << dendl; o.read_error = true; + return; } ECUtil::HashInfoRef hinfo = get_hash_info(poid, false); @@ -2095,15 +2096,18 @@ void ECBackend::be_deep_scrub( dout(0) << "_scan_list " << poid << " could not retrieve hash info" << dendl; o.read_error = true; o.digest_present = false; + return; } else { if (hinfo->get_chunk_hash(get_parent()->whoami_shard().shard) != h.digest()) { dout(0) << "_scan_list " << poid << " got incorrect hash on read" << dendl; o.read_error = true; + return; } if (hinfo->get_total_chunk_size() != pos) { dout(0) << "_scan_list " << poid << " got incorrect size on read" << dendl; o.read_error = true; + return; } /* We checked above that we match our own stored hash. We cannot