1
0
Fork 0
alistair23-linux/net/sunrpc
Chuck Lever e248aa7be8 svcrdma: Remove max_sge check at connect time
Two and a half years ago, the client was changed to use gathered
Send for larger inline messages, in commit 655fec6987 ("xprtrdma:
Use gathered Send for large inline messages"). Several fixes were
required because there are a few in-kernel device drivers whose
max_sge is 3, and these were broken by the change.

Apparently my memory is going, because some time later, I submitted
commit 25fd86eca1 ("svcrdma: Don't overrun the SGE array in
svc_rdma_send_ctxt"), and after that, commit f3c1fd0ee2 ("svcrdma:
Reduce max_send_sges"). These too incorrectly assumed in-kernel
device drivers would have more than a few Send SGEs available.

The fix for the server side is not the same. This is because the
fundamental problem on the server is that, whether or not the client
has provisioned a chunk for the RPC reply, the server must squeeze
even the most complex RPC replies into a single RDMA Send. Failing
in the send path because of Send SGE exhaustion should never be an
option.

Therefore, instead of failing when the send path runs out of SGEs,
switch to using a bounce buffer mechanism to handle RPC replies that
are too complex for the device to send directly. That allows us to
remove the max_sge check to enable drivers with small max_sge to
work again.

Reported-by: Don Dutile <ddutile@redhat.com>
Fixes: 25fd86eca1 ("svcrdma: Don't overrun the SGE array in ...")
Cc: stable@vger.kernel.org
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: J. Bruce Fields <bfields@redhat.com>
2019-02-06 15:32:34 -05:00
..
auth_gss SUNRPC: Ensure we respect the RPCSEC_GSS sequence number limit 2019-01-15 15:32:21 -05:00
xprtrdma svcrdma: Remove max_sge check at connect time 2019-02-06 15:32:34 -05:00
Kconfig IB: Revert "remove redundant INFINIBAND kconfig dependencies" 2018-05-28 10:40:16 -06:00
Makefile SUNRPC: remove generic cred code. 2018-12-19 13:52:46 -05:00
addr.c replace strict_strto calls 2014-07-12 18:45:49 -04:00
auth.c sunrpc: kernel BUG at kernel/cred.c:825! 2019-01-09 16:54:23 -05:00
auth_null.c SUNRPC: remove crbind rpc_cred operation 2018-12-19 13:52:46 -05:00
auth_unix.c SUNRPC: simplify auth_unix. 2018-12-19 13:52:46 -05:00
backchannel_rqst.c SUNRPC: Fix some kernel doc complaints 2019-01-02 12:05:18 -05:00
cache.c sunrpc: fix cache_head leak due to queued request 2018-12-04 15:42:08 -05:00
clnt.c SUNRPC: Ensure we respect the RPCSEC_GSS sequence number limit 2019-01-15 15:32:21 -05:00
debugfs.c net: Use octal not symbolic permissions 2018-03-26 12:07:48 -04:00
netns.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
rpc_pipe.c sunrpc: convert to DEFINE_SHOW_ATTRIBUTE 2019-01-02 12:05:49 -05:00
rpcb_clnt.c sunrpc: convert unnecessary GFP_ATOMIC to GFP_NOFS 2019-01-02 12:05:19 -05:00
sched.c NFS/NFSD/SUNRPC: replace generic creds with 'struct cred'. 2018-12-19 13:52:46 -05:00
socklib.c net: dump more useful information in netdev_rx_csum_fault() 2018-11-15 11:37:04 -08:00
stats.c sunrpc: whitespace fixes 2018-07-31 12:53:40 -04:00
sunrpc.h sunrpc: whitespace fixes 2018-07-31 12:53:40 -04:00
sunrpc_syms.c net: Drop pernet_operations::async 2018-03-27 13:18:09 -04:00
svc.c sunrpc: make visible processing error in bc_svc_process() 2018-12-27 21:01:41 -05:00
svc_xprt.c sunrpc: fix debug message in svc_create_xprt() 2018-12-27 21:01:41 -05:00
svcauth.c SUNRPC: Add lockless lookup of the server's auth domain 2018-10-03 11:32:59 -04:00
svcauth_unix.c SUNRPC: Make server side AUTH_UNIX use lockless lookups 2018-10-29 16:58:04 -04:00
svcsock.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2019-01-03 12:53:47 -08:00
sysctl.c Remove 'type' argument from access_ok() function 2019-01-03 18:57:57 -08:00
timer.c net: cleanup unsigned to unsigned int 2012-04-15 12:44:40 -04:00
xdr.c SUNRPC: drop pointless static qualifier in xdr_get_next_encode_buffer() 2018-11-08 12:12:23 -05:00
xprt.c SUNRPC: Address Kerberos performance/behavior regression 2019-01-15 15:36:41 -05:00
xprtmultipath.c SUNRPC: Fix some kernel doc complaints 2019-01-02 12:05:18 -05:00
xprtsock.c SUNRPC: Fix TCP receive code on archs with flush_dcache_page() 2019-01-08 12:44:51 -05:00