From 6ee6648ffab3d76d3e0263c46dfe9179aedca4cb 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 (cherry picked from commit a1e0ece7f987c7a563b25ec0d02fc6f8445ef54e) --- 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 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); -- 2.47.3