1 /* SPDX-License-Identifier: BSD-3-Clause
2 * Copyright (C) 2022 Intel Corporation.
3 * All rights reserved.
4 */
5
6 #include "spdk/thread.h"
7
8 #include "ftl_core.h"
9 #include "ftl_mngt.h"
10 #include "ftl_mngt_steps.h"
11 #include "ftl_band.h"
12 #include "ftl_l2p.h"
13
14 static void
l2p_cb(struct spdk_ftl_dev * dev,int status,void * ctx)15 l2p_cb(struct spdk_ftl_dev *dev, int status, void *ctx)
16 {
17 struct ftl_mngt_process *mngt = ctx;
18
19 if (status) {
20 ftl_mngt_fail_step(mngt);
21 } else {
22 ftl_mngt_next_step(mngt);
23 }
24 }
25
26 void
ftl_mngt_init_l2p(struct spdk_ftl_dev * dev,struct ftl_mngt_process * mngt)27 ftl_mngt_init_l2p(struct spdk_ftl_dev *dev, struct ftl_mngt_process *mngt)
28 {
29 if (ftl_l2p_init(dev)) {
30 ftl_mngt_fail_step(mngt);
31 } else {
32 ftl_mngt_next_step(mngt);
33 }
34 }
35
36 void
ftl_mngt_deinit_l2p(struct spdk_ftl_dev * dev,struct ftl_mngt_process * mngt)37 ftl_mngt_deinit_l2p(struct spdk_ftl_dev *dev, struct ftl_mngt_process *mngt)
38 {
39 ftl_l2p_deinit(dev);
40 ftl_mngt_next_step(mngt);
41 }
42
43 void
ftl_mngt_clear_l2p(struct spdk_ftl_dev * dev,struct ftl_mngt_process * mngt)44 ftl_mngt_clear_l2p(struct spdk_ftl_dev *dev, struct ftl_mngt_process *mngt)
45 {
46 ftl_l2p_clear(dev, l2p_cb, mngt);
47 }
48
49 void
ftl_mngt_persist_l2p(struct spdk_ftl_dev * dev,struct ftl_mngt_process * mngt)50 ftl_mngt_persist_l2p(struct spdk_ftl_dev *dev, struct ftl_mngt_process *mngt)
51 {
52 ftl_l2p_persist(dev, l2p_cb, mngt);
53 }
54
55 void
ftl_mngt_trim_l2p(struct spdk_ftl_dev * dev,struct ftl_mngt_process * mngt)56 ftl_mngt_trim_l2p(struct spdk_ftl_dev *dev, struct ftl_mngt_process *mngt)
57 {
58 ftl_l2p_trim(dev, l2p_cb, mngt);
59 }
60
61 void
ftl_mngt_restore_l2p(struct spdk_ftl_dev * dev,struct ftl_mngt_process * mngt)62 ftl_mngt_restore_l2p(struct spdk_ftl_dev *dev, struct ftl_mngt_process *mngt)
63 {
64 ftl_l2p_restore(dev, l2p_cb, mngt);
65 }
66