> On Aug 18, 2017, at 3:12 AM, NeilBrown <neilb@xxxxxxxx> wrote: > > If you > - mount and NFSv3 filesystem > - do some file locking which requires the server > to make a GRANT call back > - unmount > - mount again and do the same locking > > then the second attempt at locking suffers a 30 second delay. > Unmounting and remounting causes lockd to stop and restart, > which causes it to bind to a new port. > The server still thinks the old port is valid and gets ECONNREFUSED > when trying to contact it. > ECONNREFUSED should be seen as a hard error that is not worth > retrying. Rebinding is the only reasonable response. > > This patch forces a rebind if that makes sense. I also reported this problem recently, and found a similar (but rather lockd-centric) solution. Reviewed-by: Chuck Lever <chuck.lever@xxxxxxxxxx> > Signed-off-by: NeilBrown <neilb@xxxxxxxx> > --- > net/sunrpc/clnt.c | 8 ++++++++ > 1 file changed, 8 insertions(+) > > diff --git a/net/sunrpc/clnt.c b/net/sunrpc/clnt.c > index 2e49d1f892b7..69a9e5953744 100644 > --- a/net/sunrpc/clnt.c > +++ b/net/sunrpc/clnt.c > @@ -1903,6 +1903,14 @@ call_connect_status(struct rpc_task *task) > task->tk_status = 0; > switch (status) { > case -ECONNREFUSED: > + /* A positive refusal suggests a rebind is needed. */ > + if (RPC_IS_SOFTCONN(task)) > + break; > + if (clnt->cl_autobind) { > + rpc_force_rebind(clnt); > + task->tk_action = call_bind; > + return; > + } > case -ECONNRESET: > case -ECONNABORTED: > case -ENETUNREACH: > > > -- > To unsubscribe from this list: send the line "unsubscribe linux-nfs" in > the body of a message to majordomo@xxxxxxxxxxxxxxx > More majordomo info at http://vger.kernel.org/majordomo-info.html -- Chuck Lever -- To unsubscribe from this list: send the line "unsubscribe linux-nfs" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html