bdev: remove differentiation between bdev and vbdev modules
We still will sort the bdev_module list so that modules with an examine() callback are initialized first. This ensures they have a chance to initialize before later modules start registering physical block devices. Signed-off-by: Jim Harris <james.r.harris@intel.com> Change-Id: I792cfb41b0abe030fe2486a2c872cbf329735932 Reviewed-on: https://review.gerrithub.io/369486 Tested-by: SPDK Automated Test System <sys_sgsw@intel.com> Reviewed-by: Ben Walker <benjamin.walker@intel.com> Reviewed-by: Daniel Verkamp <daniel.verkamp@intel.com>
This commit is contained in:
parent
7fefd60fab
commit
f71447e80d
@ -50,12 +50,8 @@
|
||||
* To implement a backend block device driver, a number of functions
|
||||
* dictated by struct spdk_bdev_fn_table must be provided.
|
||||
*
|
||||
* The module should register itself using SPDK_BDEV_MODULE_REGISTER or
|
||||
* SPDK_VBDEV_MODULE_REGISTER to define the parameters for the module.
|
||||
*
|
||||
* Use SPDK_BDEV_MODULE_REGISTER for all block backends that are real disks.
|
||||
* Any virtual backends such as RAID, partitioning, etc. should use
|
||||
* SPDK_VBDEV_MODULE_REGISTER.
|
||||
* The module should register itself using SPDK_BDEV_MODULE_REGISTER to
|
||||
* define the parameters for the module.
|
||||
*
|
||||
* <hr>
|
||||
*
|
||||
@ -223,7 +219,11 @@ struct spdk_bdev {
|
||||
|
||||
bool bdev_opened_for_write;
|
||||
|
||||
struct spdk_bdev_module_if *vbdev_claim_module;
|
||||
/**
|
||||
* Pointer to the module that has claimed this bdev for purposes of creating virtual
|
||||
* bdevs on top of it. Set to NULL if the bdev has not been claimed.
|
||||
*/
|
||||
struct spdk_bdev_module_if *claim_module;
|
||||
|
||||
/** List of open descriptors for this block device. */
|
||||
TAILQ_HEAD(, spdk_bdev_desc) open_descs;
|
||||
@ -382,11 +382,11 @@ void spdk_vbdev_register(struct spdk_bdev *vbdev, struct spdk_bdev **base_bdevs,
|
||||
int base_bdev_count);
|
||||
void spdk_vbdev_unregister(struct spdk_bdev *vbdev);
|
||||
|
||||
void spdk_vbdev_module_examine_done(struct spdk_bdev_module_if *module);
|
||||
void spdk_bdev_module_examine_done(struct spdk_bdev_module_if *module);
|
||||
|
||||
int spdk_vbdev_module_claim_bdev(struct spdk_bdev *bdev, struct spdk_bdev_desc *desc,
|
||||
struct spdk_bdev_module_if *module);
|
||||
void spdk_vbdev_module_release_bdev(struct spdk_bdev *bdev);
|
||||
int spdk_bdev_module_claim_bdev(struct spdk_bdev *bdev, struct spdk_bdev_desc *desc,
|
||||
struct spdk_bdev_module_if *module);
|
||||
void spdk_bdev_module_release_bdev(struct spdk_bdev *bdev);
|
||||
|
||||
void spdk_bdev_poller_start(struct spdk_bdev_poller **ppoller,
|
||||
spdk_bdev_poller_fn fn,
|
||||
@ -428,7 +428,6 @@ void spdk_scsi_nvme_translate(const struct spdk_bdev_io *bdev_io,
|
||||
int *sc, int *sk, int *asc, int *ascq);
|
||||
|
||||
void spdk_bdev_module_list_add(struct spdk_bdev_module_if *bdev_module);
|
||||
void spdk_vbdev_module_list_add(struct spdk_bdev_module_if *vbdev_module);
|
||||
|
||||
static inline struct spdk_bdev_io *
|
||||
spdk_bdev_io_from_ctx(void *ctx)
|
||||
@ -437,20 +436,7 @@ spdk_bdev_io_from_ctx(void *ctx)
|
||||
((uintptr_t)ctx - offsetof(struct spdk_bdev_io, driver_ctx));
|
||||
}
|
||||
|
||||
#define SPDK_BDEV_MODULE_REGISTER(_name, init_fn, fini_fn, config_fn, ctx_size_fn) \
|
||||
static struct spdk_bdev_module_if _name ## _if = { \
|
||||
.name = #_name, \
|
||||
.module_init = init_fn, \
|
||||
.module_fini = fini_fn, \
|
||||
.config_text = config_fn, \
|
||||
.get_ctx_size = ctx_size_fn, \
|
||||
}; \
|
||||
__attribute__((constructor)) static void _name ## _init(void) \
|
||||
{ \
|
||||
spdk_bdev_module_list_add(&_name ## _if); \
|
||||
}
|
||||
|
||||
#define SPDK_VBDEV_MODULE_REGISTER(_name, init_fn, fini_fn, config_fn, ctx_size_fn, examine_fn)\
|
||||
#define SPDK_BDEV_MODULE_REGISTER(_name, init_fn, fini_fn, config_fn, ctx_size_fn, examine_fn)\
|
||||
static struct spdk_bdev_module_if _name ## _if = { \
|
||||
.name = #_name, \
|
||||
.module_init = init_fn, \
|
||||
@ -461,14 +447,14 @@ spdk_bdev_io_from_ctx(void *ctx)
|
||||
}; \
|
||||
__attribute__((constructor)) static void _name ## _init(void) \
|
||||
{ \
|
||||
spdk_vbdev_module_list_add(&_name ## _if); \
|
||||
spdk_bdev_module_list_add(&_name ## _if); \
|
||||
}
|
||||
|
||||
#define SPDK_GET_BDEV_MODULE(name) &name ## _if
|
||||
|
||||
/*
|
||||
* Modules are not required to use this macro. It allows modules to reference the module with
|
||||
* SPDK_GET_BDEV_MODULE() before it is defined by SPDK_BDEV_MODULE_REGISTER or its VBDEV variant.
|
||||
* SPDK_GET_BDEV_MODULE() before it is defined by SPDK_BDEV_MODULE_REGISTER.
|
||||
*/
|
||||
#define SPDK_DECLARE_BDEV_MODULE(name) \
|
||||
static struct spdk_bdev_module_if name ## _if;
|
||||
|
@ -52,7 +52,7 @@ bdev_aio_get_ctx_size(void)
|
||||
return sizeof(struct bdev_aio_task);
|
||||
}
|
||||
|
||||
SPDK_BDEV_MODULE_REGISTER(aio, bdev_aio_initialize, NULL, NULL, bdev_aio_get_ctx_size)
|
||||
SPDK_BDEV_MODULE_REGISTER(aio, bdev_aio_initialize, NULL, NULL, bdev_aio_get_ctx_size, NULL)
|
||||
|
||||
static int
|
||||
bdev_aio_open(struct file_disk *disk)
|
||||
|
101
lib/bdev/bdev.c
101
lib/bdev/bdev.c
@ -64,7 +64,6 @@ struct spdk_bdev_mgr {
|
||||
struct spdk_mempool *buf_large_pool;
|
||||
|
||||
TAILQ_HEAD(, spdk_bdev_module_if) bdev_modules;
|
||||
TAILQ_HEAD(, spdk_bdev_module_if) vbdev_modules;
|
||||
|
||||
TAILQ_HEAD(, spdk_bdev) bdevs;
|
||||
|
||||
@ -81,7 +80,6 @@ struct spdk_bdev_mgr {
|
||||
|
||||
static struct spdk_bdev_mgr g_bdev_mgr = {
|
||||
.bdev_modules = TAILQ_HEAD_INITIALIZER(g_bdev_mgr.bdev_modules),
|
||||
.vbdev_modules = TAILQ_HEAD_INITIALIZER(g_bdev_mgr.vbdev_modules),
|
||||
.bdevs = TAILQ_HEAD_INITIALIZER(g_bdev_mgr.bdevs),
|
||||
.start_poller_fn = NULL,
|
||||
.stop_poller_fn = NULL,
|
||||
@ -311,12 +309,6 @@ spdk_bdev_module_get_max_ctx_size(void)
|
||||
}
|
||||
}
|
||||
|
||||
TAILQ_FOREACH(bdev_module, &g_bdev_mgr.vbdev_modules, tailq) {
|
||||
if (bdev_module->get_ctx_size && bdev_module->get_ctx_size() > max_bdev_module_size) {
|
||||
max_bdev_module_size = bdev_module->get_ctx_size();
|
||||
}
|
||||
}
|
||||
|
||||
return max_bdev_module_size;
|
||||
}
|
||||
|
||||
@ -330,11 +322,6 @@ spdk_bdev_config_text(FILE *fp)
|
||||
bdev_module->config_text(fp);
|
||||
}
|
||||
}
|
||||
TAILQ_FOREACH(bdev_module, &g_bdev_mgr.vbdev_modules, tailq) {
|
||||
if (bdev_module->config_text) {
|
||||
bdev_module->config_text(fp);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static int
|
||||
@ -383,11 +370,11 @@ spdk_bdev_module_init_complete(int rc)
|
||||
}
|
||||
|
||||
/*
|
||||
* Check all vbdev modules for an examinations in progress. If any
|
||||
* Check all bdev modules for an examinations in progress. If any
|
||||
* exist, return immediately since we cannot finish bdev subsystem
|
||||
* initialization until all are completed.
|
||||
*/
|
||||
TAILQ_FOREACH(m, &g_bdev_mgr.vbdev_modules, tailq) {
|
||||
TAILQ_FOREACH(m, &g_bdev_mgr.bdev_modules, tailq) {
|
||||
if (m->examine_in_progress > 0) {
|
||||
return;
|
||||
}
|
||||
@ -412,22 +399,6 @@ spdk_bdev_modules_init(void)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
spdk_vbdev_modules_init(void)
|
||||
{
|
||||
struct spdk_bdev_module_if *module;
|
||||
int rc;
|
||||
|
||||
TAILQ_FOREACH(module, &g_bdev_mgr.vbdev_modules, tailq) {
|
||||
rc = module->module_init();
|
||||
if (rc != 0) {
|
||||
return rc;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
void
|
||||
spdk_bdev_poller_start(struct spdk_bdev_poller **ppoller,
|
||||
spdk_bdev_poller_fn fn,
|
||||
@ -510,12 +481,6 @@ spdk_bdev_initialize(spdk_bdev_init_cb cb_fn, void *cb_arg,
|
||||
spdk_bdev_mgmt_channel_destroy,
|
||||
sizeof(struct spdk_bdev_mgmt_channel));
|
||||
|
||||
rc = spdk_vbdev_modules_init();
|
||||
if (rc != 0) {
|
||||
spdk_bdev_module_init_complete(rc);
|
||||
return;
|
||||
}
|
||||
|
||||
rc = spdk_bdev_modules_init();
|
||||
spdk_bdev_module_init_complete(rc);
|
||||
}
|
||||
@ -525,12 +490,6 @@ spdk_bdev_finish(void)
|
||||
{
|
||||
struct spdk_bdev_module_if *bdev_module;
|
||||
|
||||
TAILQ_FOREACH(bdev_module, &g_bdev_mgr.vbdev_modules, tailq) {
|
||||
if (bdev_module->module_fini) {
|
||||
bdev_module->module_fini();
|
||||
}
|
||||
}
|
||||
|
||||
TAILQ_FOREACH(bdev_module, &g_bdev_mgr.bdev_modules, tailq) {
|
||||
if (bdev_module->module_fini) {
|
||||
bdev_module->module_fini();
|
||||
@ -1378,7 +1337,7 @@ spdk_bdev_io_get_nvme_status(const struct spdk_bdev_io *bdev_io, int *sct, int *
|
||||
static void
|
||||
_spdk_bdev_register(struct spdk_bdev *bdev)
|
||||
{
|
||||
struct spdk_bdev_module_if *vbdev_module;
|
||||
struct spdk_bdev_module_if *module;
|
||||
|
||||
assert(bdev->module != NULL);
|
||||
|
||||
@ -1402,9 +1361,11 @@ _spdk_bdev_register(struct spdk_bdev *bdev)
|
||||
SPDK_TRACELOG(SPDK_TRACE_DEBUG, "Inserting bdev %s into list\n", bdev->name);
|
||||
TAILQ_INSERT_TAIL(&g_bdev_mgr.bdevs, bdev, link);
|
||||
|
||||
TAILQ_FOREACH(vbdev_module, &g_bdev_mgr.vbdev_modules, tailq) {
|
||||
vbdev_module->examine_in_progress++;
|
||||
vbdev_module->examine(bdev);
|
||||
TAILQ_FOREACH(module, &g_bdev_mgr.bdev_modules, tailq) {
|
||||
if (module->examine) {
|
||||
module->examine_in_progress++;
|
||||
module->examine(bdev);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -1478,7 +1439,7 @@ spdk_vbdev_unregister(struct spdk_bdev *vbdev)
|
||||
}
|
||||
|
||||
void
|
||||
spdk_vbdev_module_examine_done(struct spdk_bdev_module_if *module)
|
||||
spdk_bdev_module_examine_done(struct spdk_bdev_module_if *module)
|
||||
{
|
||||
struct spdk_bdev_module_if *m;
|
||||
|
||||
@ -1486,11 +1447,11 @@ spdk_vbdev_module_examine_done(struct spdk_bdev_module_if *module)
|
||||
module->examine_in_progress--;
|
||||
|
||||
/*
|
||||
* Check all vbdev modules for an examinations in progress. If any
|
||||
* Check all bdev modules for an examinations in progress. If any
|
||||
* exist, return immediately since we cannot finish bdev subsystem
|
||||
* initialization until all are completed.
|
||||
*/
|
||||
TAILQ_FOREACH(m, &g_bdev_mgr.vbdev_modules, tailq) {
|
||||
TAILQ_FOREACH(m, &g_bdev_mgr.bdev_modules, tailq) {
|
||||
if (m->examine_in_progress > 0) {
|
||||
return;
|
||||
}
|
||||
@ -1499,8 +1460,8 @@ spdk_vbdev_module_examine_done(struct spdk_bdev_module_if *module)
|
||||
if (g_bdev_mgr.module_init_complete && !g_bdev_mgr.init_complete) {
|
||||
/*
|
||||
* Modules already finished initialization - now that all
|
||||
* the vbdevs have finished their asynchronous I/O processing,
|
||||
* the entire bdev layer can be marked as complete.
|
||||
* the bdev moduless have finished their asynchronous I/O
|
||||
* processing, the entire bdev layer can be marked as complete.
|
||||
*/
|
||||
spdk_bdev_init_complete(0);
|
||||
}
|
||||
@ -1519,7 +1480,7 @@ spdk_bdev_open(struct spdk_bdev *bdev, bool write, spdk_bdev_remove_cb_t remove_
|
||||
|
||||
pthread_mutex_lock(&bdev->mutex);
|
||||
|
||||
if (write && (bdev->bdev_opened_for_write || bdev->vbdev_claim_module)) {
|
||||
if (write && (bdev->bdev_opened_for_write || bdev->claim_module)) {
|
||||
SPDK_ERRLOG("failed, %s already opened for write or claimed\n", bdev->name);
|
||||
free(desc);
|
||||
pthread_mutex_unlock(&bdev->mutex);
|
||||
@ -1570,12 +1531,12 @@ spdk_bdev_close(struct spdk_bdev_desc *desc)
|
||||
}
|
||||
|
||||
int
|
||||
spdk_vbdev_module_claim_bdev(struct spdk_bdev *bdev, struct spdk_bdev_desc *desc,
|
||||
struct spdk_bdev_module_if *module)
|
||||
spdk_bdev_module_claim_bdev(struct spdk_bdev *bdev, struct spdk_bdev_desc *desc,
|
||||
struct spdk_bdev_module_if *module)
|
||||
{
|
||||
if (bdev->vbdev_claim_module != NULL) {
|
||||
if (bdev->claim_module != NULL) {
|
||||
SPDK_ERRLOG("bdev %s already claimed by module %s\n", bdev->name,
|
||||
bdev->vbdev_claim_module->name);
|
||||
bdev->claim_module->name);
|
||||
return -EPERM;
|
||||
}
|
||||
|
||||
@ -1588,15 +1549,15 @@ spdk_vbdev_module_claim_bdev(struct spdk_bdev *bdev, struct spdk_bdev_desc *desc
|
||||
desc->write = true;
|
||||
}
|
||||
|
||||
bdev->vbdev_claim_module = module;
|
||||
bdev->claim_module = module;
|
||||
return 0;
|
||||
}
|
||||
|
||||
void
|
||||
spdk_vbdev_module_release_bdev(struct spdk_bdev *bdev)
|
||||
spdk_bdev_module_release_bdev(struct spdk_bdev *bdev)
|
||||
{
|
||||
assert(bdev->vbdev_claim_module != NULL);
|
||||
bdev->vbdev_claim_module = NULL;
|
||||
assert(bdev->claim_module != NULL);
|
||||
bdev->claim_module = NULL;
|
||||
}
|
||||
|
||||
void
|
||||
@ -1635,12 +1596,14 @@ spdk_bdev_io_get_iovec(struct spdk_bdev_io *bdev_io, struct iovec **iovp, int *i
|
||||
void
|
||||
spdk_bdev_module_list_add(struct spdk_bdev_module_if *bdev_module)
|
||||
{
|
||||
TAILQ_INSERT_TAIL(&g_bdev_mgr.bdev_modules, bdev_module, tailq);
|
||||
}
|
||||
|
||||
void
|
||||
spdk_vbdev_module_list_add(struct spdk_bdev_module_if *vbdev_module)
|
||||
{
|
||||
assert(vbdev_module->examine != NULL);
|
||||
TAILQ_INSERT_TAIL(&g_bdev_mgr.vbdev_modules, vbdev_module, tailq);
|
||||
/*
|
||||
* Modules with examine callbacks must be initialized first, so they are
|
||||
* ready to handle examine callbacks from later modules that will
|
||||
* register physical bdevs.
|
||||
*/
|
||||
if (bdev_module->examine != NULL) {
|
||||
TAILQ_INSERT_HEAD(&g_bdev_mgr.bdev_modules, bdev_module, tailq);
|
||||
} else {
|
||||
TAILQ_INSERT_TAIL(&g_bdev_mgr.bdev_modules, bdev_module, tailq);
|
||||
}
|
||||
}
|
||||
|
@ -259,7 +259,7 @@ spdk_vbdev_error_create(struct spdk_bdev *base_bdev)
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
rc = spdk_vbdev_module_claim_bdev(base_bdev, NULL, SPDK_GET_BDEV_MODULE(error));
|
||||
rc = spdk_bdev_module_claim_bdev(base_bdev, NULL, SPDK_GET_BDEV_MODULE(error));
|
||||
if (rc) {
|
||||
SPDK_ERRLOG("could not claim bdev %s\n", spdk_bdev_get_name(base_bdev));
|
||||
goto cleanup;
|
||||
@ -305,7 +305,7 @@ vbdev_error_examine(struct spdk_bdev *bdev)
|
||||
|
||||
sp = spdk_conf_find_section(NULL, "BdevError");
|
||||
if (sp == NULL) {
|
||||
spdk_vbdev_module_examine_done(SPDK_GET_BDEV_MODULE(error));
|
||||
spdk_bdev_module_examine_done(SPDK_GET_BDEV_MODULE(error));
|
||||
return;
|
||||
}
|
||||
|
||||
@ -330,7 +330,7 @@ vbdev_error_examine(struct spdk_bdev *bdev)
|
||||
}
|
||||
}
|
||||
|
||||
spdk_vbdev_module_examine_done(SPDK_GET_BDEV_MODULE(error));
|
||||
spdk_bdev_module_examine_done(SPDK_GET_BDEV_MODULE(error));
|
||||
}
|
||||
|
||||
static void
|
||||
@ -343,5 +343,5 @@ vbdev_error_fini(void)
|
||||
}
|
||||
}
|
||||
|
||||
SPDK_VBDEV_MODULE_REGISTER(error, vbdev_error_init, vbdev_error_fini, NULL, NULL,
|
||||
vbdev_error_examine)
|
||||
SPDK_BDEV_MODULE_REGISTER(error, vbdev_error_init, vbdev_error_fini, NULL, NULL,
|
||||
vbdev_error_examine)
|
||||
|
@ -445,7 +445,7 @@ spdk_gpt_bdev_complete(struct spdk_bdev_io *bdev_io, bool status, void *arg)
|
||||
goto end;
|
||||
}
|
||||
|
||||
rc = spdk_vbdev_module_claim_bdev(bdev, NULL, SPDK_GET_BDEV_MODULE(gpt));
|
||||
rc = spdk_bdev_module_claim_bdev(bdev, NULL, SPDK_GET_BDEV_MODULE(gpt));
|
||||
if (rc) {
|
||||
SPDK_ERRLOG("could not claim bdev %s\n", spdk_bdev_get_name(bdev));
|
||||
goto end;
|
||||
@ -463,13 +463,13 @@ end:
|
||||
* Notify the generic bdev layer that the actions related to the original examine
|
||||
* callback are now completed.
|
||||
*/
|
||||
spdk_vbdev_module_examine_done(SPDK_GET_BDEV_MODULE(gpt));
|
||||
spdk_bdev_module_examine_done(SPDK_GET_BDEV_MODULE(gpt));
|
||||
|
||||
if (gpt_bdev->ref == 0) {
|
||||
/* If no gpt_partition_disk instances were created, free the base context */
|
||||
spdk_gpt_bdev_free(gpt_bdev);
|
||||
if (claimed) {
|
||||
spdk_vbdev_module_release_bdev(bdev);
|
||||
spdk_bdev_module_release_bdev(bdev);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -526,13 +526,13 @@ vbdev_gpt_examine(struct spdk_bdev *bdev)
|
||||
int rc;
|
||||
|
||||
if (g_gpt_disabled) {
|
||||
spdk_vbdev_module_examine_done(SPDK_GET_BDEV_MODULE(gpt));
|
||||
spdk_bdev_module_examine_done(SPDK_GET_BDEV_MODULE(gpt));
|
||||
return;
|
||||
}
|
||||
|
||||
rc = vbdev_gpt_read_gpt(bdev);
|
||||
if (rc) {
|
||||
spdk_vbdev_module_examine_done(SPDK_GET_BDEV_MODULE(gpt));
|
||||
spdk_bdev_module_examine_done(SPDK_GET_BDEV_MODULE(gpt));
|
||||
SPDK_ERRLOG("Failed to read info from bdev %s\n", spdk_bdev_get_name(bdev));
|
||||
}
|
||||
}
|
||||
@ -547,6 +547,6 @@ vbdev_gpt_get_ctx_size(void)
|
||||
return sizeof(struct spdk_io_channel *);
|
||||
}
|
||||
|
||||
SPDK_VBDEV_MODULE_REGISTER(gpt, vbdev_gpt_init, vbdev_gpt_fini, NULL,
|
||||
vbdev_gpt_get_ctx_size, vbdev_gpt_examine)
|
||||
SPDK_BDEV_MODULE_REGISTER(gpt, vbdev_gpt_init, vbdev_gpt_fini, NULL,
|
||||
vbdev_gpt_get_ctx_size, vbdev_gpt_examine)
|
||||
SPDK_LOG_REGISTER_TRACE_FLAG("vbdev_gpt", SPDK_TRACE_VBDEV_GPT)
|
||||
|
@ -100,7 +100,7 @@ bdev_malloc_get_ctx_size(void)
|
||||
}
|
||||
|
||||
SPDK_BDEV_MODULE_REGISTER(malloc, bdev_malloc_initialize, bdev_malloc_finish,
|
||||
bdev_malloc_get_spdk_running_config, bdev_malloc_get_ctx_size)
|
||||
bdev_malloc_get_spdk_running_config, bdev_malloc_get_ctx_size, NULL)
|
||||
|
||||
static void
|
||||
bdev_malloc_delete_from_list(struct malloc_disk *malloc_disk)
|
||||
|
@ -288,6 +288,6 @@ bdev_null_get_spdk_running_config(FILE *fp)
|
||||
}
|
||||
|
||||
SPDK_BDEV_MODULE_REGISTER(null, bdev_null_initialize, bdev_null_finish,
|
||||
bdev_null_get_spdk_running_config, bdev_null_get_ctx_size)
|
||||
bdev_null_get_spdk_running_config, bdev_null_get_ctx_size, NULL)
|
||||
|
||||
SPDK_LOG_REGISTER_TRACE_FLAG("bdev_null", SPDK_TRACE_BDEV_NULL)
|
||||
|
@ -152,7 +152,7 @@ bdev_nvme_get_ctx_size(void)
|
||||
|
||||
SPDK_BDEV_MODULE_REGISTER(nvme, bdev_nvme_library_init, bdev_nvme_library_fini,
|
||||
bdev_nvme_get_spdk_running_config,
|
||||
bdev_nvme_get_ctx_size)
|
||||
bdev_nvme_get_ctx_size, NULL)
|
||||
|
||||
static int
|
||||
bdev_nvme_readv(struct nvme_bdev *nbdev, struct spdk_io_channel *ch,
|
||||
|
@ -211,7 +211,7 @@ bdev_rbd_get_ctx_size(void)
|
||||
}
|
||||
|
||||
SPDK_BDEV_MODULE_REGISTER(rbd, bdev_rbd_library_init, bdev_rbd_library_fini, NULL,
|
||||
bdev_rbd_get_ctx_size)
|
||||
bdev_rbd_get_ctx_size, NULL)
|
||||
|
||||
static int64_t
|
||||
bdev_rbd_readv(struct bdev_rbd *disk, struct spdk_io_channel *ch,
|
||||
|
@ -240,7 +240,7 @@ vbdev_split_create(struct spdk_bdev *base_bdev, uint64_t split_count, uint64_t s
|
||||
int rc;
|
||||
struct split_base *split_base;
|
||||
|
||||
rc = spdk_vbdev_module_claim_bdev(base_bdev, NULL, SPDK_GET_BDEV_MODULE(split));
|
||||
rc = spdk_bdev_module_claim_bdev(base_bdev, NULL, SPDK_GET_BDEV_MODULE(split));
|
||||
if (rc) {
|
||||
SPDK_ERRLOG("could not claim bdev %s\n", spdk_bdev_get_name(base_bdev));
|
||||
return -1;
|
||||
@ -358,7 +358,7 @@ vbdev_split_examine(struct spdk_bdev *bdev)
|
||||
|
||||
sp = spdk_conf_find_section(NULL, "Split");
|
||||
if (sp == NULL) {
|
||||
spdk_vbdev_module_examine_done(SPDK_GET_BDEV_MODULE(split));
|
||||
spdk_bdev_module_examine_done(SPDK_GET_BDEV_MODULE(split));
|
||||
return;
|
||||
}
|
||||
|
||||
@ -406,7 +406,7 @@ vbdev_split_examine(struct spdk_bdev *bdev)
|
||||
}
|
||||
}
|
||||
|
||||
spdk_vbdev_module_examine_done(SPDK_GET_BDEV_MODULE(split));
|
||||
spdk_bdev_module_examine_done(SPDK_GET_BDEV_MODULE(split));
|
||||
}
|
||||
|
||||
static void
|
||||
@ -429,6 +429,6 @@ vbdev_split_get_ctx_size(void)
|
||||
return sizeof(struct spdk_io_channel *);
|
||||
}
|
||||
|
||||
SPDK_VBDEV_MODULE_REGISTER(split, vbdev_split_init, vbdev_split_fini, NULL,
|
||||
vbdev_split_get_ctx_size, vbdev_split_examine)
|
||||
SPDK_BDEV_MODULE_REGISTER(split, vbdev_split_init, vbdev_split_fini, NULL,
|
||||
vbdev_split_get_ctx_size, vbdev_split_examine)
|
||||
SPDK_LOG_REGISTER_TRACE_FLAG("vbdev_split", SPDK_TRACE_VBDEV_SPLIT)
|
||||
|
@ -118,11 +118,11 @@ static struct spdk_bdev_fn_table fn_table = {
|
||||
static void
|
||||
vbdev_ut_examine(struct spdk_bdev *bdev)
|
||||
{
|
||||
spdk_vbdev_module_examine_done(SPDK_GET_BDEV_MODULE(vbdev_ut));
|
||||
spdk_bdev_module_examine_done(SPDK_GET_BDEV_MODULE(vbdev_ut));
|
||||
}
|
||||
|
||||
SPDK_BDEV_MODULE_REGISTER(bdev_ut, NULL, NULL, NULL, NULL)
|
||||
SPDK_VBDEV_MODULE_REGISTER(vbdev_ut, NULL, NULL, NULL, NULL, vbdev_ut_examine)
|
||||
SPDK_BDEV_MODULE_REGISTER(bdev_ut, NULL, NULL, NULL, NULL, NULL)
|
||||
SPDK_BDEV_MODULE_REGISTER(vbdev_ut, NULL, NULL, NULL, NULL, vbdev_ut_examine)
|
||||
|
||||
static struct spdk_bdev *
|
||||
allocate_bdev(char *name)
|
||||
@ -217,23 +217,23 @@ open_write_test(void)
|
||||
*/
|
||||
|
||||
bdev[0] = allocate_bdev("bdev0");
|
||||
rc = spdk_vbdev_module_claim_bdev(bdev[0], NULL, SPDK_GET_BDEV_MODULE(bdev_ut));
|
||||
rc = spdk_bdev_module_claim_bdev(bdev[0], NULL, SPDK_GET_BDEV_MODULE(bdev_ut));
|
||||
CU_ASSERT(rc == 0);
|
||||
|
||||
bdev[1] = allocate_bdev("bdev1");
|
||||
rc = spdk_vbdev_module_claim_bdev(bdev[1], NULL, SPDK_GET_BDEV_MODULE(bdev_ut));
|
||||
rc = spdk_bdev_module_claim_bdev(bdev[1], NULL, SPDK_GET_BDEV_MODULE(bdev_ut));
|
||||
CU_ASSERT(rc == 0);
|
||||
|
||||
bdev[2] = allocate_bdev("bdev2");
|
||||
rc = spdk_vbdev_module_claim_bdev(bdev[2], NULL, SPDK_GET_BDEV_MODULE(bdev_ut));
|
||||
rc = spdk_bdev_module_claim_bdev(bdev[2], NULL, SPDK_GET_BDEV_MODULE(bdev_ut));
|
||||
CU_ASSERT(rc == 0);
|
||||
|
||||
bdev[3] = allocate_vbdev("bdev3", bdev[0], bdev[1]);
|
||||
rc = spdk_vbdev_module_claim_bdev(bdev[3], NULL, SPDK_GET_BDEV_MODULE(bdev_ut));
|
||||
rc = spdk_bdev_module_claim_bdev(bdev[3], NULL, SPDK_GET_BDEV_MODULE(bdev_ut));
|
||||
CU_ASSERT(rc == 0);
|
||||
|
||||
bdev[4] = allocate_vbdev("bdev4", bdev[2], NULL);
|
||||
rc = spdk_vbdev_module_claim_bdev(bdev[4], NULL, SPDK_GET_BDEV_MODULE(bdev_ut));
|
||||
rc = spdk_bdev_module_claim_bdev(bdev[4], NULL, SPDK_GET_BDEV_MODULE(bdev_ut));
|
||||
CU_ASSERT(rc == 0);
|
||||
|
||||
bdev[5] = allocate_vbdev("bdev5", bdev[2], NULL);
|
||||
|
Loading…
Reference in New Issue
Block a user