From: "J. Bruce Fields" <bfields@fieldses.org>
To: Trond Myklebust <Trond.Myklebust@netapp.com>
Cc: Chuck Lever <chuck.lever@oracle.com>, linux-nfs@vger.kernel.org
Subject: Re: [PATCH 03/33] SUNRPC: Don't attempt to destroy expired RPCSEC_GSS credentials..
Date: Wed, 23 Apr 2008 14:19:35 -0400 [thread overview]
Message-ID: <20080423181935.GC5280@fieldses.org> (raw)
In-Reply-To: <1208960443.7459.9.camel-rJ7iovZKK19ZJLDQqaL3InhyD016LWXt@public.gmane.org>
On Wed, Apr 23, 2008 at 10:20:43AM -0400, Trond Myklebust wrote:
>
> On Tue, 2008-04-22 at 11:11 -0400, Trond Myklebust wrote:
> > On Tue, 2008-04-22 at 09:38 -0400, Chuck Lever wrote:
> > > > RFC-2203 states that servers are supposed to silently discard requests
> > > > that they don't recognise (see section 5.3.3.1 - Context
> > > > Management), so
> > > > it is correct server behaviour.
> > >
> > >
> > > Dropping the request to destroy a context is fine. Temporarily
> > > fencing the client is what I was concerned about.
> >
> > I'd agree that is somewhat drastic, and have passed the information on
> > to the server vendor, however that doesn't change the fact that we have
> > a client bug too: we should not be using expired creds.
> >
> > The client side performance problem was compounded by the fact that the
> > RPCSEC_GSS destruction call was sent as a hard RPC call, and the fact
> > that we impose the NFSv4 rule that we need to drop the connection before
> > resending a request.
>
> Having thought a bit more about the consequences of this RFC, I think we
> also need to drop the credential on (major) timeouts, since we need to
> assume that the timeout may be due to the credential being out of
> sequence.
I'm a little confused. Each resend is done with a new gss sequence
number.
--b.
>
> ---------------------------------------------
> From: Trond Myklebust <Trond.Myklebust@netapp.com>
> Date: Tue, 22 Apr 2008 16:47:55 -0400
> SUNRPC: Invalidate the RPCSEC_GSS session if the server dropped the request
>
> RFC 2203 requires the server to drop the request if it believes the
> RPCSEC_GSS context is out of sequence. The problem is that we have no way
> on the client to know why the server dropped the request. In order to avoid
> spinning forever trying to resend the request, the safe approach is
> therefore to always invalidate the RPCSEC_GSS context on every major
> timeout.
>
> Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
> ---
>
> net/sunrpc/clnt.c | 5 +++++
> 1 files changed, 5 insertions(+), 0 deletions(-)
>
> diff --git a/net/sunrpc/clnt.c b/net/sunrpc/clnt.c
> index 2969e84..eb813e9 100644
> --- a/net/sunrpc/clnt.c
> +++ b/net/sunrpc/clnt.c
> @@ -1169,6 +1169,11 @@ call_timeout(struct rpc_task *task)
> clnt->cl_protname, clnt->cl_server);
> }
> rpc_force_rebind(clnt);
> + /*
> + * Did our request time out due to an RPCSEC_GSS out-of-sequence
> + * event? RFC2203 requires the server to drop all such requests.
> + */
> + rpcauth_invalcred(task);
>
> retry:
> clnt->cl_stats->rpcretrans++;
>
>
> --
> Trond Myklebust
> Linux NFS client maintainer
>
> NetApp
> Trond.Myklebust@netapp.com
> www.netapp.com
> --
> To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
next prev parent reply other threads:[~2008-04-23 18:19 UTC|newest]
Thread overview: 62+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-04-19 20:40 [PATCH 00/33] More NFS and SUNRPC client side patches Trond Myklebust
[not found] ` <20080419204047.14124.49490.stgit-KPEdlmqt5P7XOazzY/2fV4TcuzvYVacciM950cveMlzk1uMJSBkQmQ@public.gmane.org>
2008-04-19 20:40 ` [PATCH 01/33] SUNRPC: Fix a bug in call_decode() Trond Myklebust
[not found] ` <20080419204047.14124.76946.stgit-KPEdlmqt5P7XOazzY/2fV4TcuzvYVacciM950cveMlzk1uMJSBkQmQ@public.gmane.org>
2008-04-21 16:22 ` Chuck Lever
2008-04-19 20:40 ` [PATCH 02/33] SUNRPC: Fix up xprt_write_space() Trond Myklebust
[not found] ` <20080419204047.14124.5947.stgit-KPEdlmqt5P7XOazzY/2fV4TcuzvYVacciM950cveMlzk1uMJSBkQmQ@public.gmane.org>
2008-04-21 17:31 ` Chuck Lever
2008-04-21 23:51 ` Trond Myklebust
2008-04-19 20:40 ` [PATCH 03/33] SUNRPC: Don't attempt to destroy expired RPCSEC_GSS credentials Trond Myklebust
[not found] ` <20080419204047.14124.64969.stgit-KPEdlmqt5P7XOazzY/2fV4TcuzvYVacciM950cveMlzk1uMJSBkQmQ@public.gmane.org>
2008-04-21 17:50 ` Chuck Lever
2008-04-22 0:00 ` Trond Myklebust
[not found] ` <1208822443.7767.23.camel-rJ7iovZKK19ZJLDQqaL3InhyD016LWXt@public.gmane.org>
2008-04-22 13:38 ` Chuck Lever
2008-04-22 15:06 ` Trond Myklebust
[not found] ` <1208876800.11982.6.camel-rJ7iovZKK19ZJLDQqaL3InhyD016LWXt@public.gmane.org>
2008-04-23 14:20 ` Trond Myklebust
[not found] ` <1208960443.7459.9.camel-rJ7iovZKK19ZJLDQqaL3InhyD016LWXt@public.gmane.org>
2008-04-23 17:40 ` Chuck Lever
2008-04-23 18:19 ` J. Bruce Fields [this message]
2008-04-24 17:48 ` Trond Myklebust
[not found] ` <1209059309.7619.2.camel-rJ7iovZKK19ZJLDQqaL3InhyD016LWXt@public.gmane.org>
2008-04-24 17:55 ` J. Bruce Fields
2008-04-19 20:40 ` [PATCH 05/33] NFS: Ensure that the read code cleans up properly when rpc_run_task() fails Trond Myklebust
2008-04-19 20:40 ` [PATCH 04/33] NFS: Fix nfs_wb_page() to always exit with an error or a clean page Trond Myklebust
[not found] ` <20080419204048.14124.46594.stgit-KPEdlmqt5P7XOazzY/2fV4TcuzvYVacciM950cveMlzk1uMJSBkQmQ@public.gmane.org>
2008-04-21 18:53 ` Chuck Lever
2008-04-22 0:14 ` Trond Myklebust
2008-04-19 20:40 ` [PATCH 06/33] NFS: Ensure that the write code cleans up properly when rpc_run_task() fails Trond Myklebust
2008-04-19 20:40 ` [PATCH 07/33] NFS: Ensure that rpc_run_task() errors are propagated back to the caller Trond Myklebust
[not found] ` <20080419204048.14124.4335.stgit-KPEdlmqt5P7XOazzY/2fV4TcuzvYVacciM950cveMlzk1uMJSBkQmQ@public.gmane.org>
2008-04-21 19:55 ` Chuck Lever
2008-04-22 0:17 ` Trond Myklebust
[not found] ` <1208823472.7767.40.camel-rJ7iovZKK19ZJLDQqaL3InhyD016LWXt@public.gmane.org>
2008-04-22 14:19 ` Chuck Lever
2008-04-22 15:10 ` Trond Myklebust
[not found] ` <1208877058.11982.11.camel-rJ7iovZKK19ZJLDQqaL3InhyD016LWXt@public.gmane.org>
2008-04-22 15:32 ` Chuck Lever
2008-04-19 20:40 ` [PATCH 09/33] NFSv4: Only increment the sequence id if the server saw it Trond Myklebust
2008-04-19 20:40 ` [PATCH 10/33] SUNRPC: Fix read ordering problems with req->rq_private_buf.len Trond Myklebust
[not found] ` <20080419204049.14124.11174.stgit-KPEdlmqt5P7XOazzY/2fV4TcuzvYVacciM950cveMlzk1uMJSBkQmQ@public.gmane.org>
2008-04-21 21:19 ` Chuck Lever
2008-04-22 0:30 ` Trond Myklebust
[not found] ` <1208824201.7767.53.camel-rJ7iovZKK19ZJLDQqaL3InhyD016LWXt@public.gmane.org>
2008-04-22 15:04 ` Chuck Lever
2008-04-22 15:24 ` Trond Myklebust
2008-04-19 20:40 ` [PATCH 08/33] NFSv4: Remove bogus call to nfs4_drop_state_owner() in _nfs4_open_expired() Trond Myklebust
2008-04-19 20:40 ` [PATCH 12/33] NFSv4: Ensure we don't corrupt fl->fl_flags in nfs4_proc_unlck Trond Myklebust
2008-04-19 20:40 ` [PATCH 14/33] NLM/lockd: convert __nlm_async_call to use rpc_run_task() Trond Myklebust
2008-04-19 20:40 ` [PATCH 13/33] NLM/lockd: Add a reference counter to struct nlm_rqst Trond Myklebust
2008-04-19 20:40 ` [PATCH 11/33] NLM/lockd: Ensure we don't corrupt fl->fl_flags in nlmclnt_unlock() Trond Myklebust
2008-04-19 20:40 ` [PATCH 17/33] NLM/lockd: Fix a race when cancelling a blocking lock Trond Myklebust
2008-04-19 20:40 ` [PATCH 18/33] NFS: Remove the buggy lock-if-signalled case from do_setlk() Trond Myklebust
2008-04-19 20:40 ` [PATCH 15/33] NLM: Remove the signal masking in nlmclnt_proc/nlmclnt_cancel Trond Myklebust
2008-04-19 20:40 ` [PATCH 16/33] NLM/lockd: Ensure that nlmclnt_cancel() returns results of the CANCEL call Trond Myklebust
2008-04-19 20:40 ` [PATCH 19/33] NLM/lockd: Ensure client locking calls use correct credentials Trond Myklebust
2008-04-19 20:40 ` [PATCH 20/33] nfs: return negative error value from nfs{, 4}_stat_to_errno Trond Myklebust
2008-04-19 20:40 ` [PATCH 21/33] nfs: fix printout of multiword bitfields Trond Myklebust
2008-04-19 20:40 ` [PATCH 22/33] NFSv4: Don't use cred->cr_ops->cr_name in nfs4_proc_setclientid() Trond Myklebust
2008-04-19 20:40 ` [PATCH 23/33] NFSv4: Reintroduce machine creds Trond Myklebust
2008-04-19 20:40 ` [PATCH 24/33] NFSv4: Attempt to use machine credentials in SETCLIENTID calls Trond Myklebust
2008-04-19 20:40 ` [PATCH 26/33] SUNRPC: remove XS_SENDMSG_RETRY Trond Myklebust
2008-04-19 20:40 ` [PATCH 25/33] SUNRPC: Protect creds against early garbage collection Trond Myklebust
2008-04-19 20:40 ` [PATCH 27/33] SUNRPC: Remove the unused export of xprt_force_disconnect Trond Myklebust
2008-04-19 20:40 ` [PATCH 28/33] SUNRPC: Don't disconnect more than once if retransmitting NFSv4 requests Trond Myklebust
2008-04-19 20:40 ` [PATCH 30/33] SUNRPC: Don't change the RPCSEC_GSS context on a credential that is in use Trond Myklebust
2008-04-19 20:40 ` [PATCH 29/33] SUNRPC: Fix a race in gss_refresh_upcall() Trond Myklebust
2008-04-19 20:40 ` [PATCH 31/33] NFS - fix potential NULL pointer dereference v2 Trond Myklebust
[not found] ` <20080419204054.14124.59641.stgit-KPEdlmqt5P7XOazzY/2fV4TcuzvYVacciM950cveMlzk1uMJSBkQmQ@public.gmane.org>
2008-04-21 21:13 ` Chuck Lever
2008-04-22 0:21 ` Trond Myklebust
[not found] ` <1208823685.7767.43.camel-rJ7iovZKK19ZJLDQqaL3InhyD016LWXt@public.gmane.org>
2008-04-22 14:21 ` Chuck Lever
2008-04-22 15:12 ` Trond Myklebust
[not found] ` <1208877133.11982.13.camel-rJ7iovZKK19ZJLDQqaL3InhyD016LWXt@public.gmane.org>
2008-04-22 15:22 ` Chuck Lever
2008-04-19 20:40 ` [PATCH 33/33] make nfs_automount_list static Trond Myklebust
2008-04-19 20:40 ` [PATCH 32/33] NFS: remove duplicate flags assignment from nfs_validate_mount_data Trond Myklebust
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=20080423181935.GC5280@fieldses.org \
--to=bfields@fieldses.org \
--cc=Trond.Myklebust@netapp.com \
--cc=chuck.lever@oracle.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox