ftl: Add helper functions for creating md regions
Helper functions which determine which md regions will be stored in shm. Signed-off-by: Kozlowski Mateusz <mateusz.kozlowski@intel.com> Change-Id: I94cbfca66dfb56457a350874dbd1de63a2e07661 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/14159 Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Ben Walker <benjamin.walker@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com>
This commit is contained in:
parent
101a039923
commit
811a027e43
@ -62,9 +62,8 @@ ftl_mngt_init_md(struct spdk_ftl_dev *dev, struct ftl_mngt_process *mngt)
|
||||
*/
|
||||
continue;
|
||||
}
|
||||
md_flags = is_buffer_needed(i) ?
|
||||
FTL_MD_CREATE_SHM | FTL_MD_CREATE_SHM_NEW :
|
||||
FTL_MD_CREATE_NO_MEM;
|
||||
md_flags = is_buffer_needed(i) ? ftl_md_create_region_flags(dev,
|
||||
region->type) : FTL_MD_CREATE_NO_MEM;
|
||||
layout->md[i] = ftl_md_create(dev, region->current.blocks, region->vss_blksz, region->name,
|
||||
md_flags, region);
|
||||
if (NULL == layout->md[i]) {
|
||||
|
@ -30,7 +30,7 @@ init_p2l_map_pool(struct spdk_ftl_dev *dev)
|
||||
void *p2l_pool_buf;
|
||||
|
||||
dev->p2l_pool_md = ftl_md_create(dev, p2l_pool_buf_blks, 0, "p2l_pool",
|
||||
FTL_MD_CREATE_SHM | FTL_MD_CREATE_SHM_NEW, NULL);
|
||||
ftl_md_create_shm_flags(dev), NULL);
|
||||
if (!dev->p2l_pool_md) {
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
@ -1100,3 +1100,34 @@ ftl_md_set_region(struct ftl_md *md,
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int
|
||||
ftl_md_create_region_flags(struct spdk_ftl_dev *dev, int region_type)
|
||||
{
|
||||
int flags = FTL_MD_CREATE_SHM;
|
||||
|
||||
switch (region_type) {
|
||||
case FTL_LAYOUT_REGION_TYPE_SB:
|
||||
if (dev->conf.mode & SPDK_FTL_MODE_CREATE) {
|
||||
flags |= FTL_MD_CREATE_SHM_NEW;
|
||||
}
|
||||
break;
|
||||
|
||||
case FTL_LAYOUT_REGION_TYPE_BAND_MD:
|
||||
case FTL_LAYOUT_REGION_TYPE_NVC_MD:
|
||||
flags |= FTL_MD_CREATE_SHM_NEW;
|
||||
break;
|
||||
default:
|
||||
return FTL_MD_CREATE_HEAP;
|
||||
}
|
||||
|
||||
return flags;
|
||||
}
|
||||
|
||||
int
|
||||
ftl_md_create_shm_flags(struct spdk_ftl_dev *dev)
|
||||
{
|
||||
int flags = FTL_MD_CREATE_SHM | FTL_MD_CREATE_SHM_NEW;
|
||||
|
||||
return flags;
|
||||
}
|
||||
|
@ -321,4 +321,31 @@ void ftl_md_clear(struct ftl_md *md, int pattern, union ftl_md_vss *vss_pattern)
|
||||
*/
|
||||
uint64_t ftl_md_xfer_blocks(struct spdk_ftl_dev *dev);
|
||||
|
||||
/**
|
||||
* @brief Return the md creation flags for a given md region type
|
||||
*
|
||||
* Controls MD regions backed up on SHM via FTL_MD_CREATE_SHM.
|
||||
* FTL_MD_CREATE_SHM_NEW is added for:
|
||||
* 1. superblock upon SPDK_FTL_MODE_CREATE flag set,
|
||||
* 2. other regions if not in a fast startup mode.
|
||||
*
|
||||
* @param dev The FTL device
|
||||
* @param region_type MD region type
|
||||
*
|
||||
* @return MD creation flags
|
||||
*/
|
||||
int ftl_md_create_region_flags(struct spdk_ftl_dev *dev, int region_type);
|
||||
|
||||
/**
|
||||
* @brief Return the SHM-backed md creation flags
|
||||
*
|
||||
* FTL_MD_CREATE_SHM is always set.
|
||||
* FTL_MD_CREATE_SHM_NEW is added if not in a fast startup mode.
|
||||
*
|
||||
* @param dev The FTL device
|
||||
*
|
||||
* @return MD creation flags
|
||||
*/
|
||||
int ftl_md_create_shm_flags(struct spdk_ftl_dev *dev);
|
||||
|
||||
#endif /* FTL_MD_H */
|
||||
|
Loading…
Reference in New Issue
Block a user