From: Trond Myklebust <Trond.Myklebust@netapp.com>
To: "Labiaga, Ricardo" <Ricardo.Labiaga@netapp.com>
Cc: "Adamson, Andy" <William.Adamson@netapp.com>, linux-nfs@vger.kernel.org
Subject: RE: [PATCH 0/12] Fix session reset deadlocks Version 4
Date: Sat, 05 Dec 2009 15:04:02 -0500 [thread overview]
Message-ID: <1260043442.2624.92.camel@localhost> (raw)
In-Reply-To: <273FE88A07F5D445824060902F70034408A1A330-hX7t0kiaRRpT+ZUat5FNkAK/GNPrWCqfQQ4Iyu8u01E@public.gmane.org>
On Fri, 2009-12-04 at 23:05 -0800, Labiaga, Ricardo wrote:
> I'm seeing a problem with the bits in the nfs-for-next branch when I run
> v4.1. If a bad session is received after a server reboot, the client
> issues a flood of sequence requests. The sequence RPCs contain the last
> sequenceID from the previous session with the new sessionID. This is
> repeated over and over until you ctrl-C the triggering process. The
> server replies with sequence misordered, but the client issues the exact
> same RPC over and over.
>
> Also to note is that right after the session is destroyed, the client
> will issue sequence requests with sessionID of 0 right before the create
> session succeeds.
That would indicate a bug in the NFS4CLNT_SESSION_DRAINING code.
OK. I think I see what it is...
Could you try this?
Cheers
Trond
----------------------------------------------------------------------------
NFSv41: nfs4_reset_session must always set NFS4CLNT_SESSION_DRAINING
From: Trond Myklebust <Trond.Myklebust@netapp.com>
Otherwise we have no guarantees that other processes won't start another
RPC call while we're resetting the session.
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
---
fs/nfs/nfs4state.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/fs/nfs/nfs4state.c b/fs/nfs/nfs4state.c
index a86f3ac..bc4ca6f 100644
--- a/fs/nfs/nfs4state.c
+++ b/fs/nfs/nfs4state.c
@@ -1211,8 +1211,8 @@ static int nfs4_reset_session(struct nfs_client *clp)
INIT_COMPLETION(ses->complete);
spin_lock(&tbl->slot_tbl_lock);
+ set_bit(NFS4CLNT_SESSION_DRAINING, &clp->cl_state);
if (tbl->highest_used_slotid != -1) {
- set_bit(NFS4CLNT_SESSION_DRAINING, &clp->cl_state);
spin_unlock(&tbl->slot_tbl_lock);
status = wait_for_completion_interruptible(&ses->complete);
if (status) /* -ERESTARTSYS */
next prev parent reply other threads:[~2009-12-05 20:10 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-12-04 20:25 [PATCH 0/12] Fix session reset deadlocks Version 4 andros
2009-12-04 20:25 ` [PATCH 01/11] nfs41: add create session into establish_clid andros
2009-12-04 20:25 ` [PATCH 02/11] nfs41: rename cl_state session SETUP bit to RESET andros
2009-12-04 20:25 ` [PATCH 03/11] nfs41: nfs4_get_lease_time will never session reset andros
2009-12-04 20:25 ` [PATCH 04/11] nfs41: call free slot from nfs4_restart_rpc andros
2009-12-04 20:25 ` [PATCH 05/11] nfs41: free the slot on unhandled read errors andros
2009-12-04 20:25 ` [PATCH 06/11] nfs41: fix switch in nfs4_handle_exception andros
2009-12-04 20:25 ` [PATCH 07/11] nfs41: fix switch in nfs4_recovery_handle_error andros
2009-12-04 20:25 ` [PATCH 08/11] nfs41: don't clear tk_action on success andros
2009-12-04 20:25 ` [PATCH 09/11] nfs41: remove nfs4_recover_session andros
2009-12-04 20:25 ` [PATCH 10/11] nfs41: nfs41: fix state manager deadlock in session reset andros
2009-12-04 20:25 ` [PATCH 11/11] nfs41: drain session cleanup andros
2009-12-04 20:25 ` [PATCH 12/12] nfs41: only state manager sets NFS4CLNT_SESSION_SETUP andros
2009-12-04 22:01 ` [PATCH 0/12] Fix session reset deadlocks Version 4 Trond Myklebust
2009-12-04 22:24 ` Trond Myklebust
2009-12-05 7:05 ` Labiaga, Ricardo
[not found] ` <273FE88A07F5D445824060902F70034408A1A330-hX7t0kiaRRpT+ZUat5FNkAK/GNPrWCqfQQ4Iyu8u01E@public.gmane.org>
2009-12-05 19:03 ` William A. (Andy) Adamson
[not found] ` <273FE88A07F5D445824060902F70034406371449@SACMVEXC1-PRD.hq.netapp.com>
[not found] ` <273FE88A07F5D445824060902F70034406371449-hX7t0kiaRRpT+ZUat5FNkAK/GNPrWCqfQQ4Iyu8u01E@public.gmane.org>
2009-12-05 20:06 ` Trond Myklebust
2009-12-05 20:04 ` Trond Myklebust [this message]
[not found] ` <273FE88A07F5D445824060902F7003440637144A@SACMVEXC1-PRD.hq.netapp.com>
[not found] ` <273FE88A07F5D445824060902F7003440637144A-hX7t0kiaRRpT+ZUat5FNkAK/GNPrWCqfQQ4Iyu8u01E@public.gmane.org>
2009-12-05 21:12 ` Trond Myklebust
2009-12-05 21:39 ` Labiaga, Ricardo
2009-12-05 21:42 ` Labiaga, Ricardo
2009-12-06 0:34 ` Trond Myklebust
2009-12-06 3:25 ` Labiaga, Ricardo
2009-12-06 3:28 ` Labiaga, Ricardo
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=1260043442.2624.92.camel@localhost \
--to=trond.myklebust@netapp.com \
--cc=Ricardo.Labiaga@netapp.com \
--cc=William.Adamson@netapp.com \
--cc=linux-nfs@vger.kernel.org \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.