Commit 7259370c authored by paul luse's avatar paul luse Committed by Jim Harris
Browse files

passthru: fixup json config methods



Added new function, cleared up names, updated functions to use
combined json functions.  In prep for using PT as a starting
point for compressdev, next in this series will add RPC testing
to the PT module.

Change-Id: Iafc59fba0969b23248d92f1479051136f80bd04c
Signed-off-by: default avatarpaul luse <paul.e.luse@intel.com>
Reviewed-on: https://review.gerrithub.io/428723


Chandler-Test-Pool: SPDK Automated Test System <sys_sgsw@intel.com>
Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: default avatarPawel Wodkowski <pawelx.wodkowski@intel.com>
Reviewed-by: default avatarBen Walker <benjamin.walker@intel.com>
Reviewed-by: default avatarJim Harris <james.r.harris@intel.com>
parent 48c85249
Loading
Loading
Loading
Loading
+34 −27
Original line number Diff line number Diff line
@@ -56,6 +56,7 @@ static void vbdev_passthru_get_spdk_running_config(FILE *fp);
static int vbdev_passthru_get_ctx_size(void);
static void vbdev_passthru_examine(struct spdk_bdev *bdev);
static void vbdev_passthru_finish(void);
static int vbdev_passthru_config_json(struct spdk_json_write_ctx *w);

static struct spdk_bdev_module passthru_if = {
	.name = "passthru",
@@ -63,7 +64,8 @@ static struct spdk_bdev_module passthru_if = {
	.config_text = vbdev_passthru_get_spdk_running_config,
	.get_ctx_size = vbdev_passthru_get_ctx_size,
	.examine_config = vbdev_passthru_examine,
	.module_fini = vbdev_passthru_finish
	.module_fini = vbdev_passthru_finish,
	.config_json = vbdev_passthru_config_json
};

SPDK_BDEV_MODULE_REGISTER(&passthru_if)
@@ -307,23 +309,36 @@ vbdev_passthru_get_io_channel(void *ctx)
	return pt_ch;
}

/* This is the output for get_bdevs() for this vbdev */
static int
vbdev_passthru_info_config_json(void *ctx, struct spdk_json_write_ctx *write_ctx)
vbdev_passthru_dump_info_json(void *ctx, struct spdk_json_write_ctx *w)
{
	struct vbdev_passthru *pt_node = (struct vbdev_passthru *)ctx;

	/* This is the output for get_bdevs() for this vbdev */
	spdk_json_write_name(write_ctx, "passthru");
	spdk_json_write_object_begin(write_ctx);

	spdk_json_write_name(write_ctx, "pt_bdev_name");
	spdk_json_write_string(write_ctx, spdk_bdev_get_name(&pt_node->pt_bdev));
	spdk_json_write_name(w, "passthru");
	spdk_json_write_object_begin(w);
	spdk_json_write_named_string(w, "name", spdk_bdev_get_name(&pt_node->pt_bdev));
	spdk_json_write_named_string(w, "base_bdev_name", spdk_bdev_get_name(pt_node->base_bdev));
	spdk_json_write_object_end(w);

	spdk_json_write_name(write_ctx, "base_bdev_name");
	spdk_json_write_string(write_ctx, spdk_bdev_get_name(pt_node->base_bdev));
	return 0;
}

	spdk_json_write_object_end(write_ctx);
/* This is used to generate JSON that can configure this module to its current state. */
static int
vbdev_passthru_config_json(struct spdk_json_write_ctx *w)
{
	struct vbdev_passthru *pt_node;

	TAILQ_FOREACH(pt_node, &g_pt_nodes, link) {
		spdk_json_write_object_begin(w);
		spdk_json_write_named_string(w, "method", "construct_passthru_bdev");
		spdk_json_write_named_object_begin(w, "params");
		spdk_json_write_named_string(w, "base_bdev_name", spdk_bdev_get_name(pt_node->base_bdev));
		spdk_json_write_named_string(w, "name", spdk_bdev_get_name(&pt_node->pt_bdev));
		spdk_json_write_object_end(w);
		spdk_json_write_object_end(w);
	}
	return 0;
}

@@ -471,22 +486,14 @@ vbdev_passthru_get_spdk_running_config(FILE *fp)
	fprintf(fp, "\n");
}

/* Called when SPDK wants to output the bdev specific methods. */
/* Where vbdev_passthru_config_json() is used to generate per module JSON config data, this
 * function is called to output any per bdev specific methods. For the PT module, there are
 * none.
 */
static void
vbdev_passthru_write_json_config(struct spdk_bdev *bdev, struct spdk_json_write_ctx *w)
vbdev_passthru_write_config_json(struct spdk_bdev *bdev, struct spdk_json_write_ctx *w)
{
	struct vbdev_passthru *pt_node = SPDK_CONTAINEROF(bdev, struct vbdev_passthru, pt_bdev);

	spdk_json_write_object_begin(w);

	spdk_json_write_named_string(w, "method", "construct_passthru_bdev");

	spdk_json_write_named_object_begin(w, "params");
	spdk_json_write_named_string(w, "base_bdev_name", spdk_bdev_get_name(pt_node->base_bdev));
	spdk_json_write_named_string(w, "passthru_bdev_name", spdk_bdev_get_name(bdev));
	spdk_json_write_object_end(w);

	spdk_json_write_object_end(w);
	/* No config per bdev needed */
}

/* When we register our bdev this is how we specify our entry points. */
@@ -495,8 +502,8 @@ static const struct spdk_bdev_fn_table vbdev_passthru_fn_table = {
	.submit_request		= vbdev_passthru_submit_request,
	.io_type_supported	= vbdev_passthru_io_type_supported,
	.get_io_channel		= vbdev_passthru_get_io_channel,
	.dump_info_json		= vbdev_passthru_info_config_json,
	.write_config_json	= vbdev_passthru_write_json_config,
	.dump_info_json		= vbdev_passthru_dump_info_json,
	.write_config_json	= vbdev_passthru_write_config_json,
};

/* Called when the underlying base bdev goes away. */