Commit 0f7080e7 authored by Konrad Sztyber's avatar Konrad Sztyber Committed by Ben Walker
Browse files

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: default avatarKonrad Sztyber <konrad.sztyber@intel.com>
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/459617


Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: default avatarBen Walker <benjamin.walker@intel.com>
Reviewed-by: default avatarWojciech Malikowski <wojciech.malikowski@intel.com>
Reviewed-by: default avatarDarek Stojaczyk <dariusz.stojaczyk@intel.com>
Reviewed-by: default avatarMateusz Kozlowski <mateusz.kozlowski@intel.com>
parent 83af29b4
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -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);
+6 −0
Original line number Diff line number Diff line
@@ -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)
+3 −3
Original line number Diff line number Diff line
@@ -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");