mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2025-01-18 12:46:11 +07:00
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>
This commit is contained in:
parent
931700d26b
commit
0bfd6845c0
@ -67,7 +67,6 @@ enum p9_trans_status {
|
|||||||
* @REQ_STATUS_ALLOC: request has been allocated but not sent
|
* @REQ_STATUS_ALLOC: request has been allocated but not sent
|
||||||
* @REQ_STATUS_UNSENT: request waiting to be sent
|
* @REQ_STATUS_UNSENT: request waiting to be sent
|
||||||
* @REQ_STATUS_SENT: request sent to server
|
* @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_RCVD: response received from server
|
||||||
* @REQ_STATUS_FLSHD: request has been flushed
|
* @REQ_STATUS_FLSHD: request has been flushed
|
||||||
* @REQ_STATUS_ERROR: request encountered an error on the client side
|
* @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_ALLOC,
|
||||||
REQ_STATUS_UNSENT,
|
REQ_STATUS_UNSENT,
|
||||||
REQ_STATUS_SENT,
|
REQ_STATUS_SENT,
|
||||||
REQ_STATUS_FLSH,
|
|
||||||
REQ_STATUS_RCVD,
|
REQ_STATUS_RCVD,
|
||||||
REQ_STATUS_FLSHD,
|
REQ_STATUS_FLSHD,
|
||||||
REQ_STATUS_ERROR,
|
REQ_STATUS_ERROR,
|
||||||
|
@ -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,
|
* if we haven't received a response for oldreq,
|
||||||
* remove it from the list
|
* remove it from the list
|
||||||
*/
|
*/
|
||||||
if (oldreq->status == REQ_STATUS_FLSH)
|
if (oldreq->status == REQ_STATUS_SENT)
|
||||||
if (c->trans_mod->cancelled)
|
if (c->trans_mod->cancelled)
|
||||||
c->trans_mod->cancelled(c, oldreq);
|
c->trans_mod->cancelled(c, oldreq);
|
||||||
|
|
||||||
|
@ -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);
|
"mux %p pkt: size: %d bytes tag: %d\n", m, n, tag);
|
||||||
|
|
||||||
m->req = p9_tag_lookup(m->client, tag);
|
m->req = p9_tag_lookup(m->client, tag);
|
||||||
if (!m->req || (m->req->status != REQ_STATUS_SENT &&
|
if (!m->req || (m->req->status != REQ_STATUS_SENT)) {
|
||||||
m->req->status != REQ_STATUS_FLSH)) {
|
|
||||||
p9_debug(P9_DEBUG_ERROR, "Unexpected packet tag %d\n",
|
p9_debug(P9_DEBUG_ERROR, "Unexpected packet tag %d\n",
|
||||||
tag);
|
tag);
|
||||||
err = -EIO;
|
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);
|
list_del(&req->req_list);
|
||||||
req->status = REQ_STATUS_FLSHD;
|
req->status = REQ_STATUS_FLSHD;
|
||||||
ret = 0;
|
ret = 0;
|
||||||
} else if (req->status == REQ_STATUS_SENT)
|
}
|
||||||
req->status = REQ_STATUS_FLSH;
|
|
||||||
|
|
||||||
spin_unlock(&client->lock);
|
spin_unlock(&client->lock);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
|
Loading…
Reference in New Issue
Block a user