]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
os/bluestore: KernelDevice::read() does the EIO mapping now. 25854/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:36:11 +0000 (10:06 +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 00290aed87feb4eb07a1fb4adee306a27e8c206f..4d7db11210d369f6fb20dea48913d03efc7cdac2 100644 (file)
@@ -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);