ceph: return ETIMEDOUT errno to userland when request timed out
authorXiubo Li <xiubli@redhat.com>
Mon, 24 Feb 2020 03:23:11 +0000 (22:23 -0500)
committerIlya Dryomov <idryomov@gmail.com>
Mon, 30 Mar 2020 10:42:41 +0000 (12:42 +0200)
req->r_timeout is only used during mounting, so this error will
be more accurate.

URL: https://tracker.ceph.com/issues/44215
Signed-off-by: Xiubo Li <xiubli@redhat.com>
Reviewed-by: Jeff Layton <jlayton@kernel.org>
Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
fs/ceph/mds_client.c

index fab9d64..2da98b6 100644 (file)
@@ -2579,7 +2579,7 @@ static void __do_request(struct ceph_mds_client *mdsc,
        if (req->r_timeout &&
            time_after_eq(jiffies, req->r_started + req->r_timeout)) {
                dout("do_request timed out\n");
-               err = -EIO;
+               err = -ETIMEDOUT;
                goto finish;
        }
        if (READ_ONCE(mdsc->fsc->mount_state) == CEPH_MOUNT_SHUTDOWN) {
@@ -2753,7 +2753,7 @@ static int ceph_mdsc_wait_request(struct ceph_mds_client *mdsc,
                if (timeleft > 0)
                        err = 0;
                else if (!timeleft)
-                       err = -EIO;  /* timed out */
+                       err = -ETIMEDOUT;  /* timed out */
                else
                        err = timeleft;  /* killed */
        }