lib/ftl: Rename ftl_dev_num_punits() to ftl_get_num_punits()
This patch is part of name refactoring associated with moving FTL to work with zone bdev API. Change-Id: I9e0a569e9dfd0e8b8236c0840ce10b92362c4996 Signed-off-by: Wojciech Malikowski <wojciech.malikowski@intel.com> Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/479844 Reviewed-by: Konrad Sztyber <konrad.sztyber@intel.com> Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com> Reviewed-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com> Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Community-CI: Broadcom SPDK FC-NVMe CI <spdk-ci.pdl@broadcom.com>
This commit is contained in:
parent
3ff9d6e45b
commit
2c2a005695
@ -518,7 +518,7 @@ ftl_band_from_addr(struct spdk_ftl_dev *dev, struct ftl_addr addr)
|
|||||||
struct ftl_zone *
|
struct ftl_zone *
|
||||||
ftl_band_zone_from_addr(struct ftl_band *band, struct ftl_addr addr)
|
ftl_band_zone_from_addr(struct ftl_band *band, struct ftl_addr addr)
|
||||||
{
|
{
|
||||||
assert(addr.pu < ftl_dev_num_punits(band->dev));
|
assert(addr.pu < ftl_get_num_punits(band->dev));
|
||||||
return &band->zone_buf[addr.pu];
|
return &band->zone_buf[addr.pu];
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -526,7 +526,7 @@ uint64_t
|
|||||||
ftl_band_lbkoff_from_addr(struct ftl_band *band, struct ftl_addr addr)
|
ftl_band_lbkoff_from_addr(struct ftl_band *band, struct ftl_addr addr)
|
||||||
{
|
{
|
||||||
assert(addr.zone_id == band->id);
|
assert(addr.zone_id == band->id);
|
||||||
assert(addr.pu < ftl_dev_num_punits(band->dev));
|
assert(addr.pu < ftl_get_num_punits(band->dev));
|
||||||
return addr.pu * ftl_get_num_blocks_in_zone(band->dev) + addr.offset;
|
return addr.pu * ftl_get_num_blocks_in_zone(band->dev) + addr.offset;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -463,7 +463,7 @@ ftl_get_num_blocks_in_zone(const struct spdk_ftl_dev *dev)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static inline size_t
|
static inline size_t
|
||||||
ftl_dev_num_punits(const struct spdk_ftl_dev *dev)
|
ftl_get_num_punits(const struct spdk_ftl_dev *dev)
|
||||||
{
|
{
|
||||||
return dev->geo.num_pu * dev->geo.num_grp;
|
return dev->geo.num_pu * dev->geo.num_grp;
|
||||||
}
|
}
|
||||||
@ -471,7 +471,7 @@ ftl_dev_num_punits(const struct spdk_ftl_dev *dev)
|
|||||||
static inline uint64_t
|
static inline uint64_t
|
||||||
ftl_get_num_blocks_in_band(const struct spdk_ftl_dev *dev)
|
ftl_get_num_blocks_in_band(const struct spdk_ftl_dev *dev)
|
||||||
{
|
{
|
||||||
return ftl_dev_num_punits(dev) * ftl_get_num_blocks_in_zone(dev);
|
return ftl_get_num_punits(dev) * ftl_get_num_blocks_in_zone(dev);
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline size_t
|
static inline size_t
|
||||||
|
@ -298,7 +298,7 @@ ftl_dev_init_bands(struct spdk_ftl_dev *dev)
|
|||||||
pband = band;
|
pband = band;
|
||||||
|
|
||||||
CIRCLEQ_INIT(&band->zones);
|
CIRCLEQ_INIT(&band->zones);
|
||||||
band->zone_buf = calloc(ftl_dev_num_punits(dev), sizeof(*band->zone_buf));
|
band->zone_buf = calloc(ftl_get_num_punits(dev), sizeof(*band->zone_buf));
|
||||||
if (!band->zone_buf) {
|
if (!band->zone_buf) {
|
||||||
SPDK_ERRLOG("Failed to allocate block state table for band: [%u]\n", i);
|
SPDK_ERRLOG("Failed to allocate block state table for band: [%u]\n", i);
|
||||||
rc = -1;
|
rc = -1;
|
||||||
@ -318,7 +318,7 @@ ftl_dev_init_bands(struct spdk_ftl_dev *dev)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (i = 0; i < ftl_dev_num_punits(dev); ++i) {
|
for (i = 0; i < ftl_get_num_punits(dev); ++i) {
|
||||||
rc = ftl_retrieve_punit_chunk_info(dev, i, info);
|
rc = ftl_retrieve_punit_chunk_info(dev, i, info);
|
||||||
if (rc) {
|
if (rc) {
|
||||||
goto out;
|
goto out;
|
||||||
@ -1075,7 +1075,7 @@ spdk_ftl_dev_init(const struct spdk_ftl_dev_init_opts *_opts, spdk_ftl_init_fn c
|
|||||||
goto fail_sync;
|
goto fail_sync;
|
||||||
}
|
}
|
||||||
|
|
||||||
dev->rwb = ftl_rwb_init(&dev->conf, dev->geo.ws_opt, dev->md_size, ftl_dev_num_punits(dev));
|
dev->rwb = ftl_rwb_init(&dev->conf, dev->geo.ws_opt, dev->md_size, ftl_get_num_punits(dev));
|
||||||
if (!dev->rwb) {
|
if (!dev->rwb) {
|
||||||
SPDK_ERRLOG("Unable to initialize rwb structures\n");
|
SPDK_ERRLOG("Unable to initialize rwb structures\n");
|
||||||
goto fail_sync;
|
goto fail_sync;
|
||||||
|
@ -298,7 +298,7 @@ ftl_reloc_read_cb(struct ftl_io *io, void *arg, int status)
|
|||||||
static void
|
static void
|
||||||
ftl_reloc_iter_reset(struct ftl_band_reloc *breloc)
|
ftl_reloc_iter_reset(struct ftl_band_reloc *breloc)
|
||||||
{
|
{
|
||||||
memset(breloc->iter.zone_offset, 0, ftl_dev_num_punits(breloc->band->dev) *
|
memset(breloc->iter.zone_offset, 0, ftl_get_num_punits(breloc->band->dev) *
|
||||||
sizeof(*breloc->iter.zone_offset));
|
sizeof(*breloc->iter.zone_offset));
|
||||||
breloc->iter.zone_current = 0;
|
breloc->iter.zone_current = 0;
|
||||||
}
|
}
|
||||||
@ -314,7 +314,7 @@ ftl_reloc_iter_lbkoff(struct ftl_band_reloc *breloc)
|
|||||||
static void
|
static void
|
||||||
ftl_reloc_iter_next_zone(struct ftl_band_reloc *breloc)
|
ftl_reloc_iter_next_zone(struct ftl_band_reloc *breloc)
|
||||||
{
|
{
|
||||||
size_t num_zones = ftl_dev_num_punits(breloc->band->dev);
|
size_t num_zones = ftl_get_num_punits(breloc->band->dev);
|
||||||
|
|
||||||
breloc->iter.zone_current = (breloc->iter.zone_current + 1) % num_zones;
|
breloc->iter.zone_current = (breloc->iter.zone_current + 1) % num_zones;
|
||||||
}
|
}
|
||||||
@ -368,7 +368,7 @@ static int
|
|||||||
ftl_reloc_iter_done(struct ftl_band_reloc *breloc)
|
ftl_reloc_iter_done(struct ftl_band_reloc *breloc)
|
||||||
{
|
{
|
||||||
size_t i;
|
size_t i;
|
||||||
size_t num_zones = ftl_dev_num_punits(breloc->band->dev);
|
size_t num_zones = ftl_get_num_punits(breloc->band->dev);
|
||||||
size_t num_lbks = ftl_get_num_blocks_in_zone(breloc->parent->dev);
|
size_t num_lbks = ftl_get_num_blocks_in_zone(breloc->parent->dev);
|
||||||
|
|
||||||
for (i = 0; i < num_zones; ++i) {
|
for (i = 0; i < num_zones; ++i) {
|
||||||
@ -407,7 +407,7 @@ ftl_reloc_next_lbks(struct ftl_band_reloc *breloc, struct ftl_addr *addr)
|
|||||||
size_t i, lbk_cnt = 0;
|
size_t i, lbk_cnt = 0;
|
||||||
struct spdk_ftl_dev *dev = breloc->parent->dev;
|
struct spdk_ftl_dev *dev = breloc->parent->dev;
|
||||||
|
|
||||||
for (i = 0; i < ftl_dev_num_punits(dev); ++i) {
|
for (i = 0; i < ftl_get_num_punits(dev); ++i) {
|
||||||
lbk_cnt = ftl_reloc_find_valid_lbks(breloc, breloc->parent->xfer_size, addr);
|
lbk_cnt = ftl_reloc_find_valid_lbks(breloc, breloc->parent->xfer_size, addr);
|
||||||
ftl_reloc_iter_next_zone(breloc);
|
ftl_reloc_iter_next_zone(breloc);
|
||||||
|
|
||||||
@ -617,7 +617,7 @@ ftl_band_reloc_init(struct ftl_reloc *reloc, struct ftl_band_reloc *breloc,
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
breloc->iter.zone_offset = calloc(ftl_dev_num_punits(band->dev),
|
breloc->iter.zone_offset = calloc(ftl_get_num_punits(band->dev),
|
||||||
sizeof(*breloc->iter.zone_offset));
|
sizeof(*breloc->iter.zone_offset));
|
||||||
if (!breloc->iter.zone_offset) {
|
if (!breloc->iter.zone_offset) {
|
||||||
SPDK_ERRLOG("Failed to initialize reloc iterator");
|
SPDK_ERRLOG("Failed to initialize reloc iterator");
|
||||||
|
@ -89,13 +89,13 @@ test_init_ftl_band(struct spdk_ftl_dev *dev, size_t id)
|
|||||||
band->lba_map.vld = spdk_bit_array_create(ftl_get_num_blocks_in_band(dev));
|
band->lba_map.vld = spdk_bit_array_create(ftl_get_num_blocks_in_band(dev));
|
||||||
SPDK_CU_ASSERT_FATAL(band->lba_map.vld != NULL);
|
SPDK_CU_ASSERT_FATAL(band->lba_map.vld != NULL);
|
||||||
|
|
||||||
band->zone_buf = calloc(ftl_dev_num_punits(dev), sizeof(*band->zone_buf));
|
band->zone_buf = calloc(ftl_get_num_punits(dev), sizeof(*band->zone_buf));
|
||||||
SPDK_CU_ASSERT_FATAL(band->zone_buf != NULL);
|
SPDK_CU_ASSERT_FATAL(band->zone_buf != NULL);
|
||||||
|
|
||||||
band->reloc_bitmap = spdk_bit_array_create(ftl_dev_num_bands(dev));
|
band->reloc_bitmap = spdk_bit_array_create(ftl_dev_num_bands(dev));
|
||||||
SPDK_CU_ASSERT_FATAL(band->reloc_bitmap != NULL);
|
SPDK_CU_ASSERT_FATAL(band->reloc_bitmap != NULL);
|
||||||
|
|
||||||
for (size_t i = 0; i < ftl_dev_num_punits(dev); ++i) {
|
for (size_t i = 0; i < ftl_get_num_punits(dev); ++i) {
|
||||||
zone = &band->zone_buf[i];
|
zone = &band->zone_buf[i];
|
||||||
zone->state = SPDK_BDEV_ZONE_STATE_CLOSED;
|
zone->state = SPDK_BDEV_ZONE_STATE_CLOSED;
|
||||||
zone->start_addr.pu = i;
|
zone->start_addr.pu = i;
|
||||||
|
@ -89,7 +89,7 @@ test_band_lbkoff_from_addr_base(void)
|
|||||||
uint64_t offset, i, flat_lun = 0;
|
uint64_t offset, i, flat_lun = 0;
|
||||||
|
|
||||||
setup_band();
|
setup_band();
|
||||||
for (i = 0; i < ftl_dev_num_punits(g_dev); ++i) {
|
for (i = 0; i < ftl_get_num_punits(g_dev); ++i) {
|
||||||
addr = addr_from_punit(i);
|
addr = addr_from_punit(i);
|
||||||
addr.zone_id = TEST_BAND_IDX;
|
addr.zone_id = TEST_BAND_IDX;
|
||||||
|
|
||||||
@ -107,7 +107,7 @@ test_band_lbkoff_from_addr_offset(void)
|
|||||||
uint64_t offset, expect, i, j;
|
uint64_t offset, expect, i, j;
|
||||||
|
|
||||||
setup_band();
|
setup_band();
|
||||||
for (i = 0; i < ftl_dev_num_punits(g_dev); ++i) {
|
for (i = 0; i < ftl_get_num_punits(g_dev); ++i) {
|
||||||
for (j = 0; j < g_geo.clba; ++j) {
|
for (j = 0; j < g_geo.clba; ++j) {
|
||||||
addr = addr_from_punit(i);
|
addr = addr_from_punit(i);
|
||||||
addr.zone_id = TEST_BAND_IDX;
|
addr.zone_id = TEST_BAND_IDX;
|
||||||
@ -129,7 +129,7 @@ test_band_addr_from_lbkoff(void)
|
|||||||
uint64_t offset, i, j;
|
uint64_t offset, i, j;
|
||||||
|
|
||||||
setup_band();
|
setup_band();
|
||||||
for (i = 0; i < ftl_dev_num_punits(g_dev); ++i) {
|
for (i = 0; i < ftl_get_num_punits(g_dev); ++i) {
|
||||||
for (j = 0; j < g_geo.clba; ++j) {
|
for (j = 0; j < g_geo.clba; ++j) {
|
||||||
expect = addr_from_punit(i);
|
expect = addr_from_punit(i);
|
||||||
expect.zone_id = TEST_BAND_IDX;
|
expect.zone_id = TEST_BAND_IDX;
|
||||||
@ -245,7 +245,7 @@ test_next_xfer_addr(void)
|
|||||||
expect = addr_from_punit(0);
|
expect = addr_from_punit(0);
|
||||||
expect.zone_id = TEST_BAND_IDX;
|
expect.zone_id = TEST_BAND_IDX;
|
||||||
expect.offset = g_dev->xfer_size;
|
expect.offset = g_dev->xfer_size;
|
||||||
addr = addr_from_punit(ftl_dev_num_punits(g_dev) - 1);
|
addr = addr_from_punit(ftl_get_num_punits(g_dev) - 1);
|
||||||
addr.zone_id = TEST_BAND_IDX;
|
addr.zone_id = TEST_BAND_IDX;
|
||||||
result = ftl_band_next_xfer_addr(g_band, addr, g_dev->xfer_size);
|
result = ftl_band_next_xfer_addr(g_band, addr, g_dev->xfer_size);
|
||||||
CU_ASSERT_EQUAL(result.addr, expect.addr);
|
CU_ASSERT_EQUAL(result.addr, expect.addr);
|
||||||
@ -254,7 +254,7 @@ test_next_xfer_addr(void)
|
|||||||
expect = addr_from_punit(0);
|
expect = addr_from_punit(0);
|
||||||
expect.zone_id = TEST_BAND_IDX;
|
expect.zone_id = TEST_BAND_IDX;
|
||||||
expect.offset = g_dev->xfer_size + 2;
|
expect.offset = g_dev->xfer_size + 2;
|
||||||
addr = addr_from_punit(ftl_dev_num_punits(g_dev) - 1);
|
addr = addr_from_punit(ftl_get_num_punits(g_dev) - 1);
|
||||||
addr.zone_id = TEST_BAND_IDX;
|
addr.zone_id = TEST_BAND_IDX;
|
||||||
result = ftl_band_next_xfer_addr(g_band, addr, g_dev->xfer_size + 2);
|
result = ftl_band_next_xfer_addr(g_band, addr, g_dev->xfer_size + 2);
|
||||||
CU_ASSERT_EQUAL(result.addr, expect.addr);
|
CU_ASSERT_EQUAL(result.addr, expect.addr);
|
||||||
@ -267,7 +267,7 @@ test_next_xfer_addr(void)
|
|||||||
addr.zone_id = TEST_BAND_IDX;
|
addr.zone_id = TEST_BAND_IDX;
|
||||||
addr.offset = g_dev->xfer_size * 2 + 1;
|
addr.offset = g_dev->xfer_size * 2 + 1;
|
||||||
result = ftl_band_next_xfer_addr(g_band, addr, 3 * g_dev->xfer_size *
|
result = ftl_band_next_xfer_addr(g_band, addr, 3 * g_dev->xfer_size *
|
||||||
ftl_dev_num_punits(g_dev) + 3);
|
ftl_get_num_punits(g_dev) + 3);
|
||||||
CU_ASSERT_EQUAL(result.addr, expect.addr);
|
CU_ASSERT_EQUAL(result.addr, expect.addr);
|
||||||
|
|
||||||
/* Remove one zone and verify it's skipped properly */
|
/* Remove one zone and verify it's skipped properly */
|
||||||
@ -281,7 +281,7 @@ test_next_xfer_addr(void)
|
|||||||
addr.zone_id = TEST_BAND_IDX;
|
addr.zone_id = TEST_BAND_IDX;
|
||||||
addr.offset = g_dev->xfer_size * 2 + 1;
|
addr.offset = g_dev->xfer_size * 2 + 1;
|
||||||
result = ftl_band_next_xfer_addr(g_band, addr, 3 * g_dev->xfer_size *
|
result = ftl_band_next_xfer_addr(g_band, addr, 3 * g_dev->xfer_size *
|
||||||
(ftl_dev_num_punits(g_dev) - 1) + g_dev->xfer_size + 3);
|
(ftl_get_num_punits(g_dev) - 1) + g_dev->xfer_size + 3);
|
||||||
CU_ASSERT_EQUAL(result.addr, expect.addr);
|
CU_ASSERT_EQUAL(result.addr, expect.addr);
|
||||||
cleanup_band();
|
cleanup_band();
|
||||||
}
|
}
|
||||||
|
@ -276,7 +276,7 @@ test_reloc_iter_full(void)
|
|||||||
|
|
||||||
CU_ASSERT_EQUAL(breloc->num_lbks, ftl_get_num_blocks_in_band(dev));
|
CU_ASSERT_EQUAL(breloc->num_lbks, ftl_get_num_blocks_in_band(dev));
|
||||||
|
|
||||||
num_iters = ftl_dev_num_punits(dev) *
|
num_iters = ftl_get_num_punits(dev) *
|
||||||
(ftl_get_num_blocks_in_zone(dev) / reloc->xfer_size);
|
(ftl_get_num_blocks_in_zone(dev) / reloc->xfer_size);
|
||||||
|
|
||||||
for (i = 0; i < num_iters; i++) {
|
for (i = 0; i < num_iters; i++) {
|
||||||
@ -284,7 +284,7 @@ test_reloc_iter_full(void)
|
|||||||
CU_ASSERT_EQUAL(num_lbks, reloc->xfer_size);
|
CU_ASSERT_EQUAL(num_lbks, reloc->xfer_size);
|
||||||
}
|
}
|
||||||
|
|
||||||
num_iters = ftl_dev_num_punits(dev);
|
num_iters = ftl_get_num_punits(dev);
|
||||||
|
|
||||||
/* ftl_reloc_next_lbks is searching for maximum xfer_size */
|
/* ftl_reloc_next_lbks is searching for maximum xfer_size */
|
||||||
/* contiguous valid logic blocks in zone, so we can end up */
|
/* contiguous valid logic blocks in zone, so we can end up */
|
||||||
|
Loading…
Reference in New Issue
Block a user