LCOV - code coverage report
Current view: top level - lib/ftl/mngt - ftl_mngt_shutdown.c (source / functions) Hit Total Coverage
Test: ut_cov_unit.info Lines: 0 5 0.0 %
Date: 2024-07-15 18:05:22 Functions: 0 1 0.0 %

          Line data    Source code
       1             : /*   SPDX-License-Identifier: BSD-3-Clause
       2             :  *   Copyright (C) 2022 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 = "Persist L2P",
      32             :                         .action = ftl_mngt_persist_l2p
      33             :                 },
      34             :                 {
      35             :                         .name = "Finish L2P trims",
      36             :                         .action = ftl_mngt_trim_l2p,
      37             :                 },
      38             :                 {
      39             :                         .name = "Persist metadata",
      40             :                         .action = ftl_mngt_persist_md
      41             :                 },
      42             :                 {
      43             :                         .name = "Set FTL clean state",
      44             :                         .action = ftl_mngt_set_clean
      45             :                 },
      46             :                 {
      47             :                         .name = "Dump statistics",
      48             :                         .action = ftl_mngt_dump_stats
      49             :                 },
      50             :                 {
      51             :                         .name = "Deinitialize L2P",
      52             :                         .action = ftl_mngt_deinit_l2p
      53             :                 },
      54             :                 {
      55             :                         .name = "Deinitialize P2L checkpointing",
      56             :                         .action = ftl_mngt_p2l_deinit_ckpt
      57             :                 },
      58             :                 {
      59             :                         .name = "Rollback FTL device",
      60             :                         .action = ftl_mngt_rollback_device
      61             :                 },
      62             :                 {}
      63             :         }
      64             : };
      65             : 
      66             : /*
      67             :  * Steps executed during fast clean shutdown (shutting down to shared memory). Utilizes
      68             :  * minimum amount of metadata persistence and rolls back any setup steps executed during
      69             :  * startup (closing bdevs, io channels, etc)
      70             :  */
      71             : static const struct ftl_mngt_process_desc desc_fast_shutdown = {
      72             :         .name = "FTL fast shutdown",
      73             :         .steps = {
      74             :                 {
      75             :                         .name = "Deinit core IO channel",
      76             :                         .action = ftl_mngt_deinit_io_channel
      77             :                 },
      78             :                 {
      79             :                         .name = "Unregister IO device",
      80             :                         .action = ftl_mngt_unregister_io_device
      81             :                 },
      82             :                 {
      83             :                         .name = "Stop core poller",
      84             :                         .action = ftl_mngt_stop_core_poller
      85             :                 },
      86             :                 {
      87             :                         .name = "Fast persist metadata",
      88             :                         .action = ftl_mngt_fast_persist_md
      89             :                 },
      90             :                 {
      91             :                         .name = "Set FTL SHM clean state",
      92             :                         .action = ftl_mngt_set_shm_clean
      93             :                 },
      94             :                 {
      95             :                         .name = "Dump statistics",
      96             :                         .action = ftl_mngt_dump_stats
      97             :                 },
      98             :                 {
      99             :                         .name = "Deinitialize L2P",
     100             :                         .action = ftl_mngt_deinit_l2p
     101             :                 },
     102             :                 {
     103             :                         .name = "Deinitialize P2L checkpointing",
     104             :                         .action = ftl_mngt_p2l_deinit_ckpt
     105             :                 },
     106             :                 {
     107             :                         .name = "Rollback FTL device",
     108             :                         .action = ftl_mngt_rollback_device
     109             :                 },
     110             :                 {}
     111             :         }
     112             : };
     113             : 
     114             : int
     115           0 : ftl_mngt_call_dev_shutdown(struct spdk_ftl_dev *dev, ftl_mngt_completion cb, void *cb_cntx)
     116             : {
     117             :         const struct ftl_mngt_process_desc *pdesc;
     118             : 
     119           0 :         if (dev->conf.fast_shutdown) {
     120           0 :                 pdesc = &desc_fast_shutdown;
     121             :         } else {
     122           0 :                 pdesc = &desc_shutdown;
     123             :         }
     124           0 :         return ftl_mngt_process_execute(dev, pdesc, cb, cb_cntx);
     125             : }

Generated by: LCOV version 1.15