Commit 98c3a946 authored by Konrad Sztyber's avatar Konrad Sztyber Committed by Tomasz Zawadzki
Browse files

nvmf: unify target options handling



These options are already part of spdk_nvmf_target_opts, so it doesn't
make sense to have separate global variables to store them.

Signed-off-by: default avatarKonrad Sztyber <konrad.sztyber@intel.com>
Change-Id: Ia7566d254d5201daac7a39b3da81a210fff31f4c
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/22908


Reviewed-by: default avatarBen Walker <ben@nvidia.com>
Community-CI: Mellanox Build Bot
Reviewed-by: default avatarJim Harris <jim.harris@samsung.com>
Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
parent 63454e89
Loading
Loading
Loading
Loading
+1 −4
Original line number Diff line number Diff line
@@ -20,15 +20,12 @@ struct spdk_nvmf_admin_passthru_conf {
};

struct spdk_nvmf_tgt_conf {
	struct spdk_nvmf_target_opts opts;
	struct spdk_nvmf_admin_passthru_conf admin_passthru;
	uint32_t discovery_filter;
};

extern struct spdk_nvmf_tgt_conf g_spdk_nvmf_tgt_conf;

extern uint32_t g_spdk_nvmf_tgt_max_subsystems;
extern uint16_t g_spdk_nvmf_tgt_crdt[3];

extern struct spdk_nvmf_tgt *g_spdk_nvmf_tgt;

extern struct spdk_cpuset *g_poll_groups_mask;
+6 −6
Original line number Diff line number Diff line
@@ -20,7 +20,7 @@ rpc_nvmf_set_max_subsystems(struct spdk_jsonrpc_request *request,
{
	uint32_t max_subsystems = 0;

	if (g_spdk_nvmf_tgt_max_subsystems != 0) {
	if (g_spdk_nvmf_tgt_conf.opts.max_subsystems != 0) {
		SPDK_ERRLOG("this RPC must not be called more than once.\n");
		spdk_jsonrpc_send_error_response(request, SPDK_JSONRPC_ERROR_INTERNAL_ERROR,
						 "Must not call more than once");
@@ -37,7 +37,7 @@ rpc_nvmf_set_max_subsystems(struct spdk_jsonrpc_request *request,
		}
	}

	g_spdk_nvmf_tgt_max_subsystems = max_subsystems;
	g_spdk_nvmf_tgt_conf.opts.max_subsystems = max_subsystems;

	spdk_jsonrpc_send_bool_response(request, true);
}
@@ -162,7 +162,7 @@ nvmf_decode_poll_groups_mask(const struct spdk_json_val *val, void *out)
static const struct spdk_json_object_decoder nvmf_rpc_subsystem_tgt_conf_decoder[] = {
	{"admin_cmd_passthru", offsetof(struct spdk_nvmf_tgt_conf, admin_passthru), decode_admin_passthru, true},
	{"poll_groups_mask", 0, nvmf_decode_poll_groups_mask, true},
	{"discovery_filter", offsetof(struct spdk_nvmf_tgt_conf, discovery_filter), decode_discovery_filter, true}
	{"discovery_filter", offsetof(struct spdk_nvmf_tgt_conf, opts.discovery_filter), decode_discovery_filter, true}
};

static void
@@ -221,9 +221,9 @@ rpc_nvmf_set_crdt(struct spdk_jsonrpc_request *request,
		}
	}

	g_spdk_nvmf_tgt_crdt[0] = rpc_set_crdt.crdt1;
	g_spdk_nvmf_tgt_crdt[1] = rpc_set_crdt.crdt2;
	g_spdk_nvmf_tgt_crdt[2] = rpc_set_crdt.crdt3;
	g_spdk_nvmf_tgt_conf.opts.crdt[0] = rpc_set_crdt.crdt1;
	g_spdk_nvmf_tgt_conf.opts.crdt[1] = rpc_set_crdt.crdt2;
	g_spdk_nvmf_tgt_conf.opts.crdt[2] = rpc_set_crdt.crdt3;

	spdk_jsonrpc_send_bool_response(request, true);
}
+12 −16
Original line number Diff line number Diff line
@@ -35,13 +35,18 @@ struct nvmf_tgt_poll_group {
};

struct spdk_nvmf_tgt_conf g_spdk_nvmf_tgt_conf = {
	.opts = {
		.size = SPDK_SIZEOF(&g_spdk_nvmf_tgt_conf.opts, discovery_filter),
		.name = "nvmf_tgt",
		.max_subsystems = 0,
		.crdt = { 0, 0, 0 },
		.discovery_filter = SPDK_NVMF_TGT_DISCOVERY_MATCH_ANY,
	},
	.admin_passthru.identify_ctrlr = false
};

struct spdk_cpuset *g_poll_groups_mask = NULL;
struct spdk_nvmf_tgt *g_spdk_nvmf_tgt = NULL;
uint32_t g_spdk_nvmf_tgt_max_subsystems = 0;
uint16_t g_spdk_nvmf_tgt_crdt[3] = {0, 0, 0};

static enum nvmf_tgt_state g_tgt_state;

@@ -329,17 +334,7 @@ nvmf_add_discovery_subsystem(void)
static int
nvmf_tgt_create_target(void)
{
	struct spdk_nvmf_target_opts opts = {
		.size = SPDK_SIZEOF(&opts, discovery_filter),
		.name = "nvmf_tgt"
	};

	opts.max_subsystems = g_spdk_nvmf_tgt_max_subsystems;
	opts.crdt[0] = g_spdk_nvmf_tgt_crdt[0];
	opts.crdt[1] = g_spdk_nvmf_tgt_crdt[1];
	opts.crdt[2] = g_spdk_nvmf_tgt_crdt[2];
	opts.discovery_filter = g_spdk_nvmf_tgt_conf.discovery_filter;
	g_spdk_nvmf_tgt = spdk_nvmf_tgt_create(&opts);
	g_spdk_nvmf_tgt = spdk_nvmf_tgt_create(&g_spdk_nvmf_tgt_conf.opts);
	if (!g_spdk_nvmf_tgt) {
		SPDK_ERRLOG("spdk_nvmf_tgt_create() failed\n");
		return -1;
@@ -540,15 +535,16 @@ nvmf_subsystem_dump_discover_filter(struct spdk_json_write_ctx *w)
		"transport,address,svcid"
	};

	if ((g_spdk_nvmf_tgt_conf.discovery_filter & ~(SPDK_NVMF_TGT_DISCOVERY_MATCH_TRANSPORT_TYPE |
	if ((g_spdk_nvmf_tgt_conf.opts.discovery_filter & ~(SPDK_NVMF_TGT_DISCOVERY_MATCH_TRANSPORT_TYPE |
			SPDK_NVMF_TGT_DISCOVERY_MATCH_TRANSPORT_ADDRESS |
			SPDK_NVMF_TGT_DISCOVERY_MATCH_TRANSPORT_SVCID)) != 0) {
		SPDK_ERRLOG("Incorrect discovery filter %d\n", g_spdk_nvmf_tgt_conf.discovery_filter);
		SPDK_ERRLOG("Incorrect discovery filter %d\n", g_spdk_nvmf_tgt_conf.opts.discovery_filter);
		assert(0);
		return;
	}

	spdk_json_write_named_string(w, "discovery_filter", answers[g_spdk_nvmf_tgt_conf.discovery_filter]);
	spdk_json_write_named_string(w, "discovery_filter",
				     answers[g_spdk_nvmf_tgt_conf.opts.discovery_filter]);
}

static void