2022-07-07 17:53:08 +00:00
|
|
|
/* SPDX-License-Identifier: BSD-3-Clause
|
2022-11-01 20:26:26 +00:00
|
|
|
* Copyright (C) 2022 Intel Corporation.
|
2022-07-07 17:53:08 +00:00
|
|
|
* All rights reserved.
|
|
|
|
*/
|
|
|
|
|
|
|
|
#include "spdk/thread.h"
|
|
|
|
|
|
|
|
#include "ftl_core.h"
|
|
|
|
#include "ftl_mngt.h"
|
|
|
|
#include "ftl_mngt_steps.h"
|
2022-06-21 13:05:28 +00:00
|
|
|
#include "ftl_band.h"
|
2022-07-07 17:53:08 +00:00
|
|
|
#include "ftl_l2p.h"
|
|
|
|
|
|
|
|
static void
|
|
|
|
l2p_cb(struct spdk_ftl_dev *dev, int status, void *ctx)
|
|
|
|
{
|
|
|
|
struct ftl_mngt_process *mngt = ctx;
|
|
|
|
|
|
|
|
if (status) {
|
|
|
|
ftl_mngt_fail_step(mngt);
|
|
|
|
} else {
|
|
|
|
ftl_mngt_next_step(mngt);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
void
|
|
|
|
ftl_mngt_init_l2p(struct spdk_ftl_dev *dev, struct ftl_mngt_process *mngt)
|
|
|
|
{
|
|
|
|
if (ftl_l2p_init(dev)) {
|
|
|
|
ftl_mngt_fail_step(mngt);
|
|
|
|
} else {
|
|
|
|
ftl_mngt_next_step(mngt);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
void
|
|
|
|
ftl_mngt_deinit_l2p(struct spdk_ftl_dev *dev, struct ftl_mngt_process *mngt)
|
|
|
|
{
|
|
|
|
ftl_l2p_deinit(dev);
|
|
|
|
ftl_mngt_next_step(mngt);
|
|
|
|
}
|
|
|
|
|
|
|
|
void
|
|
|
|
ftl_mngt_clear_l2p(struct spdk_ftl_dev *dev, struct ftl_mngt_process *mngt)
|
|
|
|
{
|
|
|
|
ftl_l2p_clear(dev, l2p_cb, mngt);
|
|
|
|
}
|
2022-06-01 09:19:04 +00:00
|
|
|
|
|
|
|
void
|
|
|
|
ftl_mngt_persist_l2p(struct spdk_ftl_dev *dev, struct ftl_mngt_process *mngt)
|
|
|
|
{
|
|
|
|
ftl_l2p_persist(dev, l2p_cb, mngt);
|
|
|
|
}
|
2022-05-31 11:58:00 +00:00
|
|
|
|
2022-05-27 11:46:59 +00:00
|
|
|
void
|
|
|
|
ftl_mngt_unmap_l2p(struct spdk_ftl_dev *dev, struct ftl_mngt_process *mngt)
|
|
|
|
{
|
|
|
|
ftl_l2p_unmap(dev, l2p_cb, mngt);
|
|
|
|
}
|
|
|
|
|
2022-05-31 11:58:00 +00:00
|
|
|
void
|
|
|
|
ftl_mngt_restore_l2p(struct spdk_ftl_dev *dev, struct ftl_mngt_process *mngt)
|
|
|
|
{
|
|
|
|
ftl_l2p_restore(dev, l2p_cb, mngt);
|
|
|
|
}
|