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? > + 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>