linux-stable/include/linux/sunrpc
J. Bruce Fields 9a81ef42b2 SUNRPC/cache: don't allow invalid entries to be flushed
Trond points out in commit 277f27e2f2 ("SUNRPC/cache: Allow
garbage collection of invalid cache entries") that we allow invalid
cache entries to persist indefinitely. That fix, however,
reintroduces the problem fixed by Kinglong Mee's commit d6fc8821c2
("SUNRPC/Cache: Always treat the invalid cache as unexpired"), where
an invalid cache entry is immediately removed by a flush before
mountd responds to it. The result is that the server thread that
should be waiting for mountd to fill in that entry instead gets an
-ETIMEDOUT return from cache_check(). Symptoms are the server
becoming unresponsive after a restart, reproduceable by running
pynfs 4.1 test REBT5.

Instead, take a compromise approach: allow invalid cache entries to
be removed after they expire, but not to be removed by a cache
flush.

Fixes: 277f27e2f2 ("SUNRPC/cache: Allow garbage collection ... ")
Signed-off-by: J. Bruce Fields <bfields@redhat.com>
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
2020-03-27 12:17:31 -04:00
..
addr.h
auth.h SUNRPC: Remove broken gss_mech_list_pseudoflavors() 2020-01-15 10:54:32 -05:00
auth_gss.h sunrpc: remove __KERNEL__ ifdefs 2019-11-12 11:43:29 -05:00
bc_xprt.h SUNRPC: Destroy the back channel when we destroy the host transport 2019-10-30 12:04:35 -04:00
cache.h SUNRPC/cache: don't allow invalid entries to be flushed 2020-03-27 12:17:31 -04:00
clnt.h This is a relatively quiet cycle for nfsd, mainly various bugfixes. 2019-12-07 16:56:00 -08:00
debug.h
gss_api.h SUNRPC: Remove broken gss_mech_list_pseudoflavors() 2020-01-15 10:54:32 -05:00
gss_asn1.h
gss_err.h sunrpc: remove __KERNEL__ ifdefs 2019-11-12 11:43:29 -05:00
gss_krb5.h sunrpc: convert to time64_t for expiry 2020-01-15 10:54:30 -05:00
gss_krb5_enctypes.h
metrics.h
msg_prot.h sunrpc: remove __KERNEL__ ifdefs 2019-11-12 11:43:29 -05:00
rpc_pipe_fs.h sunrpc: remove __KERNEL__ ifdefs 2019-11-12 11:43:29 -05:00
rpc_rdma.h svcrdma: Use struct xdr_stream to decode ingress transport headers 2020-03-16 12:04:32 -04:00
sched.h NFS Client Updates for Linux 5.3 2019-09-26 12:20:14 -07:00
stats.h proc: convert everything to "struct proc_ops" 2020-02-04 03:05:26 +00:00
svc.h nfsd: Fix NFSv4 READ on RDMA when using readv 2020-03-16 12:04:31 -04:00
svc_rdma.h svcrdma: Avoid DMA mapping small RPC Replies 2020-03-16 12:04:33 -04:00
svc_xprt.h nfsd: Fix NFSv4 READ on RDMA when using readv 2020-03-16 12:04:31 -04:00
svcauth.h sunrpc: remove __KERNEL__ ifdefs 2019-11-12 11:43:29 -05:00
svcauth_gss.h sunrpc: remove __KERNEL__ ifdefs 2019-11-12 11:43:29 -05:00
svcsock.h
timer.h
types.h
xdr.h SUNRPC: Refactor xs_sendpages() 2020-03-16 12:04:33 -04:00
xprt.h This is a relatively quiet cycle for nfsd, mainly various bugfixes. 2019-12-07 16:56:00 -08:00
xprtmultipath.h
xprtrdma.h xprtrdma: Boost client's max slot table size to match Linux server 2019-08-20 11:17:16 -04:00
xprtsock.h This is a relatively quiet cycle for nfsd, mainly various bugfixes. 2019-12-07 16:56:00 -08:00