]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
ceph: simplify two mount_timeout sites
authorIlya Dryomov <idryomov@gmail.com>
Tue, 19 May 2015 09:05:38 +0000 (12:05 +0300)
committerIlya Dryomov <idryomov@gmail.com>
Thu, 25 Jun 2015 08:49:29 +0000 (11:49 +0300)
No need to bifurcate wait now that we've got ceph_timeout_jiffies().

Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
Reviewed-by: Alex Elder <elder@linaro.org>
Reviewed-by: Yan, Zheng <zyan@redhat.com>
fs/ceph/dir.c
fs/ceph/mds_client.c

index 173dd4b58c71d4f6b6cfd0c2adb625c6c25dd63e..3dec27e36417e86913eb0a58a4363d8457082b80 100644 (file)
@@ -1257,17 +1257,11 @@ static int ceph_dir_fsync(struct file *file, loff_t start, loff_t end,
 
                dout("dir_fsync %p wait on tid %llu (until %llu)\n",
                     inode, req->r_tid, last_tid);
-               if (req->r_timeout) {
-                       unsigned long time_left = wait_for_completion_timeout(
-                                       &req->r_safe_completion,
+               ret = !wait_for_completion_timeout(&req->r_safe_completion,
                                        ceph_timeout_jiffies(req->r_timeout));
-                       if (time_left > 0)
-                               ret = 0;
-                       else
-                               ret = -EIO;  /* timed out */
-               } else {
-                       wait_for_completion(&req->r_safe_completion);
-               }
+               if (ret)
+                       ret = -EIO;  /* timed out */
+
                ceph_mdsc_put_request(req);
 
                spin_lock(&ci->i_unsafe_lock);
index 0b0e0a9a81c09959d2e4e21f3bb1791ae11b8be8..5be2d287a26c63cf5f465ba90082f1a8a32bea33 100644 (file)
@@ -2266,16 +2266,18 @@ int ceph_mdsc_do_request(struct ceph_mds_client *mdsc,
        /* wait */
        mutex_unlock(&mdsc->mutex);
        dout("do_request waiting\n");
-       if (req->r_timeout) {
-               err = (long)wait_for_completion_killable_timeout(
-                                       &req->r_completion,
-                                       ceph_timeout_jiffies(req->r_timeout));
-               if (err == 0)
-                       err = -EIO;
-       } else if (req->r_wait_for_completion) {
+       if (!req->r_timeout && req->r_wait_for_completion) {
                err = req->r_wait_for_completion(mdsc, req);
        } else {
-               err = wait_for_completion_killable(&req->r_completion);
+               long timeleft = wait_for_completion_killable_timeout(
+                                       &req->r_completion,
+                                       ceph_timeout_jiffies(req->r_timeout));
+               if (timeleft > 0)
+                       err = 0;
+               else if (!timeleft)
+                       err = -EIO;  /* timed out */
+               else
+                       err = timeleft;  /* killed */
        }
        dout("do_request waited, got %d\n", err);
        mutex_lock(&mdsc->mutex);