From: "J. Bruce Fields" <bfields@fieldses.org>
To: Jeff Layton <jlayton@redhat.com>
Cc: linux-nfs@vger.kernel.org, simo@redhat.com, neilb@suse.de
Subject: Re: [RFC PATCH 3/5] sunrpc: wait for gssproxy to start on initial upcall attempt before falling back to legacy upcall
Date: Thu, 2 Jan 2014 16:35:47 -0500 [thread overview]
Message-ID: <20140102213547.GD28219@fieldses.org> (raw)
In-Reply-To: <1388579314-15255-4-git-send-email-jlayton@redhat.com>
On Wed, Jan 01, 2014 at 07:28:32AM -0500, Jeff Layton wrote:
> Currently, the only thing that waits for gssproxy to start is reads
> from the use-gss-proxy procfile. That's a little odd, since nothing
> but gssproxy itself will likely ever open that file, and all it does
> it write to it.
>
> It seems like what we really want instead is for svcrpc code to give
> gssproxy a little time to start up in the event that some RPCs come
> in before it's ready.
Legacy userspace will never write, so this adds an 5-second delay in
that case.
I'd rather avoid any arbitrary timeout.
It seems to me all you need is for gss-proxy to ensure that it does the
write to use-gss-proxy before it indicates to whoever started it that
it's done starting.
Then as long as the init system orders gss-proxy startup before nfsd
startup, we're good.
--b.
>
> Change it so that the upcall instead waits a little while for gssproxy
> to start before giving up. If the wait times out, we go ahead and
> disable gssproxy so that later upcalls don't delay.
>
> Signed-off-by: Jeff Layton <jlayton@redhat.com>
> ---
> net/sunrpc/auth_gss/svcauth_gss.c | 28 ++++++++++------------------
> 1 file changed, 10 insertions(+), 18 deletions(-)
>
> diff --git a/net/sunrpc/auth_gss/svcauth_gss.c b/net/sunrpc/auth_gss/svcauth_gss.c
> index 64c025e..921f388 100644
> --- a/net/sunrpc/auth_gss/svcauth_gss.c
> +++ b/net/sunrpc/auth_gss/svcauth_gss.c
> @@ -1265,24 +1265,6 @@ out:
>
> DEFINE_SPINLOCK(use_gssp_lock);
>
> -static bool use_gss_proxy(struct net *net)
> -{
> - struct sunrpc_net *sn = net_generic(net, sunrpc_net_id);
> -
> - if (sn->use_gss_proxy != -1)
> - return sn->use_gss_proxy;
> - spin_lock(&use_gssp_lock);
> - /*
> - * If you wanted gss-proxy, you should have said so before
> - * starting to accept requests:
> - */
> - sn->use_gss_proxy = 0;
> - spin_unlock(&use_gssp_lock);
> - return 0;
> -}
> -
> -#ifdef CONFIG_PROC_FS
> -
> static int set_gss_proxy(struct net *net, int type)
> {
> struct sunrpc_net *sn = net_generic(net, sunrpc_net_id);
> @@ -1332,6 +1314,16 @@ static int wait_for_gss_proxy(struct net *net)
> return ret < 0 ? ret : 0;
> }
>
> +static bool use_gss_proxy(struct net *net)
> +{
> + struct sunrpc_net *sn = net_generic(net, sunrpc_net_id);
> +
> + if (wait_for_gss_proxy(net))
> + return false;
> + return gssp_ready(sn);
> +}
> +
> +#ifdef CONFIG_PROC_FS
>
> static ssize_t write_gssp(struct file *file, const char __user *buf,
> size_t count, loff_t *ppos)
> --
> 1.8.4.2
>
next prev parent reply other threads:[~2014-01-02 21:35 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-01-01 12:28 [RFC PATCH 0/5] sunrpc: change handling of use-gss-proxy file Jeff Layton
2014-01-01 12:28 ` [RFC PATCH 1/5] sunrpc: don't wait for write before allowing reads from " Jeff Layton
2014-01-02 21:21 ` J. Bruce Fields
2014-01-02 22:26 ` Jeff Layton
2014-01-02 22:40 ` J. Bruce Fields
2014-01-02 23:27 ` Jeff Layton
2014-01-03 8:14 ` Simo Sorce
2014-01-03 16:23 ` J. Bruce Fields
2014-01-03 22:06 ` Simo Sorce
2014-01-03 22:34 ` J. Bruce Fields
2014-01-04 15:28 ` Simo Sorce
2014-01-04 16:10 ` J. Bruce Fields
2014-01-04 14:18 ` Jeff Layton
2014-01-05 22:37 ` NeilBrown
2014-01-05 22:54 ` J. Bruce Fields
2014-01-05 23:30 ` NeilBrown
2014-01-05 23:38 ` Chuck Lever
2014-01-06 1:45 ` Jeff Layton
2014-01-06 6:36 ` Simo Sorce
2014-01-06 15:04 ` J. Bruce Fields
2014-01-06 15:23 ` Simo Sorce
2014-01-01 12:28 ` [RFC PATCH 2/5] sunrpc: don't hang indefinitely in wait_for_gss_proxy Jeff Layton
2014-01-01 12:28 ` [RFC PATCH 3/5] sunrpc: wait for gssproxy to start on initial upcall attempt before falling back to legacy upcall Jeff Layton
2014-01-02 21:35 ` J. Bruce Fields [this message]
2014-01-02 23:10 ` Jeff Layton
2014-01-03 16:33 ` J. Bruce Fields
2014-01-03 17:03 ` Jeff Layton
2014-01-01 12:28 ` [RFC PATCH 4/5] sunrpc: fix potential race between setting use_gss_proxy and the upcall rpc_clnt Jeff Layton
2014-01-01 12:28 ` [RFC PATCH 5/5] sunrpc: allow gssproxy to be explicitly disabled from userland Jeff Layton
2014-01-01 19:53 ` [RFC PATCH 0/5] sunrpc: change handling of use-gss-proxy file Simo Sorce
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=20140102213547.GD28219@fieldses.org \
--to=bfields@fieldses.org \
--cc=jlayton@redhat.com \
--cc=linux-nfs@vger.kernel.org \
--cc=neilb@suse.de \
--cc=simo@redhat.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).