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: v13.2.5~117^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=refs%2Fpull%2F25854%2Fhead;p=ceph.git os/bluestore: KernelDevice::read() does the EIO mapping now. Fixes: http://tracker.ceph.com/issues/36455 Signed-off-by: Radoslaw Zarzynski (cherry picked from commit a1e0ece7f987c7a563b25ec0d02fc6f8445ef54e) --- diff --git a/src/os/bluestore/KernelDevice.cc b/src/os/bluestore/KernelDevice.cc index 00290aed87fe..4d7db11210d3 100644 --- a/src/os/bluestore/KernelDevice.cc +++ b/src/os/bluestore/KernelDevice.cc @@ -815,7 +815,11 @@ int KernelDevice::read(uint64_t off, uint64_t len, bufferlist *pbl, int r = ::pread(buffered ? fd_buffered : fd_direct, 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);