diff options
author | Simon Derr <simon.derr@bull.net> | 2013-06-21 09:32:43 -0400 |
---|---|---|
committer | Eric Van Hensbergen <ericvh@gmail.com> | 2013-07-07 23:18:18 -0400 |
commit | 80b45261a0b263536b043c5ccfc4ba4fc27c2acc (patch) | |
tree | b4d06110f4f121b8e2c26e521c164f5c668e2cc0 /net/9p/client.c | |
parent | 1cff33069a4a1ac9ed080756113ecd17ad408282 (diff) |
9P: Add cancelled() to the transport functions.
RDMA needs to post a buffer for each incoming reply.
Hence it needs to keep count of these and needs to be
aware of whether a flushed request has received a reply
or not.
This patch adds the cancelled() callback to the transport modules.
It is called when RFLUSH has been received and that the corresponding
request will never receive a reply.
Signed-off-by: Simon Derr <simon.derr@bull.net>
Signed-off-by: Eric Van Hensbergen <ericvh@gmail.com>
Diffstat (limited to 'net/9p/client.c')
-rw-r--r-- | net/9p/client.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/net/9p/client.c b/net/9p/client.c index d18a0b22f62c..8b93cae2d11d 100644 --- a/net/9p/client.c +++ b/net/9p/client.c | |||
@@ -658,12 +658,18 @@ static int p9_client_flush(struct p9_client *c, struct p9_req_t *oldreq) | |||
658 | 658 | ||
659 | /* | 659 | /* |
660 | * if we haven't received a response for oldreq, | 660 | * if we haven't received a response for oldreq, |
661 | * remove it from the list. | 661 | * remove it from the list, and notify the transport |
662 | * layer that the reply will never arrive. | ||
662 | */ | 663 | */ |
663 | spin_lock(&c->lock); | 664 | spin_lock(&c->lock); |
664 | if (oldreq->status == REQ_STATUS_FLSH) | 665 | if (oldreq->status == REQ_STATUS_FLSH) { |
665 | list_del(&oldreq->req_list); | 666 | list_del(&oldreq->req_list); |
666 | spin_unlock(&c->lock); | 667 | spin_unlock(&c->lock); |
668 | if (c->trans_mod->cancelled) | ||
669 | c->trans_mod->cancelled(c, req); | ||
670 | } else { | ||
671 | spin_unlock(&c->lock); | ||
672 | } | ||
667 | 673 | ||
668 | p9_free_req(c, req); | 674 | p9_free_req(c, req); |
669 | return 0; | 675 | return 0; |