Commit 2ff623b5 authored by Wojciech Malikowski's avatar Wojciech Malikowski Committed by Tomasz Zawadzki
Browse files

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: default avatarWojciech Malikowski <wojciech.malikowski@intel.com>
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/472335


Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Community-CI: Broadcom SPDK FC-NVMe CI <spdk-ci.pdl@broadcom.com>
Reviewed-by: default avatarShuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Reviewed-by: default avatarJim Harris <james.r.harris@intel.com>
Reviewed-by: default avatarKonrad Sztyber <konrad.sztyber@intel.com>
parent 98875950
Loading
Loading
Loading
Loading
+0 −29
Original line number Diff line number Diff line
@@ -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.
 *
+0 −14
Original line number Diff line number Diff line
@@ -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)
+22 −77
Original line number Diff line number Diff line
@@ -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)