linux/net/sunrpc/xprtrdma
NeilBrown a721035477 SUNRPC/xprt: async tasks mustn't block waiting for memory
When memory is short, new worker threads cannot be created and we depend
on the minimum one rpciod thread to be able to handle everything.  So it
must not block waiting for memory.

xprt_dynamic_alloc_slot can block indefinitely.  This can tie up all
workqueue threads and NFS can deadlock.  So when called from a
workqueue, set __GFP_NORETRY.

The rdma alloc_slot already does not block.  However it sets the error
to -EAGAIN suggesting this will trigger a sleep.  It does not.  As we
can see in call_reserveresult(), only -ENOMEM causes a sleep.  -EAGAIN
causes immediate retry.

Signed-off-by: NeilBrown <neilb@suse.de>
Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
2022-03-13 12:59:35 -04:00
..
backchannel.c xprtrdma: Remove definitions of RPCDBG_FACILITY 2022-01-14 10:35:08 -05:00
frwr_ops.c SUNRPC/xprtrdma: Convert GFP_NOFS to GFP_KERNEL 2022-02-25 18:50:12 -05:00
Makefile svcrdma: Add a "parsed chunk list" data structure 2020-11-30 13:00:22 -05:00
module.c SUNRPC: xprt_load_transport() needs to support the netid "rdma6" 2020-12-02 14:05:52 -05:00
rpc_rdma.c xprtrdma: Remove definitions of RPCDBG_FACILITY 2022-01-14 10:35:08 -05:00
svc_rdma_backchannel.c svcrdma: Normalize Send page handling 2021-03-22 13:22:13 -04:00
svc_rdma_pcl.c svcrdma: Add a "parsed chunk list" data structure 2020-11-30 13:00:22 -05:00
svc_rdma_recvfrom.c svcrdma: Split the svcrdma_wc_receive() tracepoint 2021-10-04 15:40:15 -04:00
svc_rdma_rw.c svcrdma: Split svcrmda_wc_{read,write} tracepoints 2021-10-04 15:40:15 -04:00
svc_rdma_sendto.c svcrdma: Split the svcrdma_wc_send() tracepoint 2021-10-04 15:40:15 -04:00
svc_rdma_transport.c svcrdma: xpt_bc_xprt is already clear in __svc_rdma_free() 2021-08-19 08:29:32 -04:00
svc_rdma.c svcrdma: Deprecate stat variables that are no longer used 2021-01-25 09:36:28 -05:00
transport.c SUNRPC/xprt: async tasks mustn't block waiting for memory 2022-03-13 12:59:35 -04:00
verbs.c SUNRPC/xprtrdma: Convert GFP_NOFS to GFP_KERNEL 2022-02-25 18:50:12 -05:00
xprt_rdma.h xprtrdma: Remove rpcrdma_ep::re_implicit_roundup 2021-10-20 18:09:54 -04:00