On 05/21/2015 07:35 AM, Ilya Dryomov wrote:
> No need to bifurcate wait now that we've got ceph_timeout_jiffies().

Looks good.

Reviewed-by: Alex Elder <[email protected]>

> Signed-off-by: Ilya Dryomov <[email protected]>
> ---
>  fs/ceph/dir.c        | 14 ++++----------
>  fs/ceph/mds_client.c | 18 ++++++++++--------
>  2 files changed, 14 insertions(+), 18 deletions(-)
> 
> diff --git a/fs/ceph/dir.c b/fs/ceph/dir.c
> index 173dd4b58c71..3dec27e36417 100644
> --- a/fs/ceph/dir.c
> +++ b/fs/ceph/dir.c
> @@ -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);
> diff --git a/fs/ceph/mds_client.c b/fs/ceph/mds_client.c
> index 0b0e0a9a81c0..5be2d287a26c 100644
> --- a/fs/ceph/mds_client.c
> +++ b/fs/ceph/mds_client.c
> @@ -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);
> 

--
To unsubscribe from this list: send the line "unsubscribe ceph-devel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to