diff options
author | Chuck Lever <chuck.lever@oracle.com> | 2014-07-16 15:38:32 -0400 |
---|---|---|
committer | J. Bruce Fields <bfields@redhat.com> | 2014-07-18 11:35:45 -0400 |
commit | 3c45ddf823d679a820adddd53b52c6699c9a05ac (patch) | |
tree | ca52538cb038660181621282d82cf5ff54f8d8e6 /net/sunrpc/xprt.c | |
parent | 5d6031ca742f9f07b9c9d9322538619f3bd155ac (diff) |
svcrdma: Select NFSv4.1 backchannel transport based on forward channel
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>
Diffstat (limited to 'net/sunrpc/xprt.c')
-rw-r--r-- | net/sunrpc/xprt.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/net/sunrpc/xprt.c b/net/sunrpc/xprt.c index c3b2b3369e52..51c63165073c 100644 --- a/net/sunrpc/xprt.c +++ b/net/sunrpc/xprt.c | |||
@@ -1306,7 +1306,7 @@ struct rpc_xprt *xprt_create_transport(struct xprt_create *args) | |||
1306 | } | 1306 | } |
1307 | } | 1307 | } |
1308 | spin_unlock(&xprt_list_lock); | 1308 | spin_unlock(&xprt_list_lock); |
1309 | printk(KERN_ERR "RPC: transport (%d) not supported\n", args->ident); | 1309 | dprintk("RPC: transport (%d) not supported\n", args->ident); |
1310 | return ERR_PTR(-EIO); | 1310 | return ERR_PTR(-EIO); |
1311 | 1311 | ||
1312 | found: | 1312 | found: |