summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTom Tucker <tom@opengridcomputing.com>2008-10-23 16:30:13 -0500
committerEric Van Hensbergen <ericvh@gmail.com>2008-11-05 13:19:06 -0600
commit517ac45af4b55913587279d89001171c222f22e7 (patch)
treeb3f30f82d27c7b0df885152ce34e9f475f6470dd
parent75fa67706cce5272bcfc51ed646f2da21f3bdb6e (diff)
downloadlinux-stable-517ac45af4b55913587279d89001171c222f22e7.tar.gz
linux-stable-517ac45af4b55913587279d89001171c222f22e7.tar.bz2
linux-stable-517ac45af4b55913587279d89001171c222f22e7.zip
9p: rdma: Set trans prior to requesting async connection ops
The RDMA connection manager is fundamentally asynchronous. Since the async callback context is the client pointer, the transport in the client struct needs to be set prior to calling the first async op. Signed-off-by: Tom Tucker <tom@opengridcomputing.com> Signed-off-by: Eric Van Hensbergen <ericvh@gmail.com>
-rw-r--r--net/9p/trans_rdma.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/net/9p/trans_rdma.c b/net/9p/trans_rdma.c
index 8d6cc4777aae..4e9d2e673cf4 100644
--- a/net/9p/trans_rdma.c
+++ b/net/9p/trans_rdma.c
@@ -589,6 +589,9 @@ rdma_create_trans(struct p9_client *client, const char *addr, char *args)
if (IS_ERR(rdma->cm_id))
goto error;
+ /* Associate the client with the transport */
+ client->trans = rdma;
+
/* Resolve the server's address */
rdma->addr.sin_family = AF_INET;
rdma->addr.sin_addr.s_addr = in_aton(addr);
@@ -669,7 +672,6 @@ rdma_create_trans(struct p9_client *client, const char *addr, char *args)
if (err || (rdma->state != P9_RDMA_CONNECTED))
goto error;
- client->trans = rdma;
client->status = Connected;
return 0;