nvme: add macros to populate nvme_payload

The definitions of these macros will change in an upcoming patch that
modifies the way nvme_payload is laid out.

Change-Id: Ic6edc18928542b07be7519a72bdbf6babbeb0131
Signed-off-by: Daniel Verkamp <daniel.verkamp@intel.com>
Reviewed-on: https://review.gerrithub.io/413174
Tested-by: SPDK Automated Test System <sys_sgsw@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
This commit is contained in:
Daniel Verkamp 2018-05-31 17:52:25 -07:00
parent 5c2ccd0628
commit caf85d8f23
9 changed files with 38 additions and 59 deletions

View File

@ -182,9 +182,7 @@ nvme_allocate_request_contig(struct spdk_nvme_qpair *qpair,
{
struct nvme_payload payload;
payload.type = NVME_PAYLOAD_TYPE_CONTIG;
payload.u.contig = buffer;
payload.md = NULL;
payload = NVME_PAYLOAD_CONTIG(buffer, NULL);
return nvme_allocate_request(qpair, &payload, payload_size, cb_fn, cb_arg);
}

View File

@ -63,9 +63,7 @@ spdk_nvme_ctrlr_cmd_io_raw_with_md(struct spdk_nvme_ctrlr *ctrlr,
struct nvme_request *req;
struct nvme_payload payload;
payload.type = NVME_PAYLOAD_TYPE_CONTIG;
payload.u.contig = buf;
payload.md = md_buf;
payload = NVME_PAYLOAD_CONTIG(buf, md_buf);
req = nvme_allocate_request(qpair, &payload, len, cb_fn, cb_arg);
if (req == NULL) {

View File

@ -160,6 +160,22 @@ struct __attribute__((packed)) nvme_payload {
uint8_t type;
};
#define NVME_PAYLOAD_CONTIG(contig_, md_) \
(struct nvme_payload) { \
.u.contig = (contig_), \
.md = (md_), \
.type = NVME_PAYLOAD_TYPE_CONTIG, \
}
#define NVME_PAYLOAD_SGL(reset_sgl_fn_, next_sge_fn_, cb_arg_, md_) \
(struct nvme_payload) { \
.u.sgl.reset_sgl_fn = (reset_sgl_fn_), \
.u.sgl.next_sge_fn = (next_sge_fn_), \
.u.sgl.cb_arg = (cb_arg_), \
.md = (md_), \
.type = NVME_PAYLOAD_TYPE_SGL, \
}
static inline enum nvme_payload_type
nvme_payload_type(const struct nvme_payload *payload) {
return payload->type;

View File

@ -507,9 +507,7 @@ spdk_nvme_ns_cmd_compare(struct spdk_nvme_ns *ns, struct spdk_nvme_qpair *qpair,
struct nvme_request *req;
struct nvme_payload payload;
payload.type = NVME_PAYLOAD_TYPE_CONTIG;
payload.u.contig = buffer;
payload.md = NULL;
payload = NVME_PAYLOAD_CONTIG(buffer, NULL);
req = _nvme_ns_cmd_rw(ns, qpair, &payload, 0, 0, lba, lba_count, cb_fn, cb_arg,
SPDK_NVME_OPC_COMPARE,
@ -538,9 +536,7 @@ spdk_nvme_ns_cmd_compare_with_md(struct spdk_nvme_ns *ns, struct spdk_nvme_qpair
struct nvme_request *req;
struct nvme_payload payload;
payload.type = NVME_PAYLOAD_TYPE_CONTIG;
payload.u.contig = buffer;
payload.md = metadata;
payload = NVME_PAYLOAD_CONTIG(buffer, metadata);
req = _nvme_ns_cmd_rw(ns, qpair, &payload, 0, 0, lba, lba_count, cb_fn, cb_arg,
SPDK_NVME_OPC_COMPARE,
@ -572,11 +568,7 @@ spdk_nvme_ns_cmd_comparev(struct spdk_nvme_ns *ns, struct spdk_nvme_qpair *qpair
return -EINVAL;
}
payload.type = NVME_PAYLOAD_TYPE_SGL;
payload.md = NULL;
payload.u.sgl.reset_sgl_fn = reset_sgl_fn;
payload.u.sgl.next_sge_fn = next_sge_fn;
payload.u.sgl.cb_arg = cb_arg;
payload = NVME_PAYLOAD_SGL(reset_sgl_fn, next_sge_fn, cb_arg, NULL);
req = _nvme_ns_cmd_rw(ns, qpair, &payload, 0, 0, lba, lba_count, cb_fn, cb_arg,
SPDK_NVME_OPC_COMPARE,
@ -602,9 +594,7 @@ spdk_nvme_ns_cmd_read(struct spdk_nvme_ns *ns, struct spdk_nvme_qpair *qpair, vo
struct nvme_request *req;
struct nvme_payload payload;
payload.type = NVME_PAYLOAD_TYPE_CONTIG;
payload.u.contig = buffer;
payload.md = NULL;
payload = NVME_PAYLOAD_CONTIG(buffer, NULL);
req = _nvme_ns_cmd_rw(ns, qpair, &payload, 0, 0, lba, lba_count, cb_fn, cb_arg, SPDK_NVME_OPC_READ,
io_flags, 0,
@ -631,9 +621,7 @@ spdk_nvme_ns_cmd_read_with_md(struct spdk_nvme_ns *ns, struct spdk_nvme_qpair *q
struct nvme_request *req;
struct nvme_payload payload;
payload.type = NVME_PAYLOAD_TYPE_CONTIG;
payload.u.contig = buffer;
payload.md = metadata;
payload = NVME_PAYLOAD_CONTIG(buffer, metadata);
req = _nvme_ns_cmd_rw(ns, qpair, &payload, 0, 0, lba, lba_count, cb_fn, cb_arg, SPDK_NVME_OPC_READ,
io_flags,
@ -664,11 +652,7 @@ spdk_nvme_ns_cmd_readv(struct spdk_nvme_ns *ns, struct spdk_nvme_qpair *qpair,
return -EINVAL;
}
payload.type = NVME_PAYLOAD_TYPE_SGL;
payload.md = NULL;
payload.u.sgl.reset_sgl_fn = reset_sgl_fn;
payload.u.sgl.next_sge_fn = next_sge_fn;
payload.u.sgl.cb_arg = cb_arg;
payload = NVME_PAYLOAD_SGL(reset_sgl_fn, next_sge_fn, cb_arg, NULL);
req = _nvme_ns_cmd_rw(ns, qpair, &payload, 0, 0, lba, lba_count, cb_fn, cb_arg, SPDK_NVME_OPC_READ,
io_flags, 0, 0, true);
@ -693,9 +677,7 @@ spdk_nvme_ns_cmd_write(struct spdk_nvme_ns *ns, struct spdk_nvme_qpair *qpair,
struct nvme_request *req;
struct nvme_payload payload;
payload.type = NVME_PAYLOAD_TYPE_CONTIG;
payload.u.contig = buffer;
payload.md = NULL;
payload = NVME_PAYLOAD_CONTIG(buffer, NULL);
req = _nvme_ns_cmd_rw(ns, qpair, &payload, 0, 0, lba, lba_count, cb_fn, cb_arg, SPDK_NVME_OPC_WRITE,
io_flags, 0, 0, true);
@ -720,9 +702,7 @@ spdk_nvme_ns_cmd_write_with_md(struct spdk_nvme_ns *ns, struct spdk_nvme_qpair *
struct nvme_request *req;
struct nvme_payload payload;
payload.type = NVME_PAYLOAD_TYPE_CONTIG;
payload.u.contig = buffer;
payload.md = metadata;
payload = NVME_PAYLOAD_CONTIG(buffer, metadata);
req = _nvme_ns_cmd_rw(ns, qpair, &payload, 0, 0, lba, lba_count, cb_fn, cb_arg, SPDK_NVME_OPC_WRITE,
io_flags, apptag_mask, apptag, true);
@ -752,11 +732,7 @@ spdk_nvme_ns_cmd_writev(struct spdk_nvme_ns *ns, struct spdk_nvme_qpair *qpair,
return -EINVAL;
}
payload.type = NVME_PAYLOAD_TYPE_SGL;
payload.md = NULL;
payload.u.sgl.reset_sgl_fn = reset_sgl_fn;
payload.u.sgl.next_sge_fn = next_sge_fn;
payload.u.sgl.cb_arg = cb_arg;
payload = NVME_PAYLOAD_SGL(reset_sgl_fn, next_sge_fn, cb_arg, NULL);
req = _nvme_ns_cmd_rw(ns, qpair, &payload, 0, 0, lba, lba_count, cb_fn, cb_arg, SPDK_NVME_OPC_WRITE,
io_flags, 0, 0, true);

View File

@ -525,6 +525,7 @@ test_nvme_user_copy_cmd_complete(void)
struct nvme_request req;
int test_data = 0xdeadbeef;
int buff_size = sizeof(int);
void *buff;
static struct spdk_nvme_cpl cpl;
memset(&req, 0, sizeof(req));
@ -540,10 +541,10 @@ test_nvme_user_copy_cmd_complete(void)
SPDK_CU_ASSERT_FATAL(req.user_buffer != NULL);
memset(req.user_buffer, 0, buff_size);
req.payload_size = buff_size;
req.payload.type = NVME_PAYLOAD_TYPE_CONTIG;
req.payload.u.contig = malloc(buff_size);
SPDK_CU_ASSERT_FATAL(req.payload.u.contig != NULL);
memcpy(req.payload.u.contig, &test_data, buff_size);
buff = malloc(buff_size);
SPDK_CU_ASSERT_FATAL(buff != NULL);
req.payload = NVME_PAYLOAD_CONTIG(buff, NULL);
memcpy(buff, &test_data, buff_size);
req.cmd.opc = SPDK_NVME_OPC_GET_LOG_PAGE;
req.pid = getpid();
@ -572,7 +573,7 @@ test_nvme_user_copy_cmd_complete(void)
/* clean up */
free(req.user_buffer);
free(req.payload.u.contig);
free(buff);
/* return spdk_dma_zmalloc/freee to unmocked */
MOCK_SET_P(spdk_dma_zmalloc, void *, &ut_spdk_dma_zmalloc);

View File

@ -442,8 +442,7 @@ nvme_allocate_request_contig(struct spdk_nvme_qpair *qpair, void *buffer, uint32
{
struct nvme_payload payload;
payload.type = NVME_PAYLOAD_TYPE_CONTIG;
payload.u.contig = buffer;
payload = NVME_PAYLOAD_CONTIG(buffer, NULL);
return nvme_allocate_request(qpair, &payload, payload_size, cb_fn, cb_arg);
}

View File

@ -272,9 +272,7 @@ nvme_allocate_request_contig(struct spdk_nvme_qpair *qpair, void *buffer, uint32
{
struct nvme_payload payload;
payload.type = NVME_PAYLOAD_TYPE_CONTIG;
payload.u.contig = buffer;
payload.md = NULL;
payload = NVME_PAYLOAD_CONTIG(buffer, NULL);
return nvme_allocate_request(qpair, &payload, payload_size, cb_fn, cb_arg);
}

View File

@ -468,10 +468,7 @@ test_sgl_req(void)
uint64_t i;
struct io_request io_req = {};
payload.type = NVME_PAYLOAD_TYPE_SGL;
payload.u.sgl.reset_sgl_fn = nvme_request_reset_sgl;
payload.u.sgl.next_sge_fn = nvme_request_next_sge;
payload.u.sgl.cb_arg = &io_req;
payload = NVME_PAYLOAD_SGL(nvme_request_reset_sgl, nvme_request_next_sge, &io_req, NULL);
prepare_submit_request_test(&qpair, &ctrlr);
req = nvme_allocate_request(&payload, 0x1000, NULL, &io_req);
@ -546,10 +543,7 @@ test_hw_sgl_req(void)
uint64_t i;
struct io_request io_req = {};
payload.type = NVME_PAYLOAD_TYPE_SGL;
payload.u.sgl.reset_sgl_fn = nvme_request_reset_sgl;
payload.u.sgl.next_sge_fn = nvme_request_next_sge;
payload.u.sgl.cb_arg = &io_req;
payload = NVME_PAYLOAD_SGL(nvme_request_reset_sgl, nvme_request_next_sge, &io_req, NULL);
prepare_submit_request_test(&qpair, &ctrlr);
req = nvme_allocate_request(&payload, 0x1000, NULL, &io_req);

View File

@ -86,8 +86,7 @@ nvme_allocate_request_contig(struct spdk_nvme_qpair *qpair, void *buffer, uint32
{
struct nvme_payload payload;
payload.type = NVME_PAYLOAD_TYPE_CONTIG;
payload.u.contig = buffer;
payload = NVME_PAYLOAD_CONTIG(buffer, NULL);
return nvme_allocate_request(qpair, &payload, payload_size, cb_fn, cb_arg);
}