Commit 296a6d98 authored by Jacek Kalwas's avatar Jacek Kalwas Committed by Tomasz Zawadzki
Browse files

bdev: extend interface with get module ctx



Currently only nvme bdev module implements this interface. Bdev module
context (in this case spdk_nvme_ctrlr opaque handle) allows for nvme
interface usage for additional management.

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


Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: default avatarTomasz Zawadzki <tomasz.zawadzki@intel.com>
Reviewed-by: default avatarShuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Reviewed-by: default avatarAleksey Marchuk <alexeymar@mellanox.com>
parent b10e3050
Loading
Loading
Loading
Loading
+18 −0
Original line number Diff line number Diff line
@@ -249,6 +249,14 @@ void spdk_bdev_finish(spdk_bdev_fini_cb cb_fn, void *cb_arg);
 */
void spdk_bdev_subsystem_config_json(struct spdk_json_write_ctx *w);

/**
 * Get block device module name.
 *
 * \param bdev Block device to query.
 * \return Name of bdev module as a null-terminated string.
 */
const char *spdk_bdev_get_module_name(const struct spdk_bdev *bdev);

/**
 * Get block device by the block device name.
 *
@@ -686,6 +694,16 @@ uint64_t spdk_bdev_get_weighted_io_time(const struct spdk_bdev *bdev);
 */
struct spdk_io_channel *spdk_bdev_get_io_channel(struct spdk_bdev_desc *desc);

/**
 * Obtain a bdev module context for the block device opened by the specified
 * descriptor.
 *
 * \param desc Block device descriptor.
 *
 * \return A bdev module context or NULL on failure.
 */
void *spdk_bdev_get_module_ctx(struct spdk_bdev_desc *desc);

/**
 * \defgroup bdev_io_submit_functions bdev I/O Submit Functions
 *
+3 −0
Original line number Diff line number Diff line
@@ -219,6 +219,9 @@ struct spdk_bdev_fn_table {
	 *  Optional - may be NULL.
	 */
	uint64_t (*get_spin_time)(struct spdk_io_channel *ch);

	/** Get bdev module context. */
	void *(*get_module_ctx)(void *ctx);
};

/** bdev I/O completion status */
+19 −0
Original line number Diff line number Diff line
@@ -2966,6 +2966,25 @@ spdk_bdev_get_io_channel(struct spdk_bdev_desc *desc)
	return spdk_get_io_channel(__bdev_to_io_dev(spdk_bdev_desc_get_bdev(desc)));
}

void *
spdk_bdev_get_module_ctx(struct spdk_bdev_desc *desc)
{
	struct spdk_bdev *bdev = spdk_bdev_desc_get_bdev(desc);
	void *ctx = NULL;

	if (bdev->fn_table->get_module_ctx) {
		ctx = bdev->fn_table->get_module_ctx(bdev->ctxt);
	}

	return ctx;
}

const char *
spdk_bdev_get_module_name(const struct spdk_bdev *bdev)
{
	return bdev->module->name;
}

const char *
spdk_bdev_get_name(const struct spdk_bdev *bdev)
{
+2 −0
Original line number Diff line number Diff line
@@ -9,6 +9,7 @@
	spdk_bdev_finish;
	spdk_bdev_subsystem_config_json;
	spdk_bdev_get_by_name;
	spdk_bdev_get_module_name;
	spdk_bdev_first;
	spdk_bdev_next;
	spdk_bdev_first_leaf;
@@ -47,6 +48,7 @@
	spdk_bdev_get_io_time;
	spdk_bdev_get_weighted_io_time;
	spdk_bdev_get_io_channel;
	spdk_bdev_get_module_ctx;
	spdk_bdev_read;
	spdk_bdev_read_blocks;
	spdk_bdev_read_blocks_with_md;
+1 −1
Original line number Diff line number Diff line
@@ -34,7 +34,7 @@
SPDK_ROOT_DIR := $(abspath $(CURDIR)/../..)
include $(SPDK_ROOT_DIR)/mk/spdk.common.mk

SO_VER := 2
SO_VER := 3
SO_MINOR := 0

C_SRCS = lvol.c
Loading