Commit 51ed4866 authored by Jacek Kalwas's avatar Jacek Kalwas Committed by Tomasz Zawadzki
Browse files

nvmf/rpc: improve readability of nvmf_rpc_listen_paused



Switch is more natural than if/else for dealing with enumeration type,
also logic under specific cases is revered in the way errors are
handled under if statements.

Change-Id: I0a03504ddfa0dab4e9395853ce9e0328450fb3d6
Signed-off-by: default avatarJacek Kalwas <jacek.kalwas@intel.com>
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/22605


Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Community-CI: Mellanox Build Bot
Reviewed-by: default avatarShuhei Matsumoto <smatsumoto@nvidia.com>
Reviewed-by: default avatarTomasz Zawadzki <tomasz.zawadzki@intel.com>
parent d396b445
Loading
Loading
Loading
Loading
+26 −19
Original line number Diff line number Diff line
@@ -760,35 +760,41 @@ nvmf_rpc_listen_paused(struct spdk_nvmf_subsystem *subsystem,
	struct nvmf_rpc_listener_ctx *ctx = cb_arg;
	int rc;

	if (ctx->op == NVMF_RPC_LISTEN_ADD) {
		if (!nvmf_subsystem_find_listener(subsystem, &ctx->trid)) {
			rc = spdk_nvmf_tgt_listen_ext(ctx->tgt, &ctx->trid, &ctx->opts);
			if (rc == 0) {
				spdk_nvmf_subsystem_add_listener_ext(ctx->subsystem, &ctx->trid, nvmf_rpc_subsystem_listen, ctx,
								     &ctx->listener_opts);
				return;
	switch (ctx->op) {
	case NVMF_RPC_LISTEN_ADD:
		if (nvmf_subsystem_find_listener(subsystem, &ctx->trid)) {
			break;
		}

		rc = spdk_nvmf_tgt_listen_ext(ctx->tgt, &ctx->trid, &ctx->opts);
		if (rc) {
			spdk_jsonrpc_send_error_response(ctx->request, SPDK_JSONRPC_ERROR_INVALID_PARAMS,
							 "Invalid parameters");
			ctx->response_sent = true;
			break;
		}
	} else if (ctx->op == NVMF_RPC_LISTEN_REMOVE) {
		rc = spdk_nvmf_subsystem_remove_listener(subsystem, &ctx->trid);
		if (rc == 0) {
			spdk_nvmf_transport_stop_listen_async(ctx->transport, &ctx->trid, subsystem,
							      nvmf_rpc_stop_listen_async_done, ctx);

		spdk_nvmf_subsystem_add_listener_ext(ctx->subsystem, &ctx->trid, nvmf_rpc_subsystem_listen, ctx,
						     &ctx->listener_opts);
		return;
		}
	case NVMF_RPC_LISTEN_REMOVE:
		rc = spdk_nvmf_subsystem_remove_listener(subsystem, &ctx->trid);
		if (rc) {
			SPDK_ERRLOG("Unable to remove listener, rc %d\n", rc);
			spdk_jsonrpc_send_error_response(ctx->request, SPDK_JSONRPC_ERROR_INVALID_PARAMS,
							 "Invalid parameters");
			ctx->response_sent = true;
	} else if (ctx->op == NVMF_RPC_LISTEN_SET_ANA_STATE) {
			break;
		}

		spdk_nvmf_transport_stop_listen_async(ctx->transport, &ctx->trid, subsystem,
						      nvmf_rpc_stop_listen_async_done, ctx);
		return;
	case NVMF_RPC_LISTEN_SET_ANA_STATE:
		spdk_nvmf_subsystem_set_ana_state(subsystem, &ctx->trid, ctx->ana_state, ctx->anagrpid,
						  nvmf_rpc_set_ana_state_done, ctx);
		return;
	} else {
	default:
		SPDK_UNREACHABLE();
	}

@@ -797,6 +803,7 @@ nvmf_rpc_listen_paused(struct spdk_nvmf_subsystem *subsystem,
			spdk_jsonrpc_send_error_response(ctx->request, SPDK_JSONRPC_ERROR_INTERNAL_ERROR,
							 "Internal error");
		}

		nvmf_rpc_listener_ctx_free(ctx);
		/* Can't really do anything to recover here - subsystem will remain paused. */
	}