diff options
author | Simon Derr <simon.derr@bull.net> | 2014-03-10 16:38:52 +0100 |
---|---|---|
committer | Eric Van Hensbergen <ericvh@gmail.com> | 2014-03-25 22:38:15 +0100 |
commit | 0bfd6845c0b5e3df3507d2b4d230478980e7f04a (patch) | |
tree | abfd8e782c669baa4f16922ffc0e002eeb0af153 | |
parent | 9pnet_rdma: add cancelled() (diff) | |
download | linux-0bfd6845c0b5e3df3507d2b4d230478980e7f04a.tar.xz linux-0bfd6845c0b5e3df3507d2b4d230478980e7f04a.zip |
9P: Get rid of REQ_STATUS_FLSH
This request state is mostly useless, and properly implementing it
for RDMA would require an extra lock to be taken in handle_recv()
and in rdma_cancel() to avoid this race:
handle_recv() rdma_cancel()
. .
. if req->state == SENT
req->state = RCVD .
. req->state = FLSH
So just get rid of it.
Signed-off-by: Simon Derr <simon.derr@bull.net>
Signed-off-by: Eric Van Hensbergen <ericvh@gmail.com>
-rw-r--r-- | include/net/9p/client.h | 2 | ||||
-rw-r--r-- | net/9p/client.c | 2 | ||||
-rw-r--r-- | net/9p/trans_fd.c | 7 |
3 files changed, 3 insertions, 8 deletions
diff --git a/include/net/9p/client.h b/include/net/9p/client.h index 115aeac401b1..81790a6fc663 100644 --- a/include/net/9p/client.h +++ b/include/net/9p/client.h @@ -67,7 +67,6 @@ enum p9_trans_status { * @REQ_STATUS_ALLOC: request has been allocated but not sent * @REQ_STATUS_UNSENT: request waiting to be sent * @REQ_STATUS_SENT: request sent to server - * @REQ_STATUS_FLSH: a flush has been sent for this request * @REQ_STATUS_RCVD: response received from server * @REQ_STATUS_FLSHD: request has been flushed * @REQ_STATUS_ERROR: request encountered an error on the client side @@ -83,7 +82,6 @@ enum p9_req_status_t { REQ_STATUS_ALLOC, REQ_STATUS_UNSENT, REQ_STATUS_SENT, - REQ_STATUS_FLSH, REQ_STATUS_RCVD, REQ_STATUS_FLSHD, REQ_STATUS_ERROR, diff --git a/net/9p/client.c b/net/9p/client.c index 40e558172bbe..0004cbaac4a4 100644 --- a/net/9p/client.c +++ b/net/9p/client.c @@ -667,7 +667,7 @@ static int p9_client_flush(struct p9_client *c, struct p9_req_t *oldreq) * if we haven't received a response for oldreq, * remove it from the list */ - if (oldreq->status == REQ_STATUS_FLSH) + if (oldreq->status == REQ_STATUS_SENT) if (c->trans_mod->cancelled) c->trans_mod->cancelled(c, oldreq); diff --git a/net/9p/trans_fd.c b/net/9p/trans_fd.c index fda4951c869e..9c806428e91a 100644 --- a/net/9p/trans_fd.c +++ b/net/9p/trans_fd.c @@ -345,8 +345,7 @@ static void p9_read_work(struct work_struct *work) "mux %p pkt: size: %d bytes tag: %d\n", m, n, tag); m->req = p9_tag_lookup(m->client, tag); - if (!m->req || (m->req->status != REQ_STATUS_SENT && - m->req->status != REQ_STATUS_FLSH)) { + if (!m->req || (m->req->status != REQ_STATUS_SENT)) { p9_debug(P9_DEBUG_ERROR, "Unexpected packet tag %d\n", tag); err = -EIO; @@ -701,9 +700,7 @@ static int p9_fd_cancel(struct p9_client *client, struct p9_req_t *req) list_del(&req->req_list); req->status = REQ_STATUS_FLSHD; ret = 0; - } else if (req->status == REQ_STATUS_SENT) - req->status = REQ_STATUS_FLSH; - + } spin_unlock(&client->lock); return ret; |