aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--net/9p/trans_rdma.c15
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 */
591static int rdma_cancel(struct p9_client *client, struct p9_req_t *req) 590static 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 */
601static 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/**