linux/net/sunrpc/xprtrdma
Chuck Lever 96a93162e2 svcrdma: Select NFSv4.1 backchannel transport based on forward channel
commit 3c45ddf823 upstream.

The current code always selects XPRT_TRANSPORT_BC_TCP for the back
channel, even when the forward channel was not TCP (eg, RDMA). When
a 4.1 mount is attempted with RDMA, the server panics in the TCP BC
code when trying to send CB_NULL.

Instead, construct the transport protocol number from the forward
channel transport or'd with XPRT_TRANSPORT_BC. Transports that do
not support bi-directional RPC will not have registered a "BC"
transport, causing create_backchannel_client() to fail immediately.

Fixes: https://bugzilla.linux-nfs.org/show_bug.cgi?id=265
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: J. Bruce Fields <bfields@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2014-09-05 16:34:18 -07:00
..
Makefile
rpc_rdma.c SUNRPC: Eliminate task->tk_xprt accesses that bypass rcu_dereference() 2013-02-01 10:13:47 -05:00
svc_rdma.c net: Convert uses of typedef ctl_table to struct ctl_table 2013-06-13 02:36:09 -07:00
svc_rdma_marshal.c svcrdma: underflow issue in decode_write_list() 2013-07-15 11:46:23 -04:00
svc_rdma_recvfrom.c nfsd4: cleanup: replace rq_resused count by rq_next_page pointer 2012-12-17 22:00:16 -05:00
svc_rdma_sendto.c nfsd4: cleanup: replace rq_resused count by rq_next_page pointer 2012-12-17 22:00:16 -05:00
svc_rdma_transport.c svcrdma: Select NFSv4.1 backchannel transport based on forward channel 2014-09-05 16:34:18 -07:00
transport.c net: Convert uses of typedef ctl_table to struct ctl_table 2013-06-13 02:36:09 -07:00
verbs.c IB/core: Add "type 2" memory windows support 2013-02-21 11:51:45 -08:00
xprt_rdma.h SUNRPC: Eliminate task->tk_xprt accesses that bypass rcu_dereference() 2013-02-01 10:13:47 -05:00