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:
parent
988759501d
commit
2ff623b504
@ -148,38 +148,9 @@ struct spdk_ftl_attrs {
|
|||||||
struct spdk_ftl_conf conf;
|
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_fn)(void *, int);
|
||||||
typedef void (*spdk_ftl_init_fn)(struct spdk_ftl_dev *, 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.
|
* Initialize the FTL on given NVMe device and parallel unit range.
|
||||||
*
|
*
|
||||||
|
@ -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());
|
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)
|
SPDK_LOG_REGISTER_COMPONENT("ftl_init", SPDK_LOG_FTL_INIT)
|
||||||
|
@ -98,7 +98,6 @@ struct ftl_deferred_init {
|
|||||||
typedef void (*bdev_ftl_finish_fn)(void);
|
typedef void (*bdev_ftl_finish_fn)(void);
|
||||||
|
|
||||||
static LIST_HEAD(, ftl_bdev) g_ftl_bdevs = LIST_HEAD_INITIALIZER(g_ftl_bdevs);
|
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_conf_bdevs;
|
||||||
static size_t g_num_init_bdevs;
|
static size_t g_num_init_bdevs;
|
||||||
static pthread_mutex_t g_ftl_bdev_lock;
|
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 = {
|
static struct spdk_bdev_module g_ftl_if = {
|
||||||
.name = "ftl",
|
.name = "ftl",
|
||||||
.async_init = true,
|
.async_init = true,
|
||||||
.async_fini = true,
|
.async_fini = false,
|
||||||
.module_init = bdev_ftl_initialize,
|
.module_init = bdev_ftl_initialize,
|
||||||
.module_fini = bdev_ftl_finish,
|
.module_fini = bdev_ftl_finish,
|
||||||
.examine_disk = bdev_ftl_examine,
|
.examine_disk = bdev_ftl_examine,
|
||||||
@ -185,11 +184,9 @@ static void
|
|||||||
bdev_ftl_free_cb(struct spdk_ftl_dev *dev, void *ctx, int status)
|
bdev_ftl_free_cb(struct spdk_ftl_dev *dev, void *ctx, int status)
|
||||||
{
|
{
|
||||||
struct ftl_bdev *ftl_bdev = ctx;
|
struct ftl_bdev *ftl_bdev = ctx;
|
||||||
bool finish_done;
|
|
||||||
|
|
||||||
pthread_mutex_lock(&g_ftl_bdev_lock);
|
pthread_mutex_lock(&g_ftl_bdev_lock);
|
||||||
LIST_REMOVE(ftl_bdev, list_entry);
|
LIST_REMOVE(ftl_bdev, list_entry);
|
||||||
finish_done = LIST_EMPTY(&g_ftl_bdevs);
|
|
||||||
pthread_mutex_unlock(&g_ftl_bdev_lock);
|
pthread_mutex_unlock(&g_ftl_bdev_lock);
|
||||||
|
|
||||||
spdk_io_device_unregister(ftl_bdev, NULL);
|
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);
|
spdk_bdev_destruct_done(&ftl_bdev->bdev, status);
|
||||||
free(ftl_bdev->bdev.name);
|
free(ftl_bdev->bdev.name);
|
||||||
free(ftl_bdev);
|
free(ftl_bdev);
|
||||||
|
|
||||||
if (finish_done && g_finish_cb) {
|
|
||||||
g_finish_cb();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
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();
|
bdev_ftl_bdev_init_done();
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static int
|
||||||
bdev_ftl_initialize_cb(void *ctx, int status)
|
bdev_ftl_initialize(void)
|
||||||
{
|
{
|
||||||
|
pthread_mutexattr_t attr;
|
||||||
struct spdk_conf_section *sp;
|
struct spdk_conf_section *sp;
|
||||||
struct ftl_bdev_init_opts *opts = NULL;
|
struct ftl_bdev_init_opts *opts = NULL;
|
||||||
struct ftl_deferred_init *defer_opts;
|
struct ftl_deferred_init *defer_opts;
|
||||||
size_t i;
|
size_t i;
|
||||||
|
|
||||||
if (status) {
|
int rc = 0;
|
||||||
SPDK_ERRLOG("Failed to initialize FTL module\n");
|
|
||||||
|
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;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -883,47 +891,13 @@ bdev_ftl_initialize_cb(void *ctx, int status)
|
|||||||
bdev_ftl_bdev_init_done();
|
bdev_ftl_bdev_init_done();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
out:
|
out:
|
||||||
if (g_num_conf_bdevs == 0) {
|
if (g_num_conf_bdevs == 0) {
|
||||||
spdk_bdev_module_init_done(&g_ftl_if);
|
spdk_bdev_module_init_done(&g_ftl_if);
|
||||||
}
|
}
|
||||||
|
|
||||||
free(opts);
|
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);
|
pthread_mutexattr_destroy(&attr);
|
||||||
return rc;
|
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);
|
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
|
static void
|
||||||
bdev_ftl_finish(void)
|
bdev_ftl_finish(void)
|
||||||
{
|
{
|
||||||
pthread_mutex_lock(&g_ftl_bdev_lock);
|
assert(LIST_EMPTY(&g_ftl_bdevs));
|
||||||
|
|
||||||
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);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
SPDK_LOG_REGISTER_COMPONENT("bdev_ftl", SPDK_LOG_BDEV_FTL)
|
SPDK_LOG_REGISTER_COMPONENT("bdev_ftl", SPDK_LOG_BDEV_FTL)
|
||||||
|
Loading…
Reference in New Issue
Block a user