From 2ff623b50444b565a86bd544c9301dd44a769d6f Mon Sep 17 00:00:00 2001 From: Wojciech Malikowski Date: Fri, 25 Oct 2019 03:31:14 -0400 Subject: [PATCH] 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 Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/472335 Tested-by: SPDK CI Jenkins Community-CI: Broadcom SPDK FC-NVMe CI Reviewed-by: Shuhei Matsumoto Reviewed-by: Jim Harris Reviewed-by: Konrad Sztyber --- include/spdk/ftl.h | 29 ----------- lib/ftl/ftl_init.c | 14 ------ module/bdev/nvme/bdev_ftl.c | 99 +++++++++---------------------------- 3 files changed, 22 insertions(+), 120 deletions(-) diff --git a/include/spdk/ftl.h b/include/spdk/ftl.h index 7cdb88af0..4e0d1fcd9 100644 --- a/include/spdk/ftl.h +++ b/include/spdk/ftl.h @@ -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. * diff --git a/lib/ftl/ftl_init.c b/lib/ftl/ftl_init.c index 2bff6bc99..ba81c5327 100644 --- a/lib/ftl/ftl_init.c +++ b/lib/ftl/ftl_init.c @@ -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) diff --git a/module/bdev/nvme/bdev_ftl.c b/module/bdev/nvme/bdev_ftl.c index 4f9c98113..87a819ab9 100644 --- a/module/bdev/nvme/bdev_ftl.c +++ b/module/bdev/nvme/bdev_ftl.c @@ -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)