From 6708b70938dc40529aa7ca20cf222c51866bb2db Mon Sep 17 00:00:00 2001 From: Richael Zhuang Date: Wed, 22 May 2019 15:06:07 +0800 Subject: [PATCH] lib/ftl: fix the unclear PAGE_SIZE In lib/ftl PAGE_SIZE is used in many places. But I think there's no relation with the host memory PAGE_SIZE. In most changes, PAGE_SIZE is replaced by FTL_BLOCK_SIZE for ftl block size. In ftl/ftl-anm.c, PAGE_SIZE is replaced by 4096 for alignment. Change-Id: I72e7c65c83b9fe1a4e50944dc5d90b9459b4e593 Signed-off-by: Richael Zhuang Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/455347 Tested-by: SPDK CI Jenkins Reviewed-by: Ben Walker Reviewed-by: Wojciech Malikowski Reviewed-by: Darek Stojaczyk --- lib/ftl/ftl_anm.c | 2 +- lib/ftl/ftl_init.c | 2 +- lib/ftl/ftl_io.c | 18 +++++++++--------- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/lib/ftl/ftl_anm.c b/lib/ftl/ftl_anm.c index 50311ffc2..8f428e31d 100644 --- a/lib/ftl/ftl_anm.c +++ b/lib/ftl/ftl_anm.c @@ -314,7 +314,7 @@ ftl_anm_ctrlr_alloc(struct spdk_ftl_dev *dev) } ctrlr->log = spdk_dma_zmalloc(sizeof(*ctrlr->log) * FTL_ANM_LOG_ENTRIES, - PAGE_SIZE, NULL); + 4096, NULL); if (!ctrlr->log) { goto free_ctrlr; } diff --git a/lib/ftl/ftl_init.c b/lib/ftl/ftl_init.c index 1972e2ff1..11cb3ae9f 100644 --- a/lib/ftl/ftl_init.c +++ b/lib/ftl/ftl_init.c @@ -228,7 +228,7 @@ ftl_retrieve_punit_chunk_info(struct spdk_ftl_dev *dev, const struct ftl_punit * struct spdk_ocssd_chunk_information_entry *info) { uint32_t i = 0; - unsigned int num_entries = PAGE_SIZE / sizeof(*info); + unsigned int num_entries = FTL_BLOCK_SIZE / sizeof(*info); struct ftl_ppa chunk_ppa = punit->start_ppa; for (i = 0; i < dev->geo.num_chk; i += num_entries, chunk_ppa.chk += num_entries) { diff --git a/lib/ftl/ftl_io.c b/lib/ftl/ftl_io.c index b0d4deb40..8caec1f8f 100644 --- a/lib/ftl/ftl_io.c +++ b/lib/ftl/ftl_io.c @@ -108,7 +108,7 @@ ftl_io_advance(struct ftl_io *io, size_t lbk_cnt) if (io->iov_cnt != 0) { while (lbk_left > 0) { assert(io->iov_pos < io->iov_cnt); - iov_lbks = iov[io->iov_pos].iov_len / PAGE_SIZE; + iov_lbks = iov[io->iov_pos].iov_len / FTL_BLOCK_SIZE; if (io->iov_off + lbk_left < iov_lbks) { io->iov_off += lbk_left; @@ -133,7 +133,7 @@ ftl_iovec_num_lbks(struct iovec *iov, size_t iov_cnt) size_t lbks = 0, i = 0; for (; i < iov_cnt; ++i) { - lbks += iov[i].iov_len / PAGE_SIZE; + lbks += iov[i].iov_len / FTL_BLOCK_SIZE; } return lbks; @@ -143,17 +143,17 @@ void * ftl_io_iovec_addr(struct ftl_io *io) { assert(io->iov_pos < io->iov_cnt); - assert(io->iov_off * PAGE_SIZE < ftl_io_iovec(io)[io->iov_pos].iov_len); + assert(io->iov_off * FTL_BLOCK_SIZE < ftl_io_iovec(io)[io->iov_pos].iov_len); return (char *)ftl_io_iovec(io)[io->iov_pos].iov_base + - io->iov_off * PAGE_SIZE; + io->iov_off * FTL_BLOCK_SIZE; } size_t ftl_io_iovec_len_left(struct ftl_io *io) { struct iovec *iov = ftl_io_iovec(io); - return iov[io->iov_pos].iov_len / PAGE_SIZE - io->iov_off; + return iov[io->iov_pos].iov_len / FTL_BLOCK_SIZE - io->iov_off; } static void @@ -169,7 +169,7 @@ _ftl_io_init_iovec(struct ftl_io *io, const struct iovec *iov, size_t iov_cnt, s if (lbk_cnt == 0) { for (iov_off = 0; iov_off < iov_cnt; ++iov_off) { - io->lbk_cnt += iov[iov_off].iov_len / PAGE_SIZE; + io->lbk_cnt += iov[iov_off].iov_len / FTL_BLOCK_SIZE; } } } @@ -240,11 +240,11 @@ ftl_io_shrink_iovec(struct ftl_io *io, size_t lbk_cnt) assert(io->pos == 0 && io->iov_pos == 0 && io->iov_off == 0); for (; iov_off < io->iov_cnt; ++iov_off) { - size_t num_iov = io->iov[iov_off].iov_len / PAGE_SIZE; + size_t num_iov = io->iov[iov_off].iov_len / FTL_BLOCK_SIZE; size_t num_left = lbk_cnt - lbk_off; if (num_iov >= num_left) { - io->iov[iov_off].iov_len = num_left * PAGE_SIZE; + io->iov[iov_off].iov_len = num_left * FTL_BLOCK_SIZE; io->iov_cnt = iov_off + 1; io->lbk_cnt = lbk_cnt; break; @@ -275,7 +275,7 @@ ftl_io_init_internal(const struct ftl_io_init_opts *opts) struct spdk_ftl_dev *dev = opts->dev; struct iovec iov = { .iov_base = opts->data, - .iov_len = opts->lbk_cnt * PAGE_SIZE + .iov_len = opts->lbk_cnt * FTL_BLOCK_SIZE }; if (!io) {