SPDK: add nvme_remove_child_request helper function
This patch is used to add a nvme_request remove child helpler function Change-Id: I1e5bb228d53333ca3601f4ae30fcd801ea39e532 Signed-off-by: Ziye Yang <ziye.yang@intel.com>
This commit is contained in:
parent
4e91a0b017
commit
deb90a93de
@ -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)
|
||||
{
|
||||
|
@ -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);
|
||||
|
@ -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));
|
||||
|
@ -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);
|
||||
@ -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);
|
||||
@ -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);
|
||||
@ -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);
|
||||
@ -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);
|
||||
@ -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);
|
||||
@ -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);
|
||||
@ -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;
|
||||
@ -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);
|
||||
@ -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);
|
||||
|
@ -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…
Reference in New Issue
Block a user