Commit 65e56caa authored by Changpeng Liu's avatar Changpeng Liu Committed by Jim Harris
Browse files

nvme: wrapper request completion callback into a function



When IO is finished SPDK will trigger callback at controller layer,
while here, wrapper the completion callback into a function so
that we can add error injection at this function in following patch.

Change-Id: I7b7a6d278d87fd09a05f51f688398fdf2e9c4e05
Signed-off-by: default avatarChangpeng Liu <changpeng.liu@intel.com>
Reviewed-on: https://review.gerrithub.io/411630


Tested-by: default avatarSPDK Automated Test System <sys_sgsw@intel.com>
Reviewed-by: default avatarDaniel Verkamp <daniel.verkamp@intel.com>
Reviewed-by: default avatarJim Harris <james.r.harris@intel.com>
parent 3ca9cd76
Loading
Loading
Loading
Loading
+1 −2
Original line number Diff line number Diff line
@@ -470,8 +470,7 @@ spdk_nvme_ctrlr_cmd_abort_cpl(void *ctx, const struct spdk_nvme_cpl *cpl)
			next->cpl.status.sct = SPDK_NVME_SCT_GENERIC;
			next->cpl.status.sc = SPDK_NVME_SC_INTERNAL_DEVICE_ERROR;
			next->cpl.status.dnr = 1;
			next->cb_fn(next->cb_arg, &req->cpl);

			nvme_complete_request(next, &req->cpl);
			nvme_free_request(next);
		} else {
			/* If the first abort succeeds, stop iterating. */
+1 −0
Original line number Diff line number Diff line
@@ -626,6 +626,7 @@ struct nvme_request *nvme_allocate_request_contig(struct spdk_nvme_qpair *qpair,
struct nvme_request *nvme_allocate_request_user_copy(struct spdk_nvme_qpair *qpair,
		void *buffer, uint32_t payload_size,
		spdk_nvme_cmd_cb cb_fn, void *cb_arg, bool host_to_controller);
void	nvme_complete_request(struct nvme_request *req, struct spdk_nvme_cpl *cpl);
void	nvme_free_request(struct nvme_request *req);
void	nvme_request_remove_child(struct nvme_request *parent, struct nvme_request *child);
uint64_t nvme_get_quirks(const struct spdk_pci_id *id);
+1 −3
Original line number Diff line number Diff line
@@ -52,9 +52,7 @@ nvme_cb_complete_child(void *child_arg, const struct spdk_nvme_cpl *cpl)
	}

	if (parent->num_children == 0) {
		if (parent->cb_fn) {
			parent->cb_fn(parent->cb_arg, &parent->parent_status);
		}
		nvme_complete_request(parent, &parent->parent_status);
		nvme_free_request(parent);
	}
}
+2 −7
Original line number Diff line number Diff line
@@ -1129,10 +1129,7 @@ nvme_pcie_qpair_complete_pending_admin_request(struct spdk_nvme_qpair *qpair)

		assert(req->pid == pid);

		if (req->cb_fn) {
			req->cb_fn(req->cb_arg, &req->cpl);
		}

		nvme_complete_request(req, &req->cpl);
		nvme_free_request(req);
	}
}
@@ -1238,9 +1235,7 @@ nvme_pcie_qpair_complete_tracker(struct spdk_nvme_qpair *qpair, struct nvme_trac
				req_from_current_proc = false;
				nvme_pcie_qpair_insert_pending_admin_request(qpair, req, cpl);
			} else {
				if (req->cb_fn) {
					req->cb_fn(req->cb_arg, cpl);
				}
				nvme_complete_request(req, cpl);
			}
		}

+9 −4
Original line number Diff line number Diff line
@@ -347,10 +347,7 @@ nvme_qpair_manual_complete_request(struct spdk_nvme_qpair *qpair,
		nvme_qpair_print_completion(qpair, &cpl);
	}

	if (req->cb_fn) {
		req->cb_fn(req->cb_arg, &cpl);
	}

	nvme_complete_request(req, &cpl);
	nvme_free_request(req);
}

@@ -451,6 +448,14 @@ nvme_qpair_submit_request(struct spdk_nvme_qpair *qpair, struct nvme_request *re
	return nvme_transport_qpair_submit_request(qpair, req);
}

void
nvme_complete_request(struct nvme_request *req, struct spdk_nvme_cpl *cpl)
{
	if (req->cb_fn) {
		req->cb_fn(req->cb_arg, cpl);
	}
}

static void
_nvme_io_qpair_enable(struct spdk_nvme_qpair *qpair)
{
Loading