Re: [PATCH 1/1] NFSv4.1 handle ERR_DELAY error reclaiming locking state on delegation recall

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Any comments on this patch? Thank you.

On Thu, Aug 20, 2020 at 6:50 PM Olga Kornievskaia
<olga.kornievskaia@xxxxxxxxx> wrote:
>
> From: Olga Kornievskaia <kolga@xxxxxxxxxx>
>
> A client should be able to handle getting an ERR_DELAY error
> while doing a LOCK call to reclaim state due to delegation being
> recalled. This is a transient error that can happen due to server
> moving its volumes and invalidating its file location cache and
> upon reference to it during the LOCK call needing to do an
> expensive lookup (leading to an ERR_DELAY error on a PUTFH).
>
> Signed-off-by: Olga Kornievskaia <kolga@xxxxxxxxxx>
> ---
>  fs/nfs/nfs4proc.c | 7 ++++++-
>  1 file changed, 6 insertions(+), 1 deletion(-)
>
> diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c
> index dbd01548335b..4a6cfb497103 100644
> --- a/fs/nfs/nfs4proc.c
> +++ b/fs/nfs/nfs4proc.c
> @@ -7298,7 +7298,12 @@ int nfs4_lock_delegation_recall(struct file_lock *fl, struct nfs4_state *state,
>         err = nfs4_set_lock_state(state, fl);
>         if (err != 0)
>                 return err;
> -       err = _nfs4_do_setlk(state, F_SETLK, fl, NFS_LOCK_NEW);
> +       do {
> +               err = _nfs4_do_setlk(state, F_SETLK, fl, NFS_LOCK_NEW);
> +               if (err != -NFS4ERR_DELAY)
> +                       break;
> +               ssleep(1);
> +       } while (err == -NFS4ERR_DELAY);
>         return nfs4_handle_delegation_recall_error(server, state, stateid, fl, err);
>  }
>
> --
> 2.18.1
>



[Index of Archives]     [Linux Filesystem Development]     [Linux USB Development]     [Linux Media Development]     [Video for Linux]     [Linux NILFS]     [Linux Audio Users]     [Yosemite Info]     [Linux SCSI]

  Powered by Linux