lib/ftl: helper function to check for nv_cache

Added ftl_dev_has_nv_cache to check if the FTL is configured to use
non-volatile cache or not. It makes these checks a bit more readable.

Change-Id: I0140df184d89a675e40bd5056718cd64301c553e
Signed-off-by: Konrad Sztyber <konrad.sztyber@intel.com>
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/459617
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-by: Wojciech Malikowski <wojciech.malikowski@intel.com>
Reviewed-by: Darek Stojaczyk <dariusz.stojaczyk@intel.com>
Reviewed-by: Mateusz Kozlowski <mateusz.kozlowski@intel.com>
This commit is contained in:
Konrad Sztyber 2019-06-19 11:04:46 +02:00 committed by Ben Walker
parent 83af29b4eb
commit 0f7080e779
3 changed files with 11 additions and 5 deletions

View File

@ -218,7 +218,7 @@ ftl_md_write_cb(struct ftl_io *io, void *arg, int status)
ftl_band_set_next_state(band);
if (band->state == FTL_BAND_STATE_CLOSED) {
if (nv_cache->bdev_desc) {
if (ftl_dev_has_nv_cache(dev)) {
pthread_spin_lock(&nv_cache->lock);
nv_cache->num_available += ftl_band_user_lbks(band);
@ -1653,7 +1653,7 @@ ftl_rwb_fill(struct ftl_io *io)
}
if (ftl_io_done(io)) {
if (dev->nv_cache.bdev_desc && !(io->flags & FTL_IO_BYPASS_CACHE)) {
if (ftl_dev_has_nv_cache(dev) && !(io->flags & FTL_IO_BYPASS_CACHE)) {
ftl_write_nv_cache(io);
} else {
ftl_io_complete(io);

View File

@ -491,6 +491,12 @@ ftl_vld_map_size(const struct spdk_ftl_dev *dev)
return (size_t)spdk_divide_round_up(ftl_num_band_lbks(dev), CHAR_BIT);
}
static inline bool
ftl_dev_has_nv_cache(const struct spdk_ftl_dev *dev)
{
return dev->nv_cache.bdev_desc != NULL;
}
#define FTL_NV_CACHE_HEADER_VERSION (1)
#define FTL_NV_CACHE_DATA_OFFSET (1)
#define FTL_NV_CACHE_PHASE_OFFSET (62)

View File

@ -955,7 +955,7 @@ ftl_setup_initial_state(struct spdk_ftl_dev *dev)
return -1;
}
if (!nv_cache->bdev_desc) {
if (!ftl_dev_has_nv_cache(dev)) {
ftl_init_complete(dev);
} else {
ioch = spdk_io_channel_get_ctx(dev->ioch);
@ -1001,7 +1001,7 @@ ftl_restore_device_cb(struct spdk_ftl_dev *dev, struct ftl_restore *restore, int
return;
}
if (!dev->nv_cache.bdev_desc) {
if (!ftl_dev_has_nv_cache(dev)) {
ftl_init_complete(dev);
return;
}
@ -1067,7 +1067,7 @@ ftl_io_channel_create_cb(void *io_device, void *ctx)
return -1;
}
if (dev->nv_cache.bdev_desc) {
if (ftl_dev_has_nv_cache(dev)) {
ioch->cache_ioch = spdk_bdev_get_io_channel(dev->nv_cache.bdev_desc);
if (!ioch->cache_ioch) {
SPDK_ERRLOG("Failed to create cache IO channel\n");