linux-nfs.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
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
> 

  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).