From: Samuel Just Date: Mon, 1 Apr 2013 23:11:44 +0000 (-0700) Subject: PG: _scan_list can now handle EIO on read, stat, get_omap_header X-Git-Tag: v0.62~113^2~2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=40070cef3f8233d0287dbe5ec18c15a2001d1b0e;p=ceph.git PG: _scan_list can now handle EIO on read, stat, get_omap_header Signed-off-by: Samuel Just --- diff --git a/src/osd/PG.cc b/src/osd/PG.cc index a66bb3a75e95..6ad0769518f5 100644 --- a/src/osd/PG.cc +++ b/src/osd/PG.cc @@ -3135,7 +3135,7 @@ void PG::_scan_list(ScrubMap &map, vector &ls, bool deep) hobject_t poid = *p; struct stat st; - int r = osd->store->stat(coll, poid, &st); + int r = osd->store->stat(coll, poid, &st, true); if (r == 0) { ScrubMap::object &o = map.objects[poid]; o.size = st.st_size; @@ -3149,7 +3149,8 @@ void PG::_scan_list(ScrubMap &map, vector &ls, bool deep) int r; __u64 pos = 0; while ( (r = osd->store->read(coll, poid, pos, - g_conf->osd_deep_scrub_stride, bl)) > 0) { + g_conf->osd_deep_scrub_stride, bl, + true)) > 0) { h << bl; pos += bl.length(); bl.clear(); @@ -3163,7 +3164,7 @@ void PG::_scan_list(ScrubMap &map, vector &ls, bool deep) o.digest_present = true; bl.clear(); - r = osd->store->omap_get_header(coll, poid, &hdrbl); + r = osd->store->omap_get_header(coll, poid, &hdrbl, true); if (r == 0) { dout(25) << "CRC header " << string(hdrbl.c_str(), hdrbl.length()) << dendl;