Commit 6708b709 authored by Richael Zhuang's avatar Richael Zhuang Committed by Ben Walker
Browse files

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: default avatarRichael Zhuang <richael.zhuang@arm.com>
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/455347


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>
parent 53777de8
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -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;
	}
+1 −1
Original line number Diff line number Diff line
@@ -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) {
+9 −9
Original line number Diff line number Diff line
@@ -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) {