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