diff options
author | Chuck Lever <chuck.lever@oracle.com> | 2014-07-16 15:38:32 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2014-09-05 16:28:37 -0700 |
commit | c73df6f73c8167b9ed68d653d1a5c761c209d2b5 (patch) | |
tree | 32de203ceef2bc2440be770ee8cc56e3032ec132 /include | |
parent | caacbac7bf646a29049bec3d9f5fcc20c846b3b2 (diff) | |
download | linux-3.10-c73df6f73c8167b9ed68d653d1a5c761c209d2b5.tar.gz linux-3.10-c73df6f73c8167b9ed68d653d1a5c761c209d2b5.tar.bz2 linux-3.10-c73df6f73c8167b9ed68d653d1a5c761c209d2b5.zip |
svcrdma: Select NFSv4.1 backchannel transport based on forward channel
commit 3c45ddf823d679a820adddd53b52c6699c9a05ac 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>
Diffstat (limited to 'include')
-rw-r--r-- | include/linux/sunrpc/svc_xprt.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/include/linux/sunrpc/svc_xprt.h b/include/linux/sunrpc/svc_xprt.h index b05963f09eb..f5bfb1a80ab 100644 --- a/include/linux/sunrpc/svc_xprt.h +++ b/include/linux/sunrpc/svc_xprt.h @@ -32,6 +32,7 @@ struct svc_xprt_class { struct svc_xprt_ops *xcl_ops; struct list_head xcl_list; u32 xcl_max_payload; + int xcl_ident; }; /* |