Commit 35774c71 authored by Shuhei Matsumoto's avatar Shuhei Matsumoto Committed by Tomasz Zawadzki
Browse files

bdev/nvme: Add opcode parameter to nvme_ctrlr_op_rpc()



Define a enum nvme_ctrlr_op and add it to nvme_ctrlr_op_rpc() as a new
argument.

Signed-off-by: default avatarShuhei Matsumoto <smatsumoto@nvidia.com>
Change-Id: I4cfb599e67da93713b24c36e7fda6a048b3e7e8e
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/18213


Community-CI: Mellanox Build Bot
Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: default avatarRichael <richael.zhuang@arm.com>
Reviewed-by: default avatarAleksey Marchuk <alexeymar@nvidia.com>
Reviewed-by: default avatarJim Harris <james.r.harris@intel.com>
parent aefc9cc4
Loading
Loading
Loading
Loading
+11 −2
Original line number Diff line number Diff line
@@ -2285,11 +2285,20 @@ bdev_nvme_reset(struct nvme_ctrlr *nvme_ctrlr)
}

int
nvme_ctrlr_op_rpc(struct nvme_ctrlr *nvme_ctrlr, bdev_nvme_ctrlr_op_cb cb_fn, void *cb_arg)
nvme_ctrlr_op_rpc(struct nvme_ctrlr *nvme_ctrlr, enum nvme_ctrlr_op op,
		  bdev_nvme_ctrlr_op_cb cb_fn, void *cb_arg)
{
	int rc;

	switch (op) {
	case NVME_CTRLR_OP_RESET:
		rc = bdev_nvme_reset(nvme_ctrlr);
		break;
	default:
		rc = -EINVAL;
		break;
	}

	if (rc == 0) {
		nvme_ctrlr->ctrlr_op_cb_fn = cb_fn;
		nvme_ctrlr->ctrlr_op_cb_arg = cb_arg;
+8 −2
Original line number Diff line number Diff line
@@ -336,17 +336,23 @@ struct spdk_nvme_ctrlr *bdev_nvme_get_ctrlr(struct spdk_bdev *bdev);
 */
int bdev_nvme_delete(const char *name, const struct nvme_path_id *path_id);

enum nvme_ctrlr_op {
	NVME_CTRLR_OP_RESET = 1,
};

/**
 * Operate NVMe controller for reset.
 * Operate NVMe controller for the specified code.
 *
 * \param nvme_ctrlr The specified NVMe controller to operate
 * \param op Operation code
 * \param cb_fn Function to be called back after operation completes
 * \param cb_arg Argument for callback function
 * \return zero on success. Negated errno on the following error conditions:
 * -ENXIO: controller is being destroyed.
 * -EBUSY: controller is already being operated.
 */
int nvme_ctrlr_op_rpc(struct nvme_ctrlr *nvme_ctrlr, bdev_nvme_ctrlr_op_cb cb_fn, void *cb_arg);
int nvme_ctrlr_op_rpc(struct nvme_ctrlr *nvme_ctrlr, enum nvme_ctrlr_op op,
		      bdev_nvme_ctrlr_op_cb cb_fn, void *cb_arg);

typedef void (*bdev_nvme_set_preferred_path_cb)(void *cb_arg, int rc);

+1 −1
Original line number Diff line number Diff line
@@ -1343,7 +1343,7 @@ rpc_bdev_nvme_reset_controller(struct spdk_jsonrpc_request *request,
	ctx->request = request;
	ctx->orig_thread = spdk_get_thread();

	rc = nvme_ctrlr_op_rpc(nvme_ctrlr, rpc_bdev_nvme_reset_controller_cb, ctx);
	rc = nvme_ctrlr_op_rpc(nvme_ctrlr, NVME_CTRLR_OP_RESET, rpc_bdev_nvme_reset_controller_cb, ctx);
	if (rc != 0) {
		SPDK_NOTICELOG("Failed at bdev_nvme_reset_rpc\n");
		spdk_jsonrpc_send_error_response(request, SPDK_JSONRPC_ERROR_INTERNAL_ERROR, spdk_strerror(-rc));