xref: /spdk/lib/ftl/mngt/ftl_mngt_l2p.c (revision 106ad3793f953d7353e5a5a1fa67fa6a82d13747)
1b16bdc6dSArtur Paszkiewicz /*   SPDX-License-Identifier: BSD-3-Clause
2a6dbe372Spaul luse  *   Copyright (C) 2022 Intel Corporation.
3b16bdc6dSArtur Paszkiewicz  *   All rights reserved.
4b16bdc6dSArtur Paszkiewicz  */
5b16bdc6dSArtur Paszkiewicz 
6b16bdc6dSArtur Paszkiewicz #include "spdk/thread.h"
7b16bdc6dSArtur Paszkiewicz 
8b16bdc6dSArtur Paszkiewicz #include "ftl_core.h"
9b16bdc6dSArtur Paszkiewicz #include "ftl_mngt.h"
10b16bdc6dSArtur Paszkiewicz #include "ftl_mngt_steps.h"
116448f336SArtur Paszkiewicz #include "ftl_band.h"
12b16bdc6dSArtur Paszkiewicz #include "ftl_l2p.h"
13b16bdc6dSArtur Paszkiewicz 
14b16bdc6dSArtur Paszkiewicz static void
l2p_cb(struct spdk_ftl_dev * dev,int status,void * ctx)15b16bdc6dSArtur Paszkiewicz l2p_cb(struct spdk_ftl_dev *dev, int status, void *ctx)
16b16bdc6dSArtur Paszkiewicz {
17b16bdc6dSArtur Paszkiewicz 	struct ftl_mngt_process *mngt = ctx;
18b16bdc6dSArtur Paszkiewicz 
19b16bdc6dSArtur Paszkiewicz 	if (status) {
20b16bdc6dSArtur Paszkiewicz 		ftl_mngt_fail_step(mngt);
21b16bdc6dSArtur Paszkiewicz 	} else {
22b16bdc6dSArtur Paszkiewicz 		ftl_mngt_next_step(mngt);
23b16bdc6dSArtur Paszkiewicz 	}
24b16bdc6dSArtur Paszkiewicz }
25b16bdc6dSArtur Paszkiewicz 
26b16bdc6dSArtur Paszkiewicz void
ftl_mngt_init_l2p(struct spdk_ftl_dev * dev,struct ftl_mngt_process * mngt)27b16bdc6dSArtur Paszkiewicz ftl_mngt_init_l2p(struct spdk_ftl_dev *dev, struct ftl_mngt_process *mngt)
28b16bdc6dSArtur Paszkiewicz {
29b16bdc6dSArtur Paszkiewicz 	if (ftl_l2p_init(dev)) {
30b16bdc6dSArtur Paszkiewicz 		ftl_mngt_fail_step(mngt);
31b16bdc6dSArtur Paszkiewicz 	} else {
32b16bdc6dSArtur Paszkiewicz 		ftl_mngt_next_step(mngt);
33b16bdc6dSArtur Paszkiewicz 	}
34b16bdc6dSArtur Paszkiewicz }
35b16bdc6dSArtur Paszkiewicz 
36b16bdc6dSArtur Paszkiewicz void
ftl_mngt_deinit_l2p(struct spdk_ftl_dev * dev,struct ftl_mngt_process * mngt)37b16bdc6dSArtur Paszkiewicz ftl_mngt_deinit_l2p(struct spdk_ftl_dev *dev, struct ftl_mngt_process *mngt)
38b16bdc6dSArtur Paszkiewicz {
39b16bdc6dSArtur Paszkiewicz 	ftl_l2p_deinit(dev);
40b16bdc6dSArtur Paszkiewicz 	ftl_mngt_next_step(mngt);
41b16bdc6dSArtur Paszkiewicz }
42b16bdc6dSArtur Paszkiewicz 
43b16bdc6dSArtur Paszkiewicz void
ftl_mngt_clear_l2p(struct spdk_ftl_dev * dev,struct ftl_mngt_process * mngt)44b16bdc6dSArtur Paszkiewicz ftl_mngt_clear_l2p(struct spdk_ftl_dev *dev, struct ftl_mngt_process *mngt)
45b16bdc6dSArtur Paszkiewicz {
46b16bdc6dSArtur Paszkiewicz 	ftl_l2p_clear(dev, l2p_cb, mngt);
47b16bdc6dSArtur Paszkiewicz }
48ef93cc38SKozlowski Mateusz 
49ef93cc38SKozlowski Mateusz void
ftl_mngt_persist_l2p(struct spdk_ftl_dev * dev,struct ftl_mngt_process * mngt)50ef93cc38SKozlowski Mateusz ftl_mngt_persist_l2p(struct spdk_ftl_dev *dev, struct ftl_mngt_process *mngt)
51ef93cc38SKozlowski Mateusz {
52ef93cc38SKozlowski Mateusz 	ftl_l2p_persist(dev, l2p_cb, mngt);
53ef93cc38SKozlowski Mateusz }
5455147295SKozlowski Mateusz 
5555147295SKozlowski Mateusz void
ftl_mngt_trim_l2p(struct spdk_ftl_dev * dev,struct ftl_mngt_process * mngt)56*106ad379SMateusz Kozlowski ftl_mngt_trim_l2p(struct spdk_ftl_dev *dev, struct ftl_mngt_process *mngt)
57b3e5d8a7SKozlowski Mateusz {
58*106ad379SMateusz Kozlowski 	ftl_l2p_trim(dev, l2p_cb, mngt);
59b3e5d8a7SKozlowski Mateusz }
60b3e5d8a7SKozlowski Mateusz 
61b3e5d8a7SKozlowski Mateusz void
ftl_mngt_restore_l2p(struct spdk_ftl_dev * dev,struct ftl_mngt_process * mngt)6255147295SKozlowski Mateusz ftl_mngt_restore_l2p(struct spdk_ftl_dev *dev, struct ftl_mngt_process *mngt)
6355147295SKozlowski Mateusz {
6455147295SKozlowski Mateusz 	ftl_l2p_restore(dev, l2p_cb, mngt);
6555147295SKozlowski Mateusz }
66