diff --git a/lib/nvmf/ctrlr.c b/lib/nvmf/ctrlr.c index 65562bf28..529b8b901 100644 --- a/lib/nvmf/ctrlr.c +++ b/lib/nvmf/ctrlr.c @@ -3601,9 +3601,6 @@ spdk_nvmf_request_zcopy_start(struct spdk_nvmf_request *req) goto end; } - /* backward compatible */ - req->data = req->iov[0].iov_base; - /* Set iovcnt to be the maximum number of * iovs that the ZCOPY can use */ diff --git a/lib/nvmf/ctrlr_bdev.c b/lib/nvmf/ctrlr_bdev.c index 5710cadbb..d301689d5 100644 --- a/lib/nvmf/ctrlr_bdev.c +++ b/lib/nvmf/ctrlr_bdev.c @@ -816,11 +816,15 @@ nvmf_bdev_ctrlr_start_zcopy_complete(struct spdk_bdev_io *bdev_io, bool success, spdk_bdev_io_get_iovec(bdev_io, &iov, &iovcnt); assert(iovcnt <= NVMF_REQ_MAX_BUFFERS); + assert(iovcnt > 0); req->iovcnt = iovcnt; assert(req->iov == iov); + /* backward compatible */ + req->data = req->iov[0].iov_base; + req->zcopy_bdev_io = bdev_io; /* Preserve the bdev_io for the end zcopy */ spdk_nvmf_request_complete(req);