From: Olga Kornievskaia <aglo@umich.edu>
To: Trond Myklebust <trond.myklebust@primarydata.com>
Cc: linux-nfs <linux-nfs@vger.kernel.org>
Subject: Re: [PATCH 1/2] NFSv4.1: Handle NFS4ERR_BADSESSION/NFS4ERR_DEADSESSION replies to OP_SEQUENCE
Date: Wed, 15 Feb 2017 15:16:37 -0500 [thread overview]
Message-ID: <CAN-5tyGN4AT70mrVKoW652hQmbDocG7_c2haDC=PKpixQsUDJg@mail.gmail.com> (raw)
In-Reply-To: <20161205004023.40957-1-trond.myklebust@primarydata.com>
On Sun, Dec 4, 2016 at 7:40 PM, Trond Myklebust
<trond.myklebust@primarydata.com> wrote:
> In the case where SEQUENCE receives a NFS4ERR_BADSESSION or
> NFS4ERR_DEADSESSION error, we just want to report the session as needing
> recovery, and then we want to retry the operation.
>
> Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
> ---
> fs/nfs/nfs4proc.c | 4 ++++
> 1 file changed, 4 insertions(+)
>
> diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c
> index f992281c9b29..4fd0e2b7b08e 100644
> --- a/fs/nfs/nfs4proc.c
> +++ b/fs/nfs/nfs4proc.c
> @@ -816,6 +816,10 @@ static int nfs41_sequence_process(struct rpc_task *task,
> case -NFS4ERR_SEQ_FALSE_RETRY:
> ++slot->seq_nr;
> goto retry_nowait;
> + case -NFS4ERR_DEADSESSION:
> + case -NFS4ERR_BADSESSION:
> + nfs4_schedule_session_recovery(session, res->sr_status);
> + goto retry_nowait;
> default:
> /* Just update the slot sequence no. */
> slot->seq_done = 1;
> --
> 2.9.3
Hi Trond,
Can you explain the implications of retrying the operation without
waiting for recovery to complete?
This patch introduces regression in intra COPY failing if the server
rebooted during that operation. What happens is that COPY is re-sent
with the same stateid from the old open instead of the open that was
done from the recovery (leading to BAD_STATEID error and failure).
I wonder if it's because COPY is written to just use nfs4_call_sync()
instead of defining rpc_callback_ops to handle rpc_prepare() where a
new stateid could be gotten? I have re-written the COPY to do that and
I no longer see that problem.
If my suspicion is correct, it would help for the future to know that
any operations that use stateid must have rpc callback ops
defined/used so that they avoid this problem. Perhaps as a comment in
the code or maybe some other way?
Thanks.
next prev parent reply other threads:[~2017-02-15 20:16 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-12-05 0:40 [PATCH 1/2] NFSv4.1: Handle NFS4ERR_BADSESSION/NFS4ERR_DEADSESSION replies to OP_SEQUENCE Trond Myklebust
2016-12-05 0:40 ` [PATCH 2/2] NFSv4.1: Don't schedule lease recovery in nfs4_schedule_session_recovery() Trond Myklebust
2017-02-15 20:16 ` Olga Kornievskaia [this message]
2017-02-15 20:48 ` [PATCH 1/2] NFSv4.1: Handle NFS4ERR_BADSESSION/NFS4ERR_DEADSESSION replies to OP_SEQUENCE Trond Myklebust
2017-02-15 21:56 ` Olga Kornievskaia
2017-02-15 22:23 ` Trond Myklebust
2017-02-16 14:16 ` Olga Kornievskaia
2017-02-16 16:04 ` Olga Kornievskaia
2017-02-16 16:12 ` Olga Kornievskaia
2017-02-16 21:45 ` Trond Myklebust
2017-02-16 22:14 ` Olga Kornievskaia
2017-02-16 23:28 ` Trond Myklebust
2017-02-17 14:46 ` Olga Kornievskaia
2017-02-17 14:58 ` Trond Myklebust
2017-02-17 15:07 ` Olga Kornievskaia
2017-02-17 15:22 ` Olga Kornievskaia
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to='CAN-5tyGN4AT70mrVKoW652hQmbDocG7_c2haDC=PKpixQsUDJg@mail.gmail.com' \
--to=aglo@umich.edu \
--cc=linux-nfs@vger.kernel.org \
--cc=trond.myklebust@primarydata.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).