Commit 0af5fb5e authored by Trond Myklebust's avatar Trond Myklebust
Browse files

NFSv4: Treat ENETUNREACH errors as fatal for state recovery



If a containerised process is killed and causes an ENETUNREACH or
ENETDOWN error to be propagated to the state manager, then mark the
nfs_client as being dead so that we don't loop in functions that are
expecting recovery to succeed.

Reviewed-by: default avatarJeff Layton <jlayton@kernel.org>
Reviewed-by: default avatarBenjamin Coddington <bcodding@redhat.com>
Signed-off-by: default avatarTrond Myklebust <trond.myklebust@hammerspace.com>
parent c81d5bcb
Loading
Loading
Loading
Loading
+9 −1
Original line number Diff line number Diff line
@@ -2739,7 +2739,15 @@ static void nfs4_state_manager(struct nfs_client *clp)
	pr_warn_ratelimited("NFS: state manager%s%s failed on NFSv4 server %s"
			" with error %d\n", section_sep, section,
			clp->cl_hostname, -status);
	switch (status) {
	case -ENETDOWN:
	case -ENETUNREACH:
		nfs_mark_client_ready(clp, -EIO);
		break;
	default:
		ssleep(1);
		break;
	}
out_drain:
	memalloc_nofs_restore(memflags);
	nfs4_end_drain_session(clp);