svn commit: r241663 - head/sys/dev/nvme
Jim Harris
jimharris at FreeBSD.org
Thu Oct 18 00:43:26 UTC 2012
Author: jimharris
Date: Thu Oct 18 00:43:25 2012
New Revision: 241663
URL: http://svn.freebsd.org/changeset/base/241663
Log:
Create nvme_qpair_submit_request() which eliminates all of the code
duplication between the admin and io controller-level submit
functions.
Sponsored by: Intel
Modified:
head/sys/dev/nvme/nvme_ctrlr.c
head/sys/dev/nvme/nvme_private.h
head/sys/dev/nvme/nvme_qpair.c
Modified: head/sys/dev/nvme/nvme_ctrlr.c
==============================================================================
--- head/sys/dev/nvme/nvme_ctrlr.c Thu Oct 18 00:41:31 2012 (r241662)
+++ head/sys/dev/nvme/nvme_ctrlr.c Thu Oct 18 00:43:25 2012 (r241663)
@@ -796,28 +796,8 @@ void
nvme_ctrlr_submit_admin_request(struct nvme_controller *ctrlr,
struct nvme_request *req)
{
- struct nvme_qpair *qpair;
- struct nvme_tracker *tr;
- int err;
-
- qpair = &ctrlr->adminq;
-
- mtx_lock(&qpair->lock);
-
- tr = nvme_qpair_allocate_tracker(qpair);
-
- tr->req = req;
- if (req->payload_size > 0) {
- err = bus_dmamap_load(tr->qpair->dma_tag, tr->payload_dma_map,
- req->payload, req->payload_size,
- nvme_payload_map, tr, 0);
- if (err != 0)
- panic("bus_dmamap_load returned non-zero!\n");
- } else
- nvme_qpair_submit_cmd(tr->qpair, tr);
-
- mtx_unlock(&qpair->lock);
+ nvme_qpair_submit_request(&ctrlr->adminq, req);
}
void
@@ -825,37 +805,11 @@ nvme_ctrlr_submit_io_request(struct nvme
struct nvme_request *req)
{
struct nvme_qpair *qpair;
- struct nvme_tracker *tr;
- int err;
if (ctrlr->per_cpu_io_queues)
qpair = &ctrlr->ioq[curcpu];
else
qpair = &ctrlr->ioq[0];
- mtx_lock(&qpair->lock);
-
- tr = nvme_qpair_allocate_tracker(qpair);
-
- tr->req = req;
-
- if (req->uio == NULL) {
- if (req->payload_size > 0) {
- err = bus_dmamap_load(tr->qpair->dma_tag,
- tr->payload_dma_map, req->payload,
- req->payload_size,
- nvme_payload_map, tr, 0);
- if (err != 0)
- panic("bus_dmamap_load returned non-zero!\n");
- } else
- nvme_qpair_submit_cmd(tr->qpair, tr);
- } else {
- err = bus_dmamap_load_uio(tr->qpair->dma_tag,
- tr->payload_dma_map, req->uio,
- nvme_payload_map_uio, tr, 0);
- if (err != 0)
- panic("bus_dmamap_load returned non-zero!\n");
- }
-
- mtx_unlock(&qpair->lock);
+ nvme_qpair_submit_request(qpair, req);
}
Modified: head/sys/dev/nvme/nvme_private.h
==============================================================================
--- head/sys/dev/nvme/nvme_private.h Thu Oct 18 00:41:31 2012 (r241662)
+++ head/sys/dev/nvme/nvme_private.h Thu Oct 18 00:43:25 2012 (r241663)
@@ -354,6 +354,8 @@ void nvme_qpair_submit_cmd(struct nvme_q
struct nvme_tracker *tr);
void nvme_qpair_process_completions(struct nvme_qpair *qpair);
struct nvme_tracker * nvme_qpair_allocate_tracker(struct nvme_qpair *qpair);
+void nvme_qpair_submit_request(struct nvme_qpair *qpair,
+ struct nvme_request *req);
void nvme_admin_qpair_destroy(struct nvme_qpair *qpair);
Modified: head/sys/dev/nvme/nvme_qpair.c
==============================================================================
--- head/sys/dev/nvme/nvme_qpair.c Thu Oct 18 00:41:31 2012 (r241662)
+++ head/sys/dev/nvme/nvme_qpair.c Thu Oct 18 00:43:25 2012 (r241663)
@@ -406,3 +406,35 @@ nvme_qpair_submit_cmd(struct nvme_qpair
qpair->num_cmds++;
}
+
+void
+nvme_qpair_submit_request(struct nvme_qpair *qpair, struct nvme_request *req)
+{
+ struct nvme_tracker *tr;
+ int err;
+
+ mtx_lock(&qpair->lock);
+
+ tr = nvme_qpair_allocate_tracker(qpair);
+ tr->req = req;
+
+ if (req->uio == NULL) {
+ if (req->payload_size > 0) {
+ err = bus_dmamap_load(tr->qpair->dma_tag,
+ tr->payload_dma_map, req->payload,
+ req->payload_size,
+ nvme_payload_map, tr, 0);
+ if (err != 0)
+ panic("bus_dmamap_load returned non-zero!\n");
+ } else
+ nvme_qpair_submit_cmd(tr->qpair, tr);
+ } else {
+ err = bus_dmamap_load_uio(tr->qpair->dma_tag,
+ tr->payload_dma_map, req->uio,
+ nvme_payload_map_uio, tr, 0);
+ if (err != 0)
+ panic("bus_dmamap_load returned non-zero!\n");
+ }
+
+ mtx_unlock(&qpair->lock);
+}
More information about the svn-src-head
mailing list