mirror of
https://github.com/opnsense/src.git
synced 2026-05-28 04:12:45 -04:00
Simplify how the qpair lock is acquired and released.
Sponsored by: Intel
This commit is contained in:
parent
5fa5cc5f12
commit
c2e83b404f
2 changed files with 10 additions and 9 deletions
|
|
@ -802,6 +802,8 @@ nvme_ctrlr_submit_admin_request(struct nvme_controller *ctrlr,
|
|||
|
||||
qpair = &ctrlr->adminq;
|
||||
|
||||
mtx_lock(&qpair->lock);
|
||||
|
||||
tr = nvme_qpair_allocate_tracker(qpair);
|
||||
|
||||
tr->req = req;
|
||||
|
|
@ -814,6 +816,8 @@ nvme_ctrlr_submit_admin_request(struct nvme_controller *ctrlr,
|
|||
panic("bus_dmamap_load returned non-zero!\n");
|
||||
} else
|
||||
nvme_qpair_submit_cmd(tr->qpair, tr);
|
||||
|
||||
mtx_unlock(&qpair->lock);
|
||||
}
|
||||
|
||||
void
|
||||
|
|
@ -829,6 +833,8 @@ nvme_ctrlr_submit_io_request(struct nvme_controller *ctrlr,
|
|||
else
|
||||
qpair = &ctrlr->ioq[0];
|
||||
|
||||
mtx_lock(&qpair->lock);
|
||||
|
||||
tr = nvme_qpair_allocate_tracker(qpair);
|
||||
|
||||
tr->req = req;
|
||||
|
|
@ -850,4 +856,6 @@ nvme_ctrlr_submit_io_request(struct nvme_controller *ctrlr,
|
|||
if (err != 0)
|
||||
panic("bus_dmamap_load returned non-zero!\n");
|
||||
}
|
||||
|
||||
mtx_unlock(&qpair->lock);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -79,8 +79,6 @@ nvme_qpair_allocate_tracker(struct nvme_qpair *qpair)
|
|||
{
|
||||
struct nvme_tracker *tr;
|
||||
|
||||
mtx_lock(&qpair->lock);
|
||||
|
||||
tr = SLIST_FIRST(&qpair->free_tr);
|
||||
if (tr == NULL) {
|
||||
/*
|
||||
|
|
@ -89,7 +87,6 @@ nvme_qpair_allocate_tracker(struct nvme_qpair *qpair)
|
|||
* into the qpair's active tracker array.
|
||||
*/
|
||||
if (qpair->num_tr == qpair->num_entries) {
|
||||
mtx_unlock(&qpair->lock);
|
||||
return (NULL);
|
||||
}
|
||||
|
||||
|
|
@ -97,7 +94,6 @@ nvme_qpair_allocate_tracker(struct nvme_qpair *qpair)
|
|||
M_ZERO | M_NOWAIT);
|
||||
|
||||
if (tr == NULL) {
|
||||
mtx_unlock(&qpair->lock);
|
||||
return (NULL);
|
||||
}
|
||||
|
||||
|
|
@ -160,7 +156,6 @@ nvme_qpair_process_completions(struct nvme_qpair *qpair)
|
|||
callout_stop(&tr->timer);
|
||||
|
||||
if (retry)
|
||||
/* nvme_qpair_submit_cmd() will release the lock. */
|
||||
nvme_qpair_submit_cmd(qpair, tr);
|
||||
else {
|
||||
if (req->payload_size > 0 || req->uio != NULL)
|
||||
|
|
@ -169,10 +164,10 @@ nvme_qpair_process_completions(struct nvme_qpair *qpair)
|
|||
|
||||
nvme_free_request(req);
|
||||
SLIST_INSERT_HEAD(&qpair->free_tr, tr, slist);
|
||||
|
||||
mtx_unlock(&qpair->lock);
|
||||
}
|
||||
|
||||
mtx_unlock(&qpair->lock);
|
||||
|
||||
if (++qpair->cq_head == qpair->num_entries) {
|
||||
qpair->cq_head = 0;
|
||||
qpair->phase = !qpair->phase;
|
||||
|
|
@ -410,6 +405,4 @@ nvme_qpair_submit_cmd(struct nvme_qpair *qpair, struct nvme_tracker *tr)
|
|||
qpair->sq_tail);
|
||||
|
||||
qpair->num_cmds++;
|
||||
|
||||
mtx_unlock(&qpair->lock);
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue