Commit 8d6d26bd authored by Seth Howell's avatar Seth Howell Committed by Jim Harris
Browse files

nvmf: add a name entry to the spdk_nvmf_tgt struct



This will provide a unique identifier which can be used to provide get
and set methods within the RPCs.

Change-Id: Idd144e99e49b8d26530f60530d2e908b18fa251b
Signed-off-by: default avatarSeth Howell <seth.howell@intel.com>
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/465330


Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: default avatarBen Walker <benjamin.walker@intel.com>
Reviewed-by: default avatarJim Harris <james.r.harris@intel.com>
parent 7d6d95db
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -50,6 +50,8 @@
extern "C" {
#endif

#define NVMF_TGT_NAME_MAX_LENGTH	256

struct spdk_nvmf_tgt;
struct spdk_nvmf_subsystem;
struct spdk_nvmf_ctrlr;
@@ -64,6 +66,7 @@ struct spdk_json_write_ctx;
struct spdk_nvmf_transport;

struct spdk_nvmf_target_opts {
	char		name[NVMF_TGT_NAME_MAX_LENGTH];
	uint32_t	max_subsystems;
};

+4 −1
Original line number Diff line number Diff line
@@ -186,7 +186,10 @@ spdk_nvmf_parse_nvmf_tgt(void)
{
	int rc;
	int using_deprecated_options;
	struct spdk_nvmf_target_opts opts = { 0 };
	struct spdk_nvmf_target_opts opts = {
		.name = "nvmf_tgt",
		.max_subsystems = 0
	};

	if (!g_spdk_nvmf_tgt_max_subsystems) {
		using_deprecated_options = spdk_nvmf_parse_tgt_max_subsystems();
+16 −2
Original line number Diff line number Diff line
@@ -221,13 +221,27 @@ spdk_nvmf_tgt_destroy_poll_group_qpairs(struct spdk_nvmf_poll_group *group)
struct spdk_nvmf_tgt *
spdk_nvmf_tgt_create(struct spdk_nvmf_target_opts *opts)
{
	struct spdk_nvmf_tgt *tgt;
	struct spdk_nvmf_tgt *tgt, *tmp_tgt;

	if (strnlen(opts->name, NVMF_TGT_NAME_MAX_LENGTH) == NVMF_TGT_NAME_MAX_LENGTH) {
		SPDK_ERRLOG("Provided target name exceeds the max length of %u.\n", NVMF_TGT_NAME_MAX_LENGTH);
		return NULL;
	}

	TAILQ_FOREACH(tmp_tgt, &g_nvmf_tgts, link) {
		if (!strncmp(opts->name, tmp_tgt->name, strlen(tmp_tgt->name))) {
			SPDK_ERRLOG("Provided target name must be unique.\n");
			return NULL;
		}
	}

	tgt = calloc(1, sizeof(*tgt));
	if (!tgt) {
		return NULL;
	}

	snprintf(tgt->name, NVMF_TGT_NAME_MAX_LENGTH, "%s", opts->name);

	if (!opts || !opts->max_subsystems) {
		tgt->max_subsystems = SPDK_NVMF_DEFAULT_MAX_SUBSYSTEMS;
	} else {
@@ -251,7 +265,7 @@ spdk_nvmf_tgt_create(struct spdk_nvmf_target_opts *opts)
				spdk_nvmf_tgt_create_poll_group,
				spdk_nvmf_tgt_destroy_poll_group,
				sizeof(struct spdk_nvmf_poll_group),
				"nvmf_tgt");
				tgt->name);

	return tgt;
}
+2 −0
Original line number Diff line number Diff line
@@ -74,6 +74,8 @@ enum spdk_nvmf_qpair_state {
typedef void (*spdk_nvmf_state_change_done)(void *cb_arg, int status);

struct spdk_nvmf_tgt {
	char					name[NVMF_TGT_NAME_MAX_LENGTH];

	uint64_t				discovery_genctr;

	uint32_t				max_subsystems;
+4 −1
Original line number Diff line number Diff line
@@ -264,8 +264,11 @@ static void
create_transport_test(void)
{
	const struct spdk_nvmf_transport_ops *ops = NULL;
	struct spdk_nvmf_target_opts tgt_opts = { 0 };
	struct spdk_nvmf_transport_opts opts = { 0 };
	struct spdk_nvmf_target_opts tgt_opts = {
		.name = "nvmf_test_tgt",
		.max_subsystems = 0
	};

	allocate_threads(8);
	set_thread(0);