]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
os/bluestore: KernelDevice::read() does the EIO mapping now. 25855/head
authorRadoslaw Zarzynski <rzarzyns@redhat.com>
Fri, 21 Dec 2018 11:22:20 +0000 (12:22 +0100)
committerAshish Singh <assingh@redhat.com>
Wed, 9 Jan 2019 04:46:25 +0000 (10:16 +0530)
Fixes: http://tracker.ceph.com/issues/36455
Signed-off-by: Radoslaw Zarzynski <rzarzyns@redhat.com>
(cherry picked from commit a1e0ece7f987c7a563b25ec0d02fc6f8445ef54e)

src/os/bluestore/KernelDevice.cc

index e587491332716710de24099c730ae59b3c2d16fd..124a29bbdbcfd2821148a3c75aefd16ec9a62f6d 100644 (file)
@@ -697,7 +697,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;
   }
   assert((uint64_t)r == len);