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:
Jim Harris 2017-07-12 21:06:22 -07:00
parent 7fefd60fab
commit f71447e80d
11 changed files with 76 additions and 127 deletions

View File

@ -50,12 +50,8 @@
* To implement a backend block device driver, a number of functions * To implement a backend block device driver, a number of functions
* dictated by struct spdk_bdev_fn_table must be provided. * dictated by struct spdk_bdev_fn_table must be provided.
* *
* The module should register itself using SPDK_BDEV_MODULE_REGISTER or * The module should register itself using SPDK_BDEV_MODULE_REGISTER to
* SPDK_VBDEV_MODULE_REGISTER to define the parameters for the module. * 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.
* *
* <hr> * <hr>
* *
@ -223,7 +219,11 @@ struct spdk_bdev {
bool bdev_opened_for_write; 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. */ /** List of open descriptors for this block device. */
TAILQ_HEAD(, spdk_bdev_desc) open_descs; 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); int base_bdev_count);
void spdk_vbdev_unregister(struct spdk_bdev *vbdev); 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, int spdk_bdev_module_claim_bdev(struct spdk_bdev *bdev, struct spdk_bdev_desc *desc,
struct spdk_bdev_module_if *module); struct spdk_bdev_module_if *module);
void spdk_vbdev_module_release_bdev(struct spdk_bdev *bdev); void spdk_bdev_module_release_bdev(struct spdk_bdev *bdev);
void spdk_bdev_poller_start(struct spdk_bdev_poller **ppoller, void spdk_bdev_poller_start(struct spdk_bdev_poller **ppoller,
spdk_bdev_poller_fn fn, 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); int *sc, int *sk, int *asc, int *ascq);
void spdk_bdev_module_list_add(struct spdk_bdev_module_if *bdev_module); 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 * static inline struct spdk_bdev_io *
spdk_bdev_io_from_ctx(void *ctx) 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)); ((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) \ #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, \
.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)\
static struct spdk_bdev_module_if _name ## _if = { \ static struct spdk_bdev_module_if _name ## _if = { \
.name = #_name, \ .name = #_name, \
.module_init = init_fn, \ .module_init = init_fn, \
@ -461,14 +447,14 @@ spdk_bdev_io_from_ctx(void *ctx)
}; \ }; \
__attribute__((constructor)) static void _name ## _init(void) \ __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 #define SPDK_GET_BDEV_MODULE(name) &name ## _if
/* /*
* Modules are not required to use this macro. It allows modules to reference the module with * 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) \ #define SPDK_DECLARE_BDEV_MODULE(name) \
static struct spdk_bdev_module_if name ## _if; static struct spdk_bdev_module_if name ## _if;

View File

@ -52,7 +52,7 @@ bdev_aio_get_ctx_size(void)
return sizeof(struct bdev_aio_task); 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 static int
bdev_aio_open(struct file_disk *disk) bdev_aio_open(struct file_disk *disk)

View File

@ -64,7 +64,6 @@ struct spdk_bdev_mgr {
struct spdk_mempool *buf_large_pool; struct spdk_mempool *buf_large_pool;
TAILQ_HEAD(, spdk_bdev_module_if) bdev_modules; TAILQ_HEAD(, spdk_bdev_module_if) bdev_modules;
TAILQ_HEAD(, spdk_bdev_module_if) vbdev_modules;
TAILQ_HEAD(, spdk_bdev) bdevs; TAILQ_HEAD(, spdk_bdev) bdevs;
@ -81,7 +80,6 @@ struct spdk_bdev_mgr {
static struct spdk_bdev_mgr g_bdev_mgr = { static struct spdk_bdev_mgr g_bdev_mgr = {
.bdev_modules = TAILQ_HEAD_INITIALIZER(g_bdev_mgr.bdev_modules), .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), .bdevs = TAILQ_HEAD_INITIALIZER(g_bdev_mgr.bdevs),
.start_poller_fn = NULL, .start_poller_fn = NULL,
.stop_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; return max_bdev_module_size;
} }
@ -330,11 +322,6 @@ spdk_bdev_config_text(FILE *fp)
bdev_module->config_text(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 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 * exist, return immediately since we cannot finish bdev subsystem
* initialization until all are completed. * 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) { if (m->examine_in_progress > 0) {
return; return;
} }
@ -412,22 +399,6 @@ spdk_bdev_modules_init(void)
return 0; 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 void
spdk_bdev_poller_start(struct spdk_bdev_poller **ppoller, spdk_bdev_poller_start(struct spdk_bdev_poller **ppoller,
spdk_bdev_poller_fn fn, 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, spdk_bdev_mgmt_channel_destroy,
sizeof(struct spdk_bdev_mgmt_channel)); 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(); rc = spdk_bdev_modules_init();
spdk_bdev_module_init_complete(rc); spdk_bdev_module_init_complete(rc);
} }
@ -525,12 +490,6 @@ spdk_bdev_finish(void)
{ {
struct spdk_bdev_module_if *bdev_module; 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) { TAILQ_FOREACH(bdev_module, &g_bdev_mgr.bdev_modules, tailq) {
if (bdev_module->module_fini) { if (bdev_module->module_fini) {
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 static void
_spdk_bdev_register(struct spdk_bdev *bdev) _spdk_bdev_register(struct spdk_bdev *bdev)
{ {
struct spdk_bdev_module_if *vbdev_module; struct spdk_bdev_module_if *module;
assert(bdev->module != NULL); 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); SPDK_TRACELOG(SPDK_TRACE_DEBUG, "Inserting bdev %s into list\n", bdev->name);
TAILQ_INSERT_TAIL(&g_bdev_mgr.bdevs, bdev, link); TAILQ_INSERT_TAIL(&g_bdev_mgr.bdevs, bdev, link);
TAILQ_FOREACH(vbdev_module, &g_bdev_mgr.vbdev_modules, tailq) { TAILQ_FOREACH(module, &g_bdev_mgr.bdev_modules, tailq) {
vbdev_module->examine_in_progress++; if (module->examine) {
vbdev_module->examine(bdev); module->examine_in_progress++;
module->examine(bdev);
}
} }
} }
@ -1478,7 +1439,7 @@ spdk_vbdev_unregister(struct spdk_bdev *vbdev)
} }
void 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; 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--; 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 * exist, return immediately since we cannot finish bdev subsystem
* initialization until all are completed. * 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) { if (m->examine_in_progress > 0) {
return; 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) { if (g_bdev_mgr.module_init_complete && !g_bdev_mgr.init_complete) {
/* /*
* Modules already finished initialization - now that all * Modules already finished initialization - now that all
* the vbdevs have finished their asynchronous I/O processing, * the bdev moduless have finished their asynchronous I/O
* the entire bdev layer can be marked as complete. * processing, the entire bdev layer can be marked as complete.
*/ */
spdk_bdev_init_complete(0); 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); 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); SPDK_ERRLOG("failed, %s already opened for write or claimed\n", bdev->name);
free(desc); free(desc);
pthread_mutex_unlock(&bdev->mutex); pthread_mutex_unlock(&bdev->mutex);
@ -1570,12 +1531,12 @@ spdk_bdev_close(struct spdk_bdev_desc *desc)
} }
int int
spdk_vbdev_module_claim_bdev(struct spdk_bdev *bdev, struct spdk_bdev_desc *desc, spdk_bdev_module_claim_bdev(struct spdk_bdev *bdev, struct spdk_bdev_desc *desc,
struct spdk_bdev_module_if *module) 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, SPDK_ERRLOG("bdev %s already claimed by module %s\n", bdev->name,
bdev->vbdev_claim_module->name); bdev->claim_module->name);
return -EPERM; return -EPERM;
} }
@ -1588,15 +1549,15 @@ spdk_vbdev_module_claim_bdev(struct spdk_bdev *bdev, struct spdk_bdev_desc *desc
desc->write = true; desc->write = true;
} }
bdev->vbdev_claim_module = module; bdev->claim_module = module;
return 0; return 0;
} }
void 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); assert(bdev->claim_module != NULL);
bdev->vbdev_claim_module = NULL; bdev->claim_module = NULL;
} }
void void
@ -1635,12 +1596,14 @@ spdk_bdev_io_get_iovec(struct spdk_bdev_io *bdev_io, struct iovec **iovp, int *i
void void
spdk_bdev_module_list_add(struct spdk_bdev_module_if *bdev_module) spdk_bdev_module_list_add(struct spdk_bdev_module_if *bdev_module)
{ {
TAILQ_INSERT_TAIL(&g_bdev_mgr.bdev_modules, bdev_module, tailq); /*
} * Modules with examine callbacks must be initialized first, so they are
* ready to handle examine callbacks from later modules that will
void * register physical bdevs.
spdk_vbdev_module_list_add(struct spdk_bdev_module_if *vbdev_module) */
{ if (bdev_module->examine != NULL) {
assert(vbdev_module->examine != NULL); TAILQ_INSERT_HEAD(&g_bdev_mgr.bdev_modules, bdev_module, tailq);
TAILQ_INSERT_TAIL(&g_bdev_mgr.vbdev_modules, vbdev_module, tailq); } else {
TAILQ_INSERT_TAIL(&g_bdev_mgr.bdev_modules, bdev_module, tailq);
}
} }

View File

@ -259,7 +259,7 @@ spdk_vbdev_error_create(struct spdk_bdev *base_bdev)
goto cleanup; 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) { if (rc) {
SPDK_ERRLOG("could not claim bdev %s\n", spdk_bdev_get_name(base_bdev)); SPDK_ERRLOG("could not claim bdev %s\n", spdk_bdev_get_name(base_bdev));
goto cleanup; goto cleanup;
@ -305,7 +305,7 @@ vbdev_error_examine(struct spdk_bdev *bdev)
sp = spdk_conf_find_section(NULL, "BdevError"); sp = spdk_conf_find_section(NULL, "BdevError");
if (sp == NULL) { if (sp == NULL) {
spdk_vbdev_module_examine_done(SPDK_GET_BDEV_MODULE(error)); spdk_bdev_module_examine_done(SPDK_GET_BDEV_MODULE(error));
return; 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 static void
@ -343,5 +343,5 @@ vbdev_error_fini(void)
} }
} }
SPDK_VBDEV_MODULE_REGISTER(error, vbdev_error_init, vbdev_error_fini, NULL, NULL, SPDK_BDEV_MODULE_REGISTER(error, vbdev_error_init, vbdev_error_fini, NULL, NULL,
vbdev_error_examine) vbdev_error_examine)

View File

@ -445,7 +445,7 @@ spdk_gpt_bdev_complete(struct spdk_bdev_io *bdev_io, bool status, void *arg)
goto end; 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) { if (rc) {
SPDK_ERRLOG("could not claim bdev %s\n", spdk_bdev_get_name(bdev)); SPDK_ERRLOG("could not claim bdev %s\n", spdk_bdev_get_name(bdev));
goto end; goto end;
@ -463,13 +463,13 @@ end:
* Notify the generic bdev layer that the actions related to the original examine * Notify the generic bdev layer that the actions related to the original examine
* callback are now completed. * 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 (gpt_bdev->ref == 0) {
/* If no gpt_partition_disk instances were created, free the base context */ /* If no gpt_partition_disk instances were created, free the base context */
spdk_gpt_bdev_free(gpt_bdev); spdk_gpt_bdev_free(gpt_bdev);
if (claimed) { 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; int rc;
if (g_gpt_disabled) { 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; return;
} }
rc = vbdev_gpt_read_gpt(bdev); rc = vbdev_gpt_read_gpt(bdev);
if (rc) { 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)); 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 *); return sizeof(struct spdk_io_channel *);
} }
SPDK_VBDEV_MODULE_REGISTER(gpt, vbdev_gpt_init, vbdev_gpt_fini, NULL, SPDK_BDEV_MODULE_REGISTER(gpt, vbdev_gpt_init, vbdev_gpt_fini, NULL,
vbdev_gpt_get_ctx_size, vbdev_gpt_examine) vbdev_gpt_get_ctx_size, vbdev_gpt_examine)
SPDK_LOG_REGISTER_TRACE_FLAG("vbdev_gpt", SPDK_TRACE_VBDEV_GPT) SPDK_LOG_REGISTER_TRACE_FLAG("vbdev_gpt", SPDK_TRACE_VBDEV_GPT)

View File

@ -100,7 +100,7 @@ bdev_malloc_get_ctx_size(void)
} }
SPDK_BDEV_MODULE_REGISTER(malloc, bdev_malloc_initialize, bdev_malloc_finish, 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 static void
bdev_malloc_delete_from_list(struct malloc_disk *malloc_disk) bdev_malloc_delete_from_list(struct malloc_disk *malloc_disk)

View File

@ -288,6 +288,6 @@ bdev_null_get_spdk_running_config(FILE *fp)
} }
SPDK_BDEV_MODULE_REGISTER(null, bdev_null_initialize, bdev_null_finish, 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) SPDK_LOG_REGISTER_TRACE_FLAG("bdev_null", SPDK_TRACE_BDEV_NULL)

View File

@ -152,7 +152,7 @@ bdev_nvme_get_ctx_size(void)
SPDK_BDEV_MODULE_REGISTER(nvme, bdev_nvme_library_init, bdev_nvme_library_fini, SPDK_BDEV_MODULE_REGISTER(nvme, bdev_nvme_library_init, bdev_nvme_library_fini,
bdev_nvme_get_spdk_running_config, bdev_nvme_get_spdk_running_config,
bdev_nvme_get_ctx_size) bdev_nvme_get_ctx_size, NULL)
static int static int
bdev_nvme_readv(struct nvme_bdev *nbdev, struct spdk_io_channel *ch, bdev_nvme_readv(struct nvme_bdev *nbdev, struct spdk_io_channel *ch,

View File

@ -211,7 +211,7 @@ bdev_rbd_get_ctx_size(void)
} }
SPDK_BDEV_MODULE_REGISTER(rbd, bdev_rbd_library_init, bdev_rbd_library_fini, NULL, 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 static int64_t
bdev_rbd_readv(struct bdev_rbd *disk, struct spdk_io_channel *ch, bdev_rbd_readv(struct bdev_rbd *disk, struct spdk_io_channel *ch,

View File

@ -240,7 +240,7 @@ vbdev_split_create(struct spdk_bdev *base_bdev, uint64_t split_count, uint64_t s
int rc; int rc;
struct split_base *split_base; 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) { if (rc) {
SPDK_ERRLOG("could not claim bdev %s\n", spdk_bdev_get_name(base_bdev)); SPDK_ERRLOG("could not claim bdev %s\n", spdk_bdev_get_name(base_bdev));
return -1; return -1;
@ -358,7 +358,7 @@ vbdev_split_examine(struct spdk_bdev *bdev)
sp = spdk_conf_find_section(NULL, "Split"); sp = spdk_conf_find_section(NULL, "Split");
if (sp == NULL) { if (sp == NULL) {
spdk_vbdev_module_examine_done(SPDK_GET_BDEV_MODULE(split)); spdk_bdev_module_examine_done(SPDK_GET_BDEV_MODULE(split));
return; 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 static void
@ -429,6 +429,6 @@ vbdev_split_get_ctx_size(void)
return sizeof(struct spdk_io_channel *); return sizeof(struct spdk_io_channel *);
} }
SPDK_VBDEV_MODULE_REGISTER(split, vbdev_split_init, vbdev_split_fini, NULL, SPDK_BDEV_MODULE_REGISTER(split, vbdev_split_init, vbdev_split_fini, NULL,
vbdev_split_get_ctx_size, vbdev_split_examine) vbdev_split_get_ctx_size, vbdev_split_examine)
SPDK_LOG_REGISTER_TRACE_FLAG("vbdev_split", SPDK_TRACE_VBDEV_SPLIT) SPDK_LOG_REGISTER_TRACE_FLAG("vbdev_split", SPDK_TRACE_VBDEV_SPLIT)

View File

@ -118,11 +118,11 @@ static struct spdk_bdev_fn_table fn_table = {
static void static void
vbdev_ut_examine(struct spdk_bdev *bdev) 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_BDEV_MODULE_REGISTER(bdev_ut, NULL, NULL, NULL, NULL, NULL)
SPDK_VBDEV_MODULE_REGISTER(vbdev_ut, NULL, NULL, NULL, NULL, vbdev_ut_examine) SPDK_BDEV_MODULE_REGISTER(vbdev_ut, NULL, NULL, NULL, NULL, vbdev_ut_examine)
static struct spdk_bdev * static struct spdk_bdev *
allocate_bdev(char *name) allocate_bdev(char *name)
@ -217,23 +217,23 @@ open_write_test(void)
*/ */
bdev[0] = allocate_bdev("bdev0"); 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); CU_ASSERT(rc == 0);
bdev[1] = allocate_bdev("bdev1"); 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); CU_ASSERT(rc == 0);
bdev[2] = allocate_bdev("bdev2"); 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); CU_ASSERT(rc == 0);
bdev[3] = allocate_vbdev("bdev3", bdev[0], bdev[1]); 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); CU_ASSERT(rc == 0);
bdev[4] = allocate_vbdev("bdev4", bdev[2], NULL); 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); CU_ASSERT(rc == 0);
bdev[5] = allocate_vbdev("bdev5", bdev[2], NULL); bdev[5] = allocate_vbdev("bdev5", bdev[2], NULL);