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