bdev: encapsulate members of spdk_bdev_module

Change-Id: Id0f9ba665a7a7fb2ead299b7853074c2e994dbd4
Signed-off-by: Seth Howell <seth.howell@intel.com>
Reviewed-on: https://review.gerrithub.io/416462
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:
Seth Howell 2018-06-21 13:32:40 -07:00 committed by Ben Walker
parent 86947c8917
commit 2c52691b48
2 changed files with 32 additions and 26 deletions

View File

@ -105,14 +105,6 @@ struct spdk_bdev_module {
*/
void (*examine)(struct spdk_bdev *bdev);
/**
* Count of bdev inits/examinations in progress. Used by generic bdev
* layer and must not be modified by bdev modules.
*
* \note Used internally by bdev subsystem, don't change this value in bdev module.
*/
uint32_t action_in_progress;
/**
* Denotes if the module_init function may complete asynchronously. If set to true,
* the module initialization has to be explicitly completed by calling
@ -127,7 +119,21 @@ struct spdk_bdev_module {
*/
bool async_fini;
/**
* Fields that are used by the internal bdev subsystem. Bdev modules
* must not read or write to these fields.
*/
struct __bdev_module_internal_fields {
/**
* Count of bdev inits/examinations in progress. Used by generic bdev
* layer and must not be modified by bdev modules.
*
* \note Used internally by bdev subsystem, don't change this value in bdev module.
*/
uint32_t action_in_progress;
TAILQ_ENTRY(spdk_bdev_module) tailq;
} internal;
};
typedef void (*spdk_bdev_unregister_cb)(void *cb_arg, int rc);

View File

@ -466,7 +466,7 @@ spdk_bdev_module_get_max_ctx_size(void)
struct spdk_bdev_module *bdev_module;
int max_bdev_module_size = 0;
TAILQ_FOREACH(bdev_module, &g_bdev_mgr.bdev_modules, tailq) {
TAILQ_FOREACH(bdev_module, &g_bdev_mgr.bdev_modules, internal.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();
}
@ -480,7 +480,7 @@ spdk_bdev_config_text(FILE *fp)
{
struct spdk_bdev_module *bdev_module;
TAILQ_FOREACH(bdev_module, &g_bdev_mgr.bdev_modules, tailq) {
TAILQ_FOREACH(bdev_module, &g_bdev_mgr.bdev_modules, internal.tailq) {
if (bdev_module->config_text) {
bdev_module->config_text(fp);
}
@ -506,7 +506,7 @@ spdk_bdev_subsystem_config_json(struct spdk_json_write_ctx *w)
spdk_json_write_object_end(w);
spdk_json_write_object_end(w);
TAILQ_FOREACH(bdev_module, &g_bdev_mgr.bdev_modules, tailq) {
TAILQ_FOREACH(bdev_module, &g_bdev_mgr.bdev_modules, internal.tailq) {
if (bdev_module->config_json) {
bdev_module->config_json(w);
}
@ -586,7 +586,7 @@ spdk_bdev_init_complete(int rc)
* For modules that need to know when subsystem init is complete,
* inform them now.
*/
TAILQ_FOREACH(m, &g_bdev_mgr.bdev_modules, tailq) {
TAILQ_FOREACH(m, &g_bdev_mgr.bdev_modules, internal.tailq) {
if (m->init_complete) {
m->init_complete();
}
@ -614,8 +614,8 @@ spdk_bdev_module_action_complete(void)
* exist, return immediately since we cannot finish bdev subsystem
* initialization until all are completed.
*/
TAILQ_FOREACH(m, &g_bdev_mgr.bdev_modules, tailq) {
if (m->action_in_progress > 0) {
TAILQ_FOREACH(m, &g_bdev_mgr.bdev_modules, internal.tailq) {
if (m->internal.action_in_progress > 0) {
return;
}
}
@ -631,8 +631,8 @@ spdk_bdev_module_action_complete(void)
static void
spdk_bdev_module_action_done(struct spdk_bdev_module *module)
{
assert(module->action_in_progress > 0);
module->action_in_progress--;
assert(module->internal.action_in_progress > 0);
module->internal.action_in_progress--;
spdk_bdev_module_action_complete();
}
@ -654,7 +654,7 @@ spdk_bdev_modules_init(void)
struct spdk_bdev_module *module;
int rc = 0;
TAILQ_FOREACH(module, &g_bdev_mgr.bdev_modules, tailq) {
TAILQ_FOREACH(module, &g_bdev_mgr.bdev_modules, internal.tailq) {
rc = module->module_init();
if (rc != 0) {
break;
@ -822,7 +822,7 @@ spdk_bdev_module_finish_iter(void *arg)
if (!g_resume_bdev_module) {
bdev_module = TAILQ_FIRST(&g_bdev_mgr.bdev_modules);
} else {
bdev_module = TAILQ_NEXT(g_resume_bdev_module, tailq);
bdev_module = TAILQ_NEXT(g_resume_bdev_module, internal.tailq);
}
while (bdev_module) {
@ -843,7 +843,7 @@ spdk_bdev_module_finish_iter(void *arg)
return;
}
bdev_module = TAILQ_NEXT(bdev_module, tailq);
bdev_module = TAILQ_NEXT(bdev_module, internal.tailq);
}
g_resume_bdev_module = NULL;
@ -2737,9 +2737,9 @@ spdk_bdev_start(struct spdk_bdev *bdev)
SPDK_DEBUGLOG(SPDK_LOG_BDEV, "Inserting bdev %s into list\n", bdev->name);
TAILQ_INSERT_TAIL(&g_bdev_mgr.bdevs, bdev, internal.link);
TAILQ_FOREACH(module, &g_bdev_mgr.bdev_modules, tailq) {
TAILQ_FOREACH(module, &g_bdev_mgr.bdev_modules, internal.tailq) {
if (module->examine) {
module->action_in_progress++;
module->internal.action_in_progress++;
module->examine(bdev);
}
}
@ -3087,7 +3087,7 @@ spdk_bdev_module_list_add(struct spdk_bdev_module *bdev_module)
}
if (bdev_module->async_init) {
bdev_module->action_in_progress = 1;
bdev_module->internal.action_in_progress = 1;
}
/*
@ -3096,9 +3096,9 @@ spdk_bdev_module_list_add(struct spdk_bdev_module *bdev_module)
* register physical bdevs.
*/
if (bdev_module->examine != NULL) {
TAILQ_INSERT_HEAD(&g_bdev_mgr.bdev_modules, bdev_module, tailq);
TAILQ_INSERT_HEAD(&g_bdev_mgr.bdev_modules, bdev_module, internal.tailq);
} else {
TAILQ_INSERT_TAIL(&g_bdev_mgr.bdev_modules, bdev_module, tailq);
TAILQ_INSERT_TAIL(&g_bdev_mgr.bdev_modules, bdev_module, internal.tailq);
}
}
@ -3107,7 +3107,7 @@ spdk_bdev_module_list_find(const char *name)
{
struct spdk_bdev_module *bdev_module;
TAILQ_FOREACH(bdev_module, &g_bdev_mgr.bdev_modules, tailq) {
TAILQ_FOREACH(bdev_module, &g_bdev_mgr.bdev_modules, internal.tailq) {
if (strcmp(name, bdev_module->name) == 0) {
break;
}