Spdk/lib/ftl/ftl_debug.c
Kozlowski Mateusz 88d1c3a69a FTL: Add debug function for dumping band information
Signed-off-by: Kozlowski Mateusz <mateusz.kozlowski@intel.com>
Signed-off-by: Artur Paszkiewicz <artur.paszkiewicz@intel.com>
Change-Id: I6edef1e8e822f8428dff5f5f5da2df923191f6fc
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/13328
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
2022-08-18 19:09:50 +00:00

66 lines
1.4 KiB
C

/* SPDX-License-Identifier: BSD-3-Clause
* Copyright (c) Intel Corporation.
* All rights reserved.
*/
#include "spdk/ftl.h"
#include "ftl_debug.h"
#include "ftl_band.h"
/* TODO: Switch to INFOLOG instead, we can control the printing via spdk_log_get_flag */
#if defined(DEBUG)
static const char *ftl_band_state_str[] = {
"free",
"prep",
"opening",
"open",
"full",
"closing",
"closed",
"max"
};
void
ftl_dev_dump_bands(struct spdk_ftl_dev *dev)
{
uint64_t i;
if (!dev->bands) {
return;
}
FTL_NOTICELOG(dev, "Bands validity:\n");
for (i = 0; i < ftl_get_num_bands(dev); ++i) {
FTL_NOTICELOG(dev, " Band %3zu: %8zu / %zu \twr_cnt: %"PRIu64
"\tstate: %s\n",
i + 1, dev->bands[i].p2l_map.num_valid,
ftl_band_user_blocks(&dev->bands[i]),
dev->bands[i].md->wr_cnt,
ftl_band_state_str[dev->bands[i].md->state]);
}
}
#endif /* defined(DEBUG) */
void
ftl_dev_dump_stats(const struct spdk_ftl_dev *dev)
{
uint64_t i, total = 0;
char uuid[SPDK_UUID_STRING_LEN];
if (!dev->bands) {
return;
}
/* Count the number of valid LBAs */
for (i = 0; i < ftl_get_num_bands(dev); ++i) {
total += dev->bands[i].p2l_map.num_valid;
}
spdk_uuid_fmt_lower(uuid, sizeof(uuid), &dev->conf.uuid);
FTL_NOTICELOG(dev, "\n");
FTL_NOTICELOG(dev, "device UUID: %s\n", uuid);
FTL_NOTICELOG(dev, "total valid LBAs: %zu\n", total);
}