From: Amnon Hanuhov Date: Thu, 26 Nov 2020 15:32:46 +0000 (-0500) Subject: crimson/osd: Return ct_error::object_corrupted when getting an EIO from disk or due... X-Git-Tag: v17.1.0~3042^2~2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=20668770491541e560dd915ca1572325e48033c0;p=ceph.git crimson/osd: Return ct_error::object_corrupted when getting an EIO from disk or due to CRC mismatch Signed-off-by: Amnon Hanuhov --- diff --git a/src/crimson/osd/pg_backend.cc b/src/crimson/osd/pg_backend.cc index 4ba0a403ed1..7fa2f2e5e49 100644 --- a/src/crimson/osd/pg_backend.cc +++ b/src/crimson/osd/pg_backend.cc @@ -209,13 +209,17 @@ PGBackend::read(const ObjectState& os, OSDOp& osd_op) return _read(oi.soid, offset, length, op.flags).safe_then( [&oi, &osd_op](auto&& bl) -> read_errorator::future<> { if (!_read_verify_data(oi, bl)) { + // crc mismatches return crimson::ct_error::object_corrupted::make(); } logger().debug("read: data length: {}", bl.length()); osd_op.rval = bl.length(); osd_op.outdata = std::move(bl); return read_errorator::now(); - }); + }, crimson::ct_error::input_output_error::handle([] { + return read_errorator::future<>{crimson::ct_error::object_corrupted::make()}; + }), + read_errorator::pass_further{}); } PGBackend::read_errorator::future<> @@ -241,10 +245,13 @@ PGBackend::sparse_read(const ObjectState& os, OSDOp& osd_op) osd_op.op.extent.length, os.oi.soid); return read_errorator::make_ready_future<>(); } else { - // TODO: repair it if crc mismatches + // crc mismatches return crimson::ct_error::object_corrupted::make(); } - }); + }, crimson::ct_error::input_output_error::handle([] { + return read_errorator::future<>{crimson::ct_error::object_corrupted::make()}; + }), + read_errorator::pass_further{}); }); }); }