Commit 5d89ebb7 authored by Mateusz Kozlowski's avatar Mateusz Kozlowski Committed by Tomasz Zawadzki
Browse files

lib/ftl: Add deinit handler to FTL mngt



When the FTL management process wants to cleanup, for example free
resources which were allocated in init_handler, the deinit_handler
can be provided.

Change-Id: Iaa9eac61d0c5b829ab368b19677c3eba0d5e8526
Signed-off-by: default avatarMariusz Barczak <Mariusz.Barczak@solidigmtechnology.com>
Signed-off-by: default avatarMateusz Kozlowski <mateusz.kozlowski@solidigm.com>
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/19607


Community-CI: Mellanox Build Bot
Reviewed-by: default avatarBen Walker <ben@nvidia.com>
Reviewed-by: default avatarArtur Paszkiewicz <artur.paszkiewicz@intel.com>
Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: default avatarJim Harris <jim.harris@samsung.com>
parent 9452abe6
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -444,6 +444,10 @@ finish_msg(void *ctx)

	mngt->caller.cb(mngt->dev, mngt->caller.cb_ctx, mngt->status);

	if (mngt->desc->deinit_handler) {
		mngt->desc->deinit_handler(mngt->dev, mngt);
	}

	if (!mngt->silent) {
		/* TODO: refactor the logging macros to pass just the name instead of device */
		struct spdk_ftl_dev tmpdev = {
+6 −0
Original line number Diff line number Diff line
@@ -117,6 +117,12 @@ struct ftl_mngt_process_desc {
	 */
	ftl_mngt_init_fn init_handler;

	/**
	 * When the process wants to cleanup, for example free resources which
	 * were allocated in init_handler, the deinit_handler can be provided
	 */
	ftl_mngt_fn deinit_handler;

	/**
	 * The FTL process steps
	 *
+11 −0
Original line number Diff line number Diff line
@@ -1097,6 +1097,13 @@ test_call_init_child_init_hndlr(struct spdk_ftl_dev *dev,
	return init_ctx->init_handler_result;
}

static void
test_call_init_child_deinit_hndlr(struct spdk_ftl_dev *dev,
				  struct ftl_mngt_process *mngt)
{
	add_elem_to_test_list(1000);
}

static void
test_call_init_child_action(struct spdk_ftl_dev *dev, struct ftl_mngt_process *mngt)
{
@@ -1107,6 +1114,7 @@ test_call_init_child_action(struct spdk_ftl_dev *dev, struct ftl_mngt_process *m
static struct ftl_mngt_process_desc pdesc_test_call_init_child = {
	.name = "Test call init, child",
	.init_handler = test_call_init_child_init_hndlr,
	.deinit_handler = test_call_init_child_deinit_hndlr,
	.steps = {
		{
			.name = "Test call init, child step",
@@ -1149,6 +1157,9 @@ test_call_init_success(void)
	check_elem_on_list_and_remove(10);
	check_elem_on_list_and_remove(100);

	/* check if caller deinit handler ws invoked */
	check_elem_on_list_and_remove(1000);

	/* check if caller callback was invoked */
	check_elem_on_list_and_remove(CALLER_CB_RET_VALUE);