diff --git a/lib/nvme/nvme.c b/lib/nvme/nvme.c index d30d1d0b10..3304784531 100644 --- a/lib/nvme/nvme.c +++ b/lib/nvme/nvme.c @@ -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); } diff --git a/lib/nvme/nvme_ctrlr_cmd.c b/lib/nvme/nvme_ctrlr_cmd.c index fc02c4cf76..11bb635673 100644 --- a/lib/nvme/nvme_ctrlr_cmd.c +++ b/lib/nvme/nvme_ctrlr_cmd.c @@ -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) { diff --git a/lib/nvme/nvme_internal.h b/lib/nvme/nvme_internal.h index f342e8c0b2..b15e0e91a8 100644 --- a/lib/nvme/nvme_internal.h +++ b/lib/nvme/nvme_internal.h @@ -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; diff --git a/lib/nvme/nvme_ns_cmd.c b/lib/nvme/nvme_ns_cmd.c index d846b9d4b1..12dc4f7008 100644 --- a/lib/nvme/nvme_ns_cmd.c +++ b/lib/nvme/nvme_ns_cmd.c @@ -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); diff --git a/test/unit/lib/nvme/nvme.c/nvme_ut.c b/test/unit/lib/nvme/nvme.c/nvme_ut.c index cb96bd9eb8..65069a051f 100644 --- a/test/unit/lib/nvme/nvme.c/nvme_ut.c +++ b/test/unit/lib/nvme/nvme.c/nvme_ut.c @@ -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); diff --git a/test/unit/lib/nvme/nvme_ctrlr.c/nvme_ctrlr_ut.c b/test/unit/lib/nvme/nvme_ctrlr.c/nvme_ctrlr_ut.c index fbaa08b3be..69ff1bfd57 100644 --- a/test/unit/lib/nvme/nvme_ctrlr.c/nvme_ctrlr_ut.c +++ b/test/unit/lib/nvme/nvme_ctrlr.c/nvme_ctrlr_ut.c @@ -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); } diff --git a/test/unit/lib/nvme/nvme_ctrlr_cmd.c/nvme_ctrlr_cmd_ut.c b/test/unit/lib/nvme/nvme_ctrlr_cmd.c/nvme_ctrlr_cmd_ut.c index 4be3fcefbe..61c6db498f 100644 --- a/test/unit/lib/nvme/nvme_ctrlr_cmd.c/nvme_ctrlr_cmd_ut.c +++ b/test/unit/lib/nvme/nvme_ctrlr_cmd.c/nvme_ctrlr_cmd_ut.c @@ -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); } diff --git a/test/unit/lib/nvme/nvme_pcie.c/nvme_pcie_ut.c b/test/unit/lib/nvme/nvme_pcie.c/nvme_pcie_ut.c index 454e8f0a34..b0cc740bf8 100644 --- a/test/unit/lib/nvme/nvme_pcie.c/nvme_pcie_ut.c +++ b/test/unit/lib/nvme/nvme_pcie.c/nvme_pcie_ut.c @@ -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); diff --git a/test/unit/lib/nvme/nvme_qpair.c/nvme_qpair_ut.c b/test/unit/lib/nvme/nvme_qpair.c/nvme_qpair_ut.c index 1fb5c8c390..b02c0df96e 100644 --- a/test/unit/lib/nvme/nvme_qpair.c/nvme_qpair_ut.c +++ b/test/unit/lib/nvme/nvme_qpair.c/nvme_qpair_ut.c @@ -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); }