From a1e0ece7f987c7a563b25ec0d02fc6f8445ef54e Mon Sep 17 00:00:00 2001 From: Radoslaw Zarzynski Date: Fri, 21 Dec 2018 12:22:20 +0100 Subject: [PATCH] os/bluestore: KernelDevice::read() does the EIO mapping now. Fixes: http://tracker.ceph.com/issues/36455 Signed-off-by: Radoslaw Zarzynski --- src/os/bluestore/KernelDevice.cc | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/os/bluestore/KernelDevice.cc b/src/os/bluestore/KernelDevice.cc index 0cb62627e51..a0f1d7c3682 100644 --- a/src/os/bluestore/KernelDevice.cc +++ b/src/os/bluestore/KernelDevice.cc @@ -851,7 +851,11 @@ int KernelDevice::read(uint64_t off, uint64_t len, bufferlist *pbl, int r = ::pread(buffered ? fd_buffereds[WRITE_LIFE_NOT_SET] : fd_directs[WRITE_LIFE_NOT_SET], p->c_str(), len, off); if (r < 0) { - r = -errno; + if (ioc->allow_eio && is_expected_ioerr(r)) { + r = -EIO; + } else { + r = -errno; + } goto out; } ceph_assert((uint64_t)r == len); -- 2.39.5