linux/net/sunrpc
Chris Dion 09252177d5 SUNRPC: Handle major timeout in xprt_adjust_timeout()
Currently if a major timeout value is reached, but the minor value has
not been reached, an ETIMEOUT will not be sent back to the caller.
This can occur if the v4 server is not responding to requests and
retrans is configured larger than the default of two.

For example, A TCP mount with a configured timeout value of 50 and a
retransmission count of 3 to a v4 server which is not responding:

1. Initial value and increment set to 5s, maxval set to 20s, retries at 3
2. Major timeout is set to 20s, minor timeout set to 5s initially
3. xport_adjust_timeout() is called after 5s, retry with 10s timeout,
   minor timeout is bumped to 10s
4. And again after another 10s, 15s total time with minor timeout set
   to 15s
5. After 20s total time xport_adjust_timeout is called as major timeout is
   reached, but skipped because the minor timeout is not reached
       - After this time the cpu spins continually calling
       	 xport_adjust_timeout() and returning 0 for 10 seconds.
	 As seen on perf sched:
   	 39243.913182 [0005]  mount.nfs[3794] 4607.938      0.017   9746.863
6. This continues until the 15s minor timeout condition is reached (in
   this case for 10 seconds). After which the ETIMEOUT is processed
   back to the caller, the cpu spinning stops, and normal operations
   continue

Fixes: 7de62bc09f ("SUNRPC dont update timeout value on connection reset")
Signed-off-by: Chris Dion <Christopher.Dion@dell.com>
Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
2021-04-14 09:36:30 -04:00
..
auth_gss rpc: fix NULL dereference on kmalloc failure 2021-03-06 16:41:49 -05:00
xprtrdma SUNRPC: Move fault injection call sites 2021-04-14 09:36:29 -04:00
addr.c net: sunrpc: interpret the return value of kstrtou32 correctly 2021-01-10 13:32:51 -05:00
auth_null.c
auth_unix.c
auth.c sunrpc: add missing newline when printing parameter 'auth_hashtable_size' by sysfs 2020-06-11 13:33:48 -04:00
backchannel_rqst.c The one new feature this time, from Anna Schumaker, is READ_PLUS, which 2020-10-22 09:44:27 -07:00
cache.c sunrpc: clean-up cache downcall 2020-12-09 09:38:34 -05:00
clnt.c SUNRPC: Move fault injection call sites 2021-04-14 09:36:29 -04:00
debugfs.c net: sunrpc: Fix 'snprintf' return value check in 'do_xprt_debugfs' 2020-12-02 14:05:54 -05:00
Kconfig SUNRPC: remove RC4-HMAC-MD5 support from KerberosV 2020-09-11 14:39:15 +10:00
Makefile
netns.h
rpc_pipe.c SUNRPC: Fix fall-through warnings for Clang 2021-02-01 13:32:32 -05:00
rpcb_clnt.c sunrpc: honor rpc_task's timeout value in rpcb_create() 2021-04-05 09:04:21 -04:00
sched.c SUNRPC: Set memalloc_nofs_save() for sync tasks 2021-03-08 15:32:16 -05:00
socklib.c skb_copy_and_csum_bits(): don't bother with the last argument 2020-08-20 15:45:13 -04:00
socklib.h
stats.c
sunrpc_syms.c sunrpc: check that domain table is empty at module unload. 2020-05-28 18:15:00 -04:00
sunrpc.h Replace HTTP links with HTTPS ones: NFS, SUNRPC, and LOCKD clients 2020-09-21 10:21:10 -04:00
svc_xprt.c NFSD: Repair misuse of sv_lock in 5.10.16-rt30. 2021-03-06 16:41:48 -05:00
svc.c sunrpc: fix refcount leak for rpc auth modules 2021-03-06 16:41:49 -05:00
svcauth_unix.c sunrpc: Remove unused function ip_map_update 2020-05-06 16:00:11 -04:00
svcauth.c sunrpc: check that domain table is empty at module unload. 2020-05-28 18:15:00 -04:00
svcsock.c SUNRPC: Further clean up svc_tcp_sendmsg() 2021-02-16 12:38:12 -05:00
sysctl.c net/sunrpc: fix useless comparison in proc_do_xprt() 2020-11-08 16:28:25 -05:00
timer.c
xdr.c NFS client updates for Linux 5.11 2020-12-17 12:15:03 -08:00
xprt.c SUNRPC: Handle major timeout in xprt_adjust_timeout() 2021-04-14 09:36:30 -04:00
xprtmultipath.c
xprtsock.c SUNRPC: Ensure the transport backchannel association 2021-04-05 09:04:21 -04:00