diff mbox series

sunrpc: set cl_max_connect when cloning an rpc_clnt

Message ID 20220601173449.155273-1-smayhew@redhat.com (mailing list archive)
State New, archived
Headers show
Series sunrpc: set cl_max_connect when cloning an rpc_clnt | expand

Commit Message

Scott Mayhew June 1, 2022, 5:34 p.m. UTC
If the initial attempt at trunking detection using the krb5i auth flavor
fails with -EACCES, -NFS4ERR_CLID_INUSE, or -NFS4ERR_WRONGSEC, then the
NFS client tries again using auth_sys, cloning the rpc_clnt in the
process.  If this second attempt at trunking detection succeeds, then
the resulting nfs_client->cl_rpcclient winds up having cl_max_connect=0
and subsequent attempts to add additional transport connections to the
rpc_clnt will fail with a message similar to the following being logged:

[502044.312640] SUNRPC: reached max allowed number (0) did not add
transport to server: 192.168.122.3

Signed-off-by: Scott Mayhew <smayhew@redhat.com>
---
 net/sunrpc/clnt.c | 1 +
 1 file changed, 1 insertion(+)

Comments

Anna Schumaker June 6, 2022, 6:35 p.m. UTC | #1
Hi Scott,

On Wed, Jun 1, 2022 at 1:34 PM Scott Mayhew <smayhew@redhat.com> wrote:
>
> If the initial attempt at trunking detection using the krb5i auth flavor
> fails with -EACCES, -NFS4ERR_CLID_INUSE, or -NFS4ERR_WRONGSEC, then the
> NFS client tries again using auth_sys, cloning the rpc_clnt in the
> process.  If this second attempt at trunking detection succeeds, then
> the resulting nfs_client->cl_rpcclient winds up having cl_max_connect=0
> and subsequent attempts to add additional transport connections to the
> rpc_clnt will fail with a message similar to the following being logged:
>
> [502044.312640] SUNRPC: reached max allowed number (0) did not add
> transport to server: 192.168.122.3

Good catch! I was wondering if you could give me a "Fixes:" tag so it
can be backported to stable?

Thanks,
Anna

>
> Signed-off-by: Scott Mayhew <smayhew@redhat.com>
> ---
>  net/sunrpc/clnt.c | 1 +
>  1 file changed, 1 insertion(+)
>
> diff --git a/net/sunrpc/clnt.c b/net/sunrpc/clnt.c
> index e2c6eca0271b..b6781ada3aa8 100644
> --- a/net/sunrpc/clnt.c
> +++ b/net/sunrpc/clnt.c
> @@ -651,6 +651,7 @@ static struct rpc_clnt *__rpc_clone_client(struct rpc_create_args *args,
>         new->cl_discrtry = clnt->cl_discrtry;
>         new->cl_chatty = clnt->cl_chatty;
>         new->cl_principal = clnt->cl_principal;
> +       new->cl_max_connect = clnt->cl_max_connect;
>         return new;
>
>  out_err:
> --
> 2.35.3
>
Scott Mayhew June 7, 2022, 12:53 p.m. UTC | #2
On Mon, 06 Jun 2022, Anna Schumaker wrote:

> Hi Scott,
> 
> On Wed, Jun 1, 2022 at 1:34 PM Scott Mayhew <smayhew@redhat.com> wrote:
> >
> > If the initial attempt at trunking detection using the krb5i auth flavor
> > fails with -EACCES, -NFS4ERR_CLID_INUSE, or -NFS4ERR_WRONGSEC, then the
> > NFS client tries again using auth_sys, cloning the rpc_clnt in the
> > process.  If this second attempt at trunking detection succeeds, then
> > the resulting nfs_client->cl_rpcclient winds up having cl_max_connect=0
> > and subsequent attempts to add additional transport connections to the
> > rpc_clnt will fail with a message similar to the following being logged:
> >
> > [502044.312640] SUNRPC: reached max allowed number (0) did not add
> > transport to server: 192.168.122.3
> 
> Good catch! I was wondering if you could give me a "Fixes:" tag so it
> can be backported to stable?

Fixes: dc48e0abee24 ("SUNRPC enforce creation of no more than max_connect xprts")

> 
> Thanks,
> Anna
> 
> >
> > Signed-off-by: Scott Mayhew <smayhew@redhat.com>
> > ---
> >  net/sunrpc/clnt.c | 1 +
> >  1 file changed, 1 insertion(+)
> >
> > diff --git a/net/sunrpc/clnt.c b/net/sunrpc/clnt.c
> > index e2c6eca0271b..b6781ada3aa8 100644
> > --- a/net/sunrpc/clnt.c
> > +++ b/net/sunrpc/clnt.c
> > @@ -651,6 +651,7 @@ static struct rpc_clnt *__rpc_clone_client(struct rpc_create_args *args,
> >         new->cl_discrtry = clnt->cl_discrtry;
> >         new->cl_chatty = clnt->cl_chatty;
> >         new->cl_principal = clnt->cl_principal;
> > +       new->cl_max_connect = clnt->cl_max_connect;
> >         return new;
> >
> >  out_err:
> > --
> > 2.35.3
> >
>
Anna Schumaker June 7, 2022, 5:18 p.m. UTC | #3
On Tue, Jun 7, 2022 at 8:53 AM Scott Mayhew <smayhew@redhat.com> wrote:
>
> On Mon, 06 Jun 2022, Anna Schumaker wrote:
>
> > Hi Scott,
> >
> > On Wed, Jun 1, 2022 at 1:34 PM Scott Mayhew <smayhew@redhat.com> wrote:
> > >
> > > If the initial attempt at trunking detection using the krb5i auth flavor
> > > fails with -EACCES, -NFS4ERR_CLID_INUSE, or -NFS4ERR_WRONGSEC, then the
> > > NFS client tries again using auth_sys, cloning the rpc_clnt in the
> > > process.  If this second attempt at trunking detection succeeds, then
> > > the resulting nfs_client->cl_rpcclient winds up having cl_max_connect=0
> > > and subsequent attempts to add additional transport connections to the
> > > rpc_clnt will fail with a message similar to the following being logged:
> > >
> > > [502044.312640] SUNRPC: reached max allowed number (0) did not add
> > > transport to server: 192.168.122.3
> >
> > Good catch! I was wondering if you could give me a "Fixes:" tag so it
> > can be backported to stable?
>
> Fixes: dc48e0abee24 ("SUNRPC enforce creation of no more than max_connect xprts")

Thanks! Applied for a -rc pull request

>
> >
> > Thanks,
> > Anna
> >
> > >
> > > Signed-off-by: Scott Mayhew <smayhew@redhat.com>
> > > ---
> > >  net/sunrpc/clnt.c | 1 +
> > >  1 file changed, 1 insertion(+)
> > >
> > > diff --git a/net/sunrpc/clnt.c b/net/sunrpc/clnt.c
> > > index e2c6eca0271b..b6781ada3aa8 100644
> > > --- a/net/sunrpc/clnt.c
> > > +++ b/net/sunrpc/clnt.c
> > > @@ -651,6 +651,7 @@ static struct rpc_clnt *__rpc_clone_client(struct rpc_create_args *args,
> > >         new->cl_discrtry = clnt->cl_discrtry;
> > >         new->cl_chatty = clnt->cl_chatty;
> > >         new->cl_principal = clnt->cl_principal;
> > > +       new->cl_max_connect = clnt->cl_max_connect;
> > >         return new;
> > >
> > >  out_err:
> > > --
> > > 2.35.3
> > >
> >
>
diff mbox series

Patch

diff --git a/net/sunrpc/clnt.c b/net/sunrpc/clnt.c
index e2c6eca0271b..b6781ada3aa8 100644
--- a/net/sunrpc/clnt.c
+++ b/net/sunrpc/clnt.c
@@ -651,6 +651,7 @@  static struct rpc_clnt *__rpc_clone_client(struct rpc_create_args *args,
 	new->cl_discrtry = clnt->cl_discrtry;
 	new->cl_chatty = clnt->cl_chatty;
 	new->cl_principal = clnt->cl_principal;
+	new->cl_max_connect = clnt->cl_max_connect;
 	return new;
 
 out_err: