Commit 414d8024 authored by Kaiqi Chen's avatar Kaiqi Chen Committed by Jim Harris
Browse files

lib/util: add spdk_round_up() util function



This patch adds a new utility function spdk_round_up() to round a value
up to the nearest multiple of a given divisor. This patch also replaces
existing patterns like divisor * spdk_divide_round_up(num, divisor) with
spdk_round_up(num, divisor) to improve readability and clarity.

Suggested-by: default avatarJim Harris <jim.harris@nvidia.com>
Signed-off-by: default avatarKaiqi Chen <kaiqi.chen@smartx.com>
Change-Id: I9e8017d72ddd530cd97b7416e50c9b963321e948
Reviewed-on: https://review.spdk.io/c/spdk/spdk/+/25950


Community-CI: Broadcom CI <spdk-ci.pdl@broadcom.com>
Reviewed-by: default avatarShuhei Matsumoto <smatsumoto@nvidia.com>
Community-CI: Mellanox Build Bot
Tested-by: default avatarSPDK Automated Test System <spdkbot@gmail.com>
Reviewed-by: default avatarAnkit Kumar <ankit.kumar@samsung.com>
Reviewed-by: default avatarJim Harris <jim.harris@nvidia.com>
parent 1c9d2c75
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -176,6 +176,12 @@ spdk_divide_round_up(uint64_t num, uint64_t divisor)
	return (num + divisor - 1) / divisor;
}

static inline uint64_t
spdk_round_up(uint64_t num, uint64_t divisor)
{
	return divisor * spdk_divide_round_up(num, divisor);
}

struct spdk_single_ioviter {
	struct iovec	*iov;
	size_t		iovcnt;
+1 −3
Original line number Diff line number Diff line
@@ -317,9 +317,7 @@ ftl_p2l_map_num_blocks(const struct spdk_ftl_dev *dev)
static inline size_t
ftl_tail_md_num_blocks(const struct spdk_ftl_dev *dev)
{
	return spdk_divide_round_up(
		       ftl_p2l_map_num_blocks(dev),
		       dev->xfer_size) * dev->xfer_size;
	return spdk_round_up(ftl_p2l_map_num_blocks(dev), dev->xfer_size);
}

/*
+3 −5
Original line number Diff line number Diff line
@@ -44,7 +44,7 @@ superblock_region_size(struct spdk_ftl_dev *dev)
	if (wus > FTL_SUPERBLOCK_SIZE) {
		return wus;
	} else {
		return wus * spdk_divide_round_up(FTL_SUPERBLOCK_SIZE, wus);
		return spdk_round_up(FTL_SUPERBLOCK_SIZE, wus);
	}
}

@@ -60,8 +60,7 @@ ftl_md_region_blocks(struct spdk_ftl_dev *dev, uint64_t bytes)
	const uint64_t alignment = superblock_region_size(dev);
	uint64_t result;

	result = spdk_divide_round_up(bytes, alignment);
	result *= alignment;
	result = spdk_round_up(bytes, alignment);
	result /= FTL_BLOCK_SIZE;

	return result;
@@ -73,8 +72,7 @@ ftl_md_region_align_blocks(struct spdk_ftl_dev *dev, uint64_t blocks)
	const uint64_t alignment = superblock_region_blocks(dev);
	uint64_t result;

	result = spdk_divide_round_up(blocks, alignment);
	result *= alignment;
	result = spdk_round_up(blocks, alignment);

	return result;
}
+1 −2
Original line number Diff line number Diff line
@@ -100,8 +100,7 @@ ftl_mngt_recovery_init(struct spdk_ftl_dev *dev, struct ftl_mngt_process *mngt)

	/* Below values are in byte unit */
	mem_limit = dev->conf.l2p_dram_limit * MiB;
	mem_limit = spdk_min(mem_limit, spdk_divide_round_up(dev->num_lbas * dev->layout.l2p.addr_size,
			     MiB) * MiB);
	mem_limit = spdk_min(mem_limit, spdk_round_up(dev->num_lbas * dev->layout.l2p.addr_size, MiB));

	lba_limit = mem_limit / (sizeof(uint64_t) + dev->layout.l2p.addr_size);
	l2p_limit = lba_limit * dev->layout.l2p.addr_size;
+1 −1
Original line number Diff line number Diff line
@@ -26,7 +26,7 @@ ftl_bitmap_bits_to_size(uint64_t bits)
	}

	size = spdk_divide_round_up(bits, 8);
	size = spdk_divide_round_up(size, ftl_bitmap_buffer_alignment) * ftl_bitmap_buffer_alignment;
	size = spdk_round_up(size, ftl_bitmap_buffer_alignment);

	return size;
}
Loading