]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
os/bluestore: KernelDevice::read() does the EIO mapping now.
authorRadoslaw Zarzynski <rzarzyns@redhat.com>
Fri, 21 Dec 2018 11:22:20 +0000 (12:22 +0100)
committerRadoslaw Zarzynski <rzarzyns@redhat.com>
Fri, 21 Dec 2018 15:09:09 +0000 (16:09 +0100)
Fixes: http://tracker.ceph.com/issues/36455
Signed-off-by: Radoslaw Zarzynski <rzarzyns@redhat.com>
src/os/bluestore/KernelDevice.cc

index 0cb62627e51aa16bf67a51f95327530ad318dc9a..a0f1d7c368287fdff630b23c9e436f26432574bb 100644 (file)
@@ -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);