From: Radoslaw Zarzynski Date: Fri, 21 Dec 2018 11:22:20 +0000 (+0100) Subject: os/bluestore: KernelDevice::read() does the EIO mapping now. X-Git-Tag: v14.1.0~535^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=a1e0ece7f987c7a563b25ec0d02fc6f8445ef54e;p=ceph.git os/bluestore: KernelDevice::read() does the EIO mapping now. Fixes: http://tracker.ceph.com/issues/36455 Signed-off-by: Radoslaw Zarzynski --- diff --git a/src/os/bluestore/KernelDevice.cc b/src/os/bluestore/KernelDevice.cc index 0cb62627e51a..a0f1d7c36828 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);