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

bdev/nvme: Change 2nd param of reset_cb from boolean to int



Change the second parameter of bdev_nvme_reset_cb from boolean to int.
This is helpful to make the return type of bdev_nvme_reset_rpc() from
int to void because bdev_nvme_reset_rpc() will always call reset_cb
including error cases but does not want to loose error information.

The second parameter of bdev_nvme_reset_complete() is still boolean
because bdev_nvme_reset_complete() is related with disconnected_cb and
the second parameter of disconnected_cb is also boolean. Changing all of
these will require a lot of effort. This may be done in future.

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


Community-CI: Mellanox Build Bot
Reviewed-by: default avatarAleksey Marchuk <alexeymar@nvidia.com>
Reviewed-by: default avatarJim Harris <james.r.harris@intel.com>
Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
parent bb4be4dc
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -1998,7 +1998,7 @@ _bdev_nvme_reset_complete(struct spdk_io_channel_iter *i, int status)
	pthread_mutex_unlock(&nvme_ctrlr->mutex);

	if (reset_cb_fn) {
		reset_cb_fn(reset_cb_arg, success);
		reset_cb_fn(reset_cb_arg, success ? 0 : -1);
	}

	switch (op_after_reset) {
@@ -2369,12 +2369,12 @@ complete:
}

static void
bdev_nvme_reset_io_continue(void *cb_arg, bool success)
bdev_nvme_reset_io_continue(void *cb_arg, int rc)
{
	struct nvme_bdev_io *bio = cb_arg;
	struct spdk_bdev_io *bdev_io = spdk_bdev_io_from_ctx(bio);

	bio->cpl.cdw0 = !success;
	bio->cpl.cdw0 = (rc == 0) ? 0 : 1;

	spdk_thread_send_msg(spdk_bdev_io_get_thread(bdev_io), _bdev_nvme_reset_io_continue, bio);
}
+1 −1
Original line number Diff line number Diff line
@@ -96,7 +96,7 @@ struct nvme_path_id {
	uint64_t				last_failed_tsc;
};

typedef void (*bdev_nvme_reset_cb)(void *cb_arg, bool success);
typedef void (*bdev_nvme_reset_cb)(void *cb_arg, int rc);
typedef void (*nvme_ctrlr_disconnected_cb)(struct nvme_ctrlr *nvme_ctrlr);

struct nvme_ctrlr {
+5 −6
Original line number Diff line number Diff line
@@ -1280,7 +1280,7 @@ static const struct spdk_json_object_decoder rpc_bdev_nvme_reset_controller_req_

struct rpc_bdev_nvme_reset_controller_ctx {
	struct spdk_jsonrpc_request *request;
	bool success;
	int rc;
	struct spdk_thread *orig_thread;
};

@@ -1289,22 +1289,21 @@ _rpc_bdev_nvme_reset_controller_cb(void *_ctx)
{
	struct rpc_bdev_nvme_reset_controller_ctx *ctx = _ctx;

	if (ctx->success) {
	if (ctx->rc == 0) {
		spdk_jsonrpc_send_bool_response(ctx->request, true);
	} else {
		spdk_jsonrpc_send_error_response(ctx->request, SPDK_JSONRPC_ERROR_INTERNAL_ERROR,
						 "Controller reset failed");
		spdk_jsonrpc_send_error_response(ctx->request, ctx->rc, spdk_strerror(-ctx->rc));
	}

	free(ctx);
}

static void
rpc_bdev_nvme_reset_controller_cb(void *cb_arg, bool success)
rpc_bdev_nvme_reset_controller_cb(void *cb_arg, int rc)
{
	struct rpc_bdev_nvme_reset_controller_ctx *ctx = cb_arg;

	ctx->success = success;
	ctx->rc = rc;

	spdk_thread_send_msg(ctx->orig_thread, _rpc_bdev_nvme_reset_controller_cb, ctx);
}
+2 −2
Original line number Diff line number Diff line
@@ -1372,11 +1372,11 @@ test_create_ctrlr(void)
}

static void
ut_check_hotplug_on_reset(void *cb_arg, bool success)
ut_check_hotplug_on_reset(void *cb_arg, int rc)
{
	bool *detect_remove = cb_arg;

	CU_ASSERT(success == false);
	CU_ASSERT(rc != 0);
	SPDK_CU_ASSERT_FATAL(detect_remove != NULL);

	*detect_remove = true;