summaryrefslogtreecommitdiffstats
path: root/sys/dev/nvme/nvme_qpair.c
diff options
context:
space:
mode:
authorjimharris <jimharris@FreeBSD.org>2012-10-18 00:40:40 +0000
committerjimharris <jimharris@FreeBSD.org>2012-10-18 00:40:40 +0000
commit9becceac55c4255e0e79ae97f5b86b3c6f689cfc (patch)
tree373ef04b4408aaa99c6b09bb07639ef4b35324ac /sys/dev/nvme/nvme_qpair.c
parentc9e224f9c92699211c2ddfe2284967950e341d37 (diff)
downloadFreeBSD-src-9becceac55c4255e0e79ae97f5b86b3c6f689cfc.zip
FreeBSD-src-9becceac55c4255e0e79ae97f5b86b3c6f689cfc.tar.gz
Cleanup uio-related code to use struct nvme_request and
nvme_ctrlr_submit_io_request(). While here, also fix case where a uio may have more than 1 iovec. NVMe's definition of SGEs (called PRPs) only allows for the first SGE to start on a non-page boundary. The simplest way to handle this is to construct a temporary uio for each iovec, and submit an NVMe request for each. Sponsored by: Intel
Diffstat (limited to 'sys/dev/nvme/nvme_qpair.c')
-rw-r--r--sys/dev/nvme/nvme_qpair.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/sys/dev/nvme/nvme_qpair.c b/sys/dev/nvme/nvme_qpair.c
index 468a146..5298f17 100644
--- a/sys/dev/nvme/nvme_qpair.c
+++ b/sys/dev/nvme/nvme_qpair.c
@@ -163,7 +163,7 @@ nvme_qpair_process_completions(struct nvme_qpair *qpair)
/* nvme_qpair_submit_cmd() will release the lock. */
nvme_qpair_submit_cmd(qpair, tr);
else {
- if (req->payload_size > 0)
+ if (req->payload_size > 0 || req->uio != NULL)
bus_dmamap_unload(qpair->dma_tag,
tr->payload_dma_map);
OpenPOWER on IntegriCloud