bdev/ftl: spdk_ftl_module_(init|fini) are not longer needed

There is no need for spdk_ftl_module_(init|fini)
after ANM functionality was removed from FTL lib.

Change-Id: Id8d05aed8620217869c56fca35b490bc9c716541
Signed-off-by: Wojciech Malikowski <wojciech.malikowski@intel.com>
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/472335
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Community-CI: Broadcom SPDK FC-NVMe CI <spdk-ci.pdl@broadcom.com>
Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Konrad Sztyber <konrad.sztyber@intel.com>
This commit is contained in:
Wojciech Malikowski 2019-10-25 03:31:14 -04:00 committed by Tomasz Zawadzki
parent 988759501d
commit 2ff623b504
3 changed files with 22 additions and 120 deletions

View File

@ -148,38 +148,9 @@ struct spdk_ftl_attrs {
struct spdk_ftl_conf conf;
};
struct ftl_module_init_opts {
/* Thread on which to poll for ANM events */
struct spdk_thread *anm_thread;
};
typedef void (*spdk_ftl_fn)(void *, int);
typedef void (*spdk_ftl_init_fn)(struct spdk_ftl_dev *, void *, int);
/**
* Initialize the FTL module.
*
* \param opts module configuration
* \param cb callback function to call when the module is initialized
* \param cb_arg callback's argument
*
* \return 0 if successfully started initialization, negative values if
* resources could not be allocated.
*/
int spdk_ftl_module_init(const struct ftl_module_init_opts *opts, spdk_ftl_fn cb, void *cb_arg);
/**
* Deinitialize the FTL module. All FTL devices have to be unregistered prior to
* calling this function.
*
* \param cb callback function to call when the deinitialization is completed
* \param cb_arg callback's argument
*
* \return 0 if successfully scheduled deinitialization, negative errno
* otherwise.
*/
int spdk_ftl_module_fini(spdk_ftl_fn cb, void *cb_arg);
/**
* Initialize the FTL on given NVMe device and parallel unit range.
*

View File

@ -1283,18 +1283,4 @@ spdk_ftl_dev_free(struct spdk_ftl_dev *dev, spdk_ftl_init_fn cb_fn, void *cb_arg
return _spdk_ftl_dev_free(dev, cb_fn, cb_arg, spdk_get_thread());
}
int
spdk_ftl_module_init(const struct ftl_module_init_opts *opts, spdk_ftl_fn cb, void *cb_arg)
{
cb(cb_arg, 0);
return 0;
}
int
spdk_ftl_module_fini(spdk_ftl_fn cb, void *cb_arg)
{
cb(cb_arg, 0);
return 0;
}
SPDK_LOG_REGISTER_COMPONENT("ftl_init", SPDK_LOG_FTL_INIT)

View File

@ -98,7 +98,6 @@ struct ftl_deferred_init {
typedef void (*bdev_ftl_finish_fn)(void);
static LIST_HEAD(, ftl_bdev) g_ftl_bdevs = LIST_HEAD_INITIALIZER(g_ftl_bdevs);
static bdev_ftl_finish_fn g_finish_cb;
static size_t g_num_conf_bdevs;
static size_t g_num_init_bdevs;
static pthread_mutex_t g_ftl_bdev_lock;
@ -117,7 +116,7 @@ bdev_ftl_get_ctx_size(void)
static struct spdk_bdev_module g_ftl_if = {
.name = "ftl",
.async_init = true,
.async_fini = true,
.async_fini = false,
.module_init = bdev_ftl_initialize,
.module_fini = bdev_ftl_finish,
.examine_disk = bdev_ftl_examine,
@ -185,11 +184,9 @@ static void
bdev_ftl_free_cb(struct spdk_ftl_dev *dev, void *ctx, int status)
{
struct ftl_bdev *ftl_bdev = ctx;
bool finish_done;
pthread_mutex_lock(&g_ftl_bdev_lock);
LIST_REMOVE(ftl_bdev, list_entry);
finish_done = LIST_EMPTY(&g_ftl_bdevs);
pthread_mutex_unlock(&g_ftl_bdev_lock);
spdk_io_device_unregister(ftl_bdev, NULL);
@ -204,10 +201,6 @@ bdev_ftl_free_cb(struct spdk_ftl_dev *dev, void *ctx, int status)
spdk_bdev_destruct_done(&ftl_bdev->bdev, status);
free(ftl_bdev->bdev.name);
free(ftl_bdev);
if (finish_done && g_finish_cb) {
g_finish_cb();
}
}
static int
@ -838,16 +831,31 @@ bdev_ftl_init_cb(const struct ftl_bdev_info *info, void *ctx, int status)
bdev_ftl_bdev_init_done();
}
static void
bdev_ftl_initialize_cb(void *ctx, int status)
static int
bdev_ftl_initialize(void)
{
pthread_mutexattr_t attr;
struct spdk_conf_section *sp;
struct ftl_bdev_init_opts *opts = NULL;
struct ftl_deferred_init *defer_opts;
size_t i;
if (status) {
SPDK_ERRLOG("Failed to initialize FTL module\n");
int rc = 0;
if (pthread_mutexattr_init(&attr)) {
SPDK_ERRLOG("Mutex initialization failed\n");
return -1;
}
if (pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE)) {
SPDK_ERRLOG("Mutex initialization failed\n");
rc = -1;
goto out;
}
if (pthread_mutex_init(&g_ftl_bdev_lock, &attr)) {
SPDK_ERRLOG("Mutex initialization failed\n");
rc = -1;
goto out;
}
@ -883,47 +891,13 @@ bdev_ftl_initialize_cb(void *ctx, int status)
bdev_ftl_bdev_init_done();
}
}
out:
if (g_num_conf_bdevs == 0) {
spdk_bdev_module_init_done(&g_ftl_if);
}
free(opts);
}
static int
bdev_ftl_initialize(void)
{
struct ftl_module_init_opts ftl_opts = {};
pthread_mutexattr_t attr;
int rc = 0;
if (pthread_mutexattr_init(&attr)) {
SPDK_ERRLOG("Mutex initialization failed\n");
return -1;
}
if (pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE)) {
SPDK_ERRLOG("Mutex initialization failed\n");
rc = -1;
goto error;
}
if (pthread_mutex_init(&g_ftl_bdev_lock, &attr)) {
SPDK_ERRLOG("Mutex initialization failed\n");
rc = -1;
goto error;
}
/* TODO: retrieve this from config */
ftl_opts.anm_thread = spdk_get_thread();
rc = spdk_ftl_module_init(&ftl_opts, bdev_ftl_initialize_cb, NULL);
if (rc) {
bdev_ftl_initialize_cb(NULL, rc);
}
error:
pthread_mutexattr_destroy(&attr);
return rc;
}
@ -1003,39 +977,10 @@ bdev_ftl_delete_bdev(const char *name, spdk_bdev_unregister_cb cb_fn, void *cb_a
cb_fn(cb_arg, -ENODEV);
}
static void
bdev_ftl_ftl_module_fini_cb(void *ctx, int status)
{
if (status) {
SPDK_ERRLOG("Failed to deinitialize FTL module\n");
assert(0);
}
spdk_bdev_module_finish_done();
}
static void
bdev_ftl_finish_cb(void)
{
if (spdk_ftl_module_fini(bdev_ftl_ftl_module_fini_cb, NULL)) {
SPDK_ERRLOG("Failed to deinitialize FTL module\n");
assert(0);
}
}
static void
bdev_ftl_finish(void)
{
pthread_mutex_lock(&g_ftl_bdev_lock);
if (LIST_EMPTY(&g_ftl_bdevs)) {
pthread_mutex_unlock(&g_ftl_bdev_lock);
bdev_ftl_finish_cb();
return;
}
g_finish_cb = bdev_ftl_finish_cb;
pthread_mutex_unlock(&g_ftl_bdev_lock);
assert(LIST_EMPTY(&g_ftl_bdevs));
}
SPDK_LOG_REGISTER_COMPONENT("bdev_ftl", SPDK_LOG_BDEV_FTL)