diff options
-rw-r--r-- | net/9p/trans_rdma.c | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/net/9p/trans_rdma.c b/net/9p/trans_rdma.c index b374c578ddb8..8f5e4f769d13 100644 --- a/net/9p/trans_rdma.c +++ b/net/9p/trans_rdma.c | |||
@@ -587,12 +587,24 @@ static struct p9_trans_rdma *alloc_rdma(struct p9_rdma_opts *opts) | |||
587 | return rdma; | 587 | return rdma; |
588 | } | 588 | } |
589 | 589 | ||
590 | /* its not clear to me we can do anything after send has been posted */ | ||
591 | static int rdma_cancel(struct p9_client *client, struct p9_req_t *req) | 590 | static int rdma_cancel(struct p9_client *client, struct p9_req_t *req) |
592 | { | 591 | { |
592 | /* Nothing to do here. | ||
593 | * We will take care of it (if we have to) in rdma_cancelled() | ||
594 | */ | ||
593 | return 1; | 595 | return 1; |
594 | } | 596 | } |
595 | 597 | ||
598 | /* A request has been fully flushed without a reply. | ||
599 | * That means we have posted one buffer in excess. | ||
600 | */ | ||
601 | static int rdma_cancelled(struct p9_client *client, struct p9_req_t *req) | ||
602 | { | ||
603 | struct p9_trans_rdma *rdma = client->trans; | ||
604 | atomic_inc(&rdma->excess_rc); | ||
605 | return 0; | ||
606 | } | ||
607 | |||
596 | /** | 608 | /** |
597 | * trans_create_rdma - Transport method for creating atransport instance | 609 | * trans_create_rdma - Transport method for creating atransport instance |
598 | * @client: client instance | 610 | * @client: client instance |
@@ -726,6 +738,7 @@ static struct p9_trans_module p9_rdma_trans = { | |||
726 | .close = rdma_close, | 738 | .close = rdma_close, |
727 | .request = rdma_request, | 739 | .request = rdma_request, |
728 | .cancel = rdma_cancel, | 740 | .cancel = rdma_cancel, |
741 | .cancelled = rdma_cancelled, | ||
729 | }; | 742 | }; |
730 | 743 | ||
731 | /** | 744 | /** |