On 05/21/2015 07:35 AM, Ilya Dryomov wrote:
> - return -ETIMEDOUT instead of -EIO in case of timeout
> - wait_event_interruptible_timeout() returns time left until timeout
>   and since it can be almost LONG_MAX we had better assign it to long

Any error returned by wait_event_interruptible_timeout()
can now be returned by __ceph_open_session().  It looks
like that may, in fact, be only -EINTR and -ERESTARTSYS.
But it's a change you could note in the log message.

It turns out the only caller ignores the return value of
ceph_monc_wait_osdmap() anyway.  That should maybe be fixed.

In any case, this looks good.

Reviewed-by: Alex Elder <el...@linaro.org>

> Signed-off-by: Ilya Dryomov <idryo...@gmail.com>
> ---
>  net/ceph/ceph_common.c | 7 +++----
>  net/ceph/mon_client.c  | 2 +-
>  2 files changed, 4 insertions(+), 5 deletions(-)
> 
> diff --git a/net/ceph/ceph_common.c b/net/ceph/ceph_common.c
> index a80e91c2c9a3..925d0c890b80 100644
> --- a/net/ceph/ceph_common.c
> +++ b/net/ceph/ceph_common.c
> @@ -647,8 +647,8 @@ static int have_mon_and_osd_map(struct ceph_client 
> *client)
>   */
>  int __ceph_open_session(struct ceph_client *client, unsigned long started)
>  {
> -     int err;
>       unsigned long timeout = client->options->mount_timeout;
> +     long err;
>  
>       /* open session, and wait for mon and osd maps */
>       err = ceph_monc_open_session(&client->monc);
> @@ -656,16 +656,15 @@ int __ceph_open_session(struct ceph_client *client, 
> unsigned long started)
>               return err;
>  
>       while (!have_mon_and_osd_map(client)) {
> -             err = -EIO;
>               if (timeout && time_after_eq(jiffies, started + timeout))
> -                     return err;
> +                     return -ETIMEDOUT;
>  
>               /* wait */
>               dout("mount waiting for mon_map\n");
>               err = wait_event_interruptible_timeout(client->auth_wq,
>                       have_mon_and_osd_map(client) || (client->auth_err < 0),
>                       ceph_timeout_jiffies(timeout));
> -             if (err == -EINTR || err == -ERESTARTSYS)
> +             if (err < 0)
>                       return err;
>               if (client->auth_err < 0)
>                       return client->auth_err;
> diff --git a/net/ceph/mon_client.c b/net/ceph/mon_client.c
> index 0da3bdc116f7..9d6ff1215928 100644
> --- a/net/ceph/mon_client.c
> +++ b/net/ceph/mon_client.c
> @@ -308,7 +308,7 @@ int ceph_monc_wait_osdmap(struct ceph_mon_client *monc, 
> u32 epoch,
>                         unsigned long timeout)
>  {
>       unsigned long started = jiffies;
> -     int ret;
> +     long ret;
>  
>       mutex_lock(&monc->mutex);
>       while (monc->have_osdmap < epoch) {
> 

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

Reply via email to