net/9p: handle correctly interrupted 9P requests
[linux-2.6.git] / net / 9p / trans_rdma.c
index a7fe63f704d5aed9cc78be23d96f9b603524c225..ac4990041ebb94d9935126f4cd76430fb7fa7201 100644 (file)
@@ -295,6 +295,7 @@ handle_recv(struct p9_client *client, struct p9_trans_rdma *rdma,
                goto err_out;
 
        req->rc = c->rc;
+       req->status = REQ_STATUS_RCVD;
        p9_client_cb(client, req);
 
        return;
@@ -528,8 +529,6 @@ static void rdma_close(struct p9_client *client)
 
 /**
  * alloc_rdma - Allocate and initialize the rdma transport structure
- * @msize: MTU
- * @dotu: Extension attribute
  * @opts: Mount options structure
  */
 static struct p9_trans_rdma *alloc_rdma(struct p9_rdma_opts *opts)
@@ -588,6 +587,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);
@@ -668,7 +670,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;