Loading lib/nvme/nvme.c +8 −0 Original line number Diff line number Diff line Loading @@ -146,6 +146,14 @@ nvme_allocate_request_null(spdk_nvme_cmd_cb cb_fn, void *cb_arg) return nvme_allocate_request_contig(NULL, 0, cb_fn, cb_arg); } void nvme_remove_child_request(struct nvme_request *parent, struct nvme_request *child) { parent->num_children--; TAILQ_REMOVE(&parent->children, child, child_tailq); } void nvme_free_request(struct nvme_request *req) { Loading lib/nvme/nvme_internal.h +1 −0 Original line number Diff line number Diff line Loading @@ -549,6 +549,7 @@ struct nvme_request *nvme_allocate_request_null(spdk_nvme_cmd_cb cb_fn, void *cb struct nvme_request *nvme_allocate_request_contig(void *buffer, uint32_t payload_size, spdk_nvme_cmd_cb cb_fn, void *cb_arg); void nvme_free_request(struct nvme_request *req); void nvme_remove_child_request(struct nvme_request *parent, struct nvme_request *child); bool nvme_intel_has_quirk(struct pci_id *id, uint64_t quirk); void spdk_nvme_ctrlr_opts_set_defaults(struct spdk_nvme_ctrlr_opts *opts); Loading lib/nvme/nvme_ns_cmd.c +1 −2 Original line number Diff line number Diff line Loading @@ -44,8 +44,7 @@ nvme_cb_complete_child(void *child_arg, const struct spdk_nvme_cpl *cpl) struct nvme_request *child = child_arg; struct nvme_request *parent = child->parent; parent->num_children--; TAILQ_REMOVE(&parent->children, child, child_tailq); nvme_remove_child_request(parent, child); if (spdk_nvme_cpl_is_error(cpl)) { memcpy(&parent->parent_status, cpl, sizeof(*cpl)); Loading test/lib/nvme/unit/nvme_ns_cmd_c/nvme_ns_cmd_ut.c +12 −12 Original line number Diff line number Diff line Loading @@ -191,7 +191,7 @@ split_test2(void) CU_ASSERT(g_request->num_children == 2); child = TAILQ_FIRST(&g_request->children); TAILQ_REMOVE(&g_request->children, child, child_tailq); nvme_remove_child_request(g_request, child); nvme_cmd_interpret_rw(&child->cmd, &cmd_lba, &cmd_lba_count); CU_ASSERT(child->num_children == 0); CU_ASSERT(child->payload_size == 128 * 1024); Loading @@ -200,7 +200,7 @@ split_test2(void) nvme_free_request(child); child = TAILQ_FIRST(&g_request->children); TAILQ_REMOVE(&g_request->children, child, child_tailq); nvme_remove_child_request(g_request, child); nvme_cmd_interpret_rw(&child->cmd, &cmd_lba, &cmd_lba_count); CU_ASSERT(child->num_children == 0); CU_ASSERT(child->payload_size == 128 * 1024); Loading Loading @@ -247,7 +247,7 @@ split_test3(void) SPDK_CU_ASSERT_FATAL(g_request->num_children == 2); child = TAILQ_FIRST(&g_request->children); TAILQ_REMOVE(&g_request->children, child, child_tailq); nvme_remove_child_request(g_request, child); nvme_cmd_interpret_rw(&child->cmd, &cmd_lba, &cmd_lba_count); CU_ASSERT(child->num_children == 0); CU_ASSERT(child->payload_size == 128 * 1024); Loading @@ -256,7 +256,7 @@ split_test3(void) nvme_free_request(child); child = TAILQ_FIRST(&g_request->children); TAILQ_REMOVE(&g_request->children, child, child_tailq); nvme_remove_child_request(g_request, child); nvme_cmd_interpret_rw(&child->cmd, &cmd_lba, &cmd_lba_count); CU_ASSERT(child->num_children == 0); CU_ASSERT(child->payload_size == 128 * 1024); Loading Loading @@ -306,7 +306,7 @@ split_test4(void) SPDK_CU_ASSERT_FATAL(g_request->num_children == 3); child = TAILQ_FIRST(&g_request->children); TAILQ_REMOVE(&g_request->children, child, child_tailq); nvme_remove_child_request(g_request, child); nvme_cmd_interpret_rw(&child->cmd, &cmd_lba, &cmd_lba_count); CU_ASSERT(child->num_children == 0); CU_ASSERT(child->payload_size == (256 - 10) * 512); Loading @@ -318,7 +318,7 @@ split_test4(void) nvme_free_request(child); child = TAILQ_FIRST(&g_request->children); TAILQ_REMOVE(&g_request->children, child, child_tailq); nvme_remove_child_request(g_request, child); nvme_cmd_interpret_rw(&child->cmd, &cmd_lba, &cmd_lba_count); CU_ASSERT(child->num_children == 0); CU_ASSERT(child->payload_size == 128 * 1024); Loading @@ -330,7 +330,7 @@ split_test4(void) nvme_free_request(child); child = TAILQ_FIRST(&g_request->children); TAILQ_REMOVE(&g_request->children, child, child_tailq); nvme_remove_child_request(g_request, child); nvme_cmd_interpret_rw(&child->cmd, &cmd_lba, &cmd_lba_count); CU_ASSERT(child->num_children == 0); CU_ASSERT(child->payload_size == 10 * 512); Loading @@ -355,10 +355,10 @@ test_cmd_child_request(void) struct spdk_nvme_ctrlr ctrlr; struct spdk_nvme_qpair qpair; int rc = 0; struct nvme_request *child; struct nvme_request *child, *tmp; void *payload; uint64_t lba = 0x1000; uint32_t i; uint32_t i = 0; uint32_t offset = 0; uint32_t sector_size = 512; uint32_t max_io_size = 128 * 1024; Loading @@ -383,9 +383,8 @@ test_cmd_child_request(void) CU_ASSERT(rc == 0); CU_ASSERT(g_request->num_children == 4); for (i = 0; i < g_request->num_children; i++) { child = TAILQ_FIRST(&g_request->children); TAILQ_REMOVE(&g_request->children, child, child_tailq); TAILQ_FOREACH_SAFE(child, &g_request->children, child_tailq, tmp) { nvme_remove_child_request(g_request, child); CU_ASSERT(child->payload_offset == offset); CU_ASSERT(child->cmd.opc == SPDK_NVME_OPC_READ); CU_ASSERT(child->cmd.nsid == ns.id); Loading @@ -393,6 +392,7 @@ test_cmd_child_request(void) CU_ASSERT(child->cmd.cdw12 == ((sectors_per_max_io - 1) | 0)); offset += max_io_size; nvme_free_request(child); i++; } free(payload); Loading test/lib/nvme/unit/nvme_qpair_c/nvme_qpair_ut.c +8 −0 Original line number Diff line number Diff line Loading @@ -176,6 +176,14 @@ nvme_free_request(struct nvme_request *req) nvme_dealloc_request(req); } void nvme_remove_child_request(struct nvme_request *parent, struct nvme_request *child) { parent->num_children--; TAILQ_REMOVE(&parent->children, child, child_tailq); } static void test1(void) { Loading Loading
lib/nvme/nvme.c +8 −0 Original line number Diff line number Diff line Loading @@ -146,6 +146,14 @@ nvme_allocate_request_null(spdk_nvme_cmd_cb cb_fn, void *cb_arg) return nvme_allocate_request_contig(NULL, 0, cb_fn, cb_arg); } void nvme_remove_child_request(struct nvme_request *parent, struct nvme_request *child) { parent->num_children--; TAILQ_REMOVE(&parent->children, child, child_tailq); } void nvme_free_request(struct nvme_request *req) { Loading
lib/nvme/nvme_internal.h +1 −0 Original line number Diff line number Diff line Loading @@ -549,6 +549,7 @@ struct nvme_request *nvme_allocate_request_null(spdk_nvme_cmd_cb cb_fn, void *cb struct nvme_request *nvme_allocate_request_contig(void *buffer, uint32_t payload_size, spdk_nvme_cmd_cb cb_fn, void *cb_arg); void nvme_free_request(struct nvme_request *req); void nvme_remove_child_request(struct nvme_request *parent, struct nvme_request *child); bool nvme_intel_has_quirk(struct pci_id *id, uint64_t quirk); void spdk_nvme_ctrlr_opts_set_defaults(struct spdk_nvme_ctrlr_opts *opts); Loading
lib/nvme/nvme_ns_cmd.c +1 −2 Original line number Diff line number Diff line Loading @@ -44,8 +44,7 @@ nvme_cb_complete_child(void *child_arg, const struct spdk_nvme_cpl *cpl) struct nvme_request *child = child_arg; struct nvme_request *parent = child->parent; parent->num_children--; TAILQ_REMOVE(&parent->children, child, child_tailq); nvme_remove_child_request(parent, child); if (spdk_nvme_cpl_is_error(cpl)) { memcpy(&parent->parent_status, cpl, sizeof(*cpl)); Loading
test/lib/nvme/unit/nvme_ns_cmd_c/nvme_ns_cmd_ut.c +12 −12 Original line number Diff line number Diff line Loading @@ -191,7 +191,7 @@ split_test2(void) CU_ASSERT(g_request->num_children == 2); child = TAILQ_FIRST(&g_request->children); TAILQ_REMOVE(&g_request->children, child, child_tailq); nvme_remove_child_request(g_request, child); nvme_cmd_interpret_rw(&child->cmd, &cmd_lba, &cmd_lba_count); CU_ASSERT(child->num_children == 0); CU_ASSERT(child->payload_size == 128 * 1024); Loading @@ -200,7 +200,7 @@ split_test2(void) nvme_free_request(child); child = TAILQ_FIRST(&g_request->children); TAILQ_REMOVE(&g_request->children, child, child_tailq); nvme_remove_child_request(g_request, child); nvme_cmd_interpret_rw(&child->cmd, &cmd_lba, &cmd_lba_count); CU_ASSERT(child->num_children == 0); CU_ASSERT(child->payload_size == 128 * 1024); Loading Loading @@ -247,7 +247,7 @@ split_test3(void) SPDK_CU_ASSERT_FATAL(g_request->num_children == 2); child = TAILQ_FIRST(&g_request->children); TAILQ_REMOVE(&g_request->children, child, child_tailq); nvme_remove_child_request(g_request, child); nvme_cmd_interpret_rw(&child->cmd, &cmd_lba, &cmd_lba_count); CU_ASSERT(child->num_children == 0); CU_ASSERT(child->payload_size == 128 * 1024); Loading @@ -256,7 +256,7 @@ split_test3(void) nvme_free_request(child); child = TAILQ_FIRST(&g_request->children); TAILQ_REMOVE(&g_request->children, child, child_tailq); nvme_remove_child_request(g_request, child); nvme_cmd_interpret_rw(&child->cmd, &cmd_lba, &cmd_lba_count); CU_ASSERT(child->num_children == 0); CU_ASSERT(child->payload_size == 128 * 1024); Loading Loading @@ -306,7 +306,7 @@ split_test4(void) SPDK_CU_ASSERT_FATAL(g_request->num_children == 3); child = TAILQ_FIRST(&g_request->children); TAILQ_REMOVE(&g_request->children, child, child_tailq); nvme_remove_child_request(g_request, child); nvme_cmd_interpret_rw(&child->cmd, &cmd_lba, &cmd_lba_count); CU_ASSERT(child->num_children == 0); CU_ASSERT(child->payload_size == (256 - 10) * 512); Loading @@ -318,7 +318,7 @@ split_test4(void) nvme_free_request(child); child = TAILQ_FIRST(&g_request->children); TAILQ_REMOVE(&g_request->children, child, child_tailq); nvme_remove_child_request(g_request, child); nvme_cmd_interpret_rw(&child->cmd, &cmd_lba, &cmd_lba_count); CU_ASSERT(child->num_children == 0); CU_ASSERT(child->payload_size == 128 * 1024); Loading @@ -330,7 +330,7 @@ split_test4(void) nvme_free_request(child); child = TAILQ_FIRST(&g_request->children); TAILQ_REMOVE(&g_request->children, child, child_tailq); nvme_remove_child_request(g_request, child); nvme_cmd_interpret_rw(&child->cmd, &cmd_lba, &cmd_lba_count); CU_ASSERT(child->num_children == 0); CU_ASSERT(child->payload_size == 10 * 512); Loading @@ -355,10 +355,10 @@ test_cmd_child_request(void) struct spdk_nvme_ctrlr ctrlr; struct spdk_nvme_qpair qpair; int rc = 0; struct nvme_request *child; struct nvme_request *child, *tmp; void *payload; uint64_t lba = 0x1000; uint32_t i; uint32_t i = 0; uint32_t offset = 0; uint32_t sector_size = 512; uint32_t max_io_size = 128 * 1024; Loading @@ -383,9 +383,8 @@ test_cmd_child_request(void) CU_ASSERT(rc == 0); CU_ASSERT(g_request->num_children == 4); for (i = 0; i < g_request->num_children; i++) { child = TAILQ_FIRST(&g_request->children); TAILQ_REMOVE(&g_request->children, child, child_tailq); TAILQ_FOREACH_SAFE(child, &g_request->children, child_tailq, tmp) { nvme_remove_child_request(g_request, child); CU_ASSERT(child->payload_offset == offset); CU_ASSERT(child->cmd.opc == SPDK_NVME_OPC_READ); CU_ASSERT(child->cmd.nsid == ns.id); Loading @@ -393,6 +392,7 @@ test_cmd_child_request(void) CU_ASSERT(child->cmd.cdw12 == ((sectors_per_max_io - 1) | 0)); offset += max_io_size; nvme_free_request(child); i++; } free(payload); Loading
test/lib/nvme/unit/nvme_qpair_c/nvme_qpair_ut.c +8 −0 Original line number Diff line number Diff line Loading @@ -176,6 +176,14 @@ nvme_free_request(struct nvme_request *req) nvme_dealloc_request(req); } void nvme_remove_child_request(struct nvme_request *parent, struct nvme_request *child) { parent->num_children--; TAILQ_REMOVE(&parent->children, child, child_tailq); } static void test1(void) { Loading