xref: /spdk/lib/ftl/mngt/ftl_mngt_shutdown.c (revision 510f4c134a21b45ff3a5add9ebc6c6cf7e49aeab)
1 /*   SPDX-License-Identifier: BSD-3-Clause
2  *   Copyright (c) Intel Corporation.
3  *   All rights reserved.
4  */
5 
6 #include "ftl_core.h"
7 #include "ftl_mngt.h"
8 #include "ftl_mngt_steps.h"
9 
10 /*
11  * Steps executed during clean shutdown - includes persisting metadata and rolling
12  * back any setup steps executed during startup (closing bdevs, io channels, etc)
13  */
14 static const struct ftl_mngt_process_desc desc_shutdown = {
15 	.name = "FTL shutdown",
16 	.error_handler = ftl_mngt_rollback_device,
17 	.steps = {
18 		{
19 			.name = "Deinit core IO channel",
20 			.action = ftl_mngt_deinit_io_channel
21 		},
22 		{
23 			.name = "Unregister IO device",
24 			.action = ftl_mngt_unregister_io_device
25 		},
26 		{
27 			.name = "Stop core poller",
28 			.action = ftl_mngt_stop_core_poller
29 		},
30 		{
31 			.name = "Dump statistics",
32 			.action = ftl_mngt_dump_stats
33 		},
34 		{
35 			.name = "Deinitialize L2P",
36 			.action = ftl_mngt_deinit_l2p
37 		},
38 		{
39 			.name = "Rollback FTL device",
40 			.action = ftl_mngt_rollback_device
41 		},
42 		{}
43 	}
44 };
45 
46 int
47 ftl_mngt_call_dev_shutdown(struct spdk_ftl_dev *dev, ftl_mngt_completion cb, void *cb_cntx)
48 {
49 	return ftl_mngt_process_execute(dev, &desc_shutdown, cb, cb_cntx);
50 }
51