On Sun, 2025-04-06 at 09:08 -0400, Jeff Layton wrote: > On Sun, 2025-04-06 at 11:11 +0200, trondmy@xxxxxxxxxx wrote: > > From: Trond Myklebust <trond.myklebust@xxxxxxxxxxxxxxx> > > > > Ensure that the NFSv4 error handling code recognises the > > RPC_TASK_NETUNREACH_FATAL flag, and handles the ENETDOWN and > > ENETUNREACH > > errors accordingly. > > > > Signed-off-by: Trond Myklebust <trond.myklebust@xxxxxxxxxxxxxxx> > > --- > > fs/nfs/nfs4proc.c | 9 +++++++++ > > 1 file changed, 9 insertions(+) > > > > diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c > > index da97f87ecaa9..f862c862b3a3 100644 > > --- a/fs/nfs/nfs4proc.c > > +++ b/fs/nfs/nfs4proc.c > > @@ -671,6 +671,15 @@ nfs4_async_handle_exception(struct rpc_task > > *task, struct nfs_server *server, > > struct nfs_client *clp = server->nfs_client; > > int ret; > > > > + if ((task->tk_rpc_status == -ENETDOWN || > > + task->tk_rpc_status == -ENETUNREACH) && > > + task->tk_flags & RPC_TASK_NETUNREACH_FATAL) { > > + exception->retry = 0; > > + exception->recovering = 0; > > + exception->retry = 0; > > Why set exception->retry twice? Oops. That last one is supposed to be exception->delay = 0 Thanks for noticing! > > > + return -EIO; > > + } > > + > > ret = nfs4_do_handle_exception(server, errorcode, > > exception); > > if (exception->delay) { > > int ret2 = nfs4_exception_should_retrans(server, > > exception); > > Other than that, this looks sane. > > Reviewed-by: Jeff Layton <jlayton@xxxxxxxxxx>