SUNRPC: Unset RPC_TASK_NO_RETRANS_TIMEOUT for NULL RPCs
authorChuck Lever <chuck.lever@oracle.com>
Mon, 19 Jul 2021 14:48:10 +0000 (10:48 -0400)
committerAnna Schumaker <Anna.Schumaker@Netapp.com>
Mon, 9 Aug 2021 20:32:27 +0000 (16:32 -0400)
commit823c73d0c539a0c1740c7929a7aad3f844e69d70
tree804ce5076c58ad5ccf1dd9486834883e04b3487e
parentaede517207b2bf4e5176492ce3be0e45feb581bd
SUNRPC: Unset RPC_TASK_NO_RETRANS_TIMEOUT for NULL RPCs

In some rare failure modes, the server is actually reading the
transport, but then just dropping the requests on the floor.
TCP_USER_TIMEOUT cannot detect that case.

Prevent such a stuck server from pinning client resources
indefinitely by ensuring that certain idempotent requests
(such as NULL) can time out even if the connection is still
operational.

Otherwise rpc_bind_new_program(), gss_destroy_cred(), or
rpc_clnt_test_and_add_xprt() can wait forever.

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
net/sunrpc/clnt.c