diff options
author | jimharris <jimharris@FreeBSD.org> | 2012-10-18 00:40:40 +0000 |
---|---|---|
committer | jimharris <jimharris@FreeBSD.org> | 2012-10-18 00:40:40 +0000 |
commit | 9becceac55c4255e0e79ae97f5b86b3c6f689cfc (patch) | |
tree | 373ef04b4408aaa99c6b09bb07639ef4b35324ac /sys/dev/nvme/nvme_qpair.c | |
parent | c9e224f9c92699211c2ddfe2284967950e341d37 (diff) | |
download | FreeBSD-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.c | 2 |
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); |