[PATCH] erofs-utils: lib: avoid unnecessary modulo in cache.c

Gao Xiang hsiangkao at linux.alibaba.com
Thu Sep 14 16:12:10 AEST 2023


Previously, EROFS_BLKSIZ was a constant so it doesn't matter to use %
operator.  Let's convert the remaining ones now.

Signed-off-by: Gao Xiang <hsiangkao at linux.alibaba.com>
---
 lib/cache.c | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/lib/cache.c b/lib/cache.c
index 5205d57..ea80a10 100644
--- a/lib/cache.c
+++ b/lib/cache.c
@@ -63,7 +63,8 @@ static void erofs_bupdate_mapped(struct erofs_buffer_block *bb)
 	if (bb->blkaddr == NULL_ADDR)
 		return;
 
-	bkt = mapped_buckets[bb->type] + bb->buffers.off % erofs_blksiz(&sbi);
+	bkt = mapped_buckets[bb->type] +
+		(bb->buffers.off & (erofs_blksiz(&sbi) - 1));
 	list_del(&bb->mapped_list);
 	list_add_tail(&bb->mapped_list, bkt);
 }
@@ -77,8 +78,9 @@ static int __erofs_battach(struct erofs_buffer_block *bb,
 			   bool dryrun)
 {
 	const unsigned int blksiz = erofs_blksiz(&sbi);
+	const unsigned int blkmask = blksiz - 1;
 	const erofs_off_t alignedoffset = roundup(bb->buffers.off, alignsize);
-	const int oob = cmpsgn(roundup((bb->buffers.off - 1) % blksiz + 1,
+	const int oob = cmpsgn(roundup(((bb->buffers.off - 1) & blkmask) + 1,
 				       alignsize) + incr + extrasize, blksiz);
 	bool tailupdate = false;
 	erofs_blk_t blkaddr;
@@ -110,7 +112,7 @@ static int __erofs_battach(struct erofs_buffer_block *bb,
 					DIV_ROUND_UP(bb->buffers.off, blksiz);
 		erofs_bupdate_mapped(bb);
 	}
-	return ((alignedoffset + incr - 1) & (blksiz - 1)) + 1;
+	return ((alignedoffset + incr - 1) & blkmask) + 1;
 }
 
 int erofs_bh_balloon(struct erofs_buffer_head *bh, erofs_off_t incr)
@@ -170,7 +172,7 @@ static int erofs_bfind_for_attach(int type, erofs_off_t size,
 
 		DBG_BUGON(cur->type != type);
 		DBG_BUGON(cur->blkaddr == NULL_ADDR);
-		DBG_BUGON(used_before != cur->buffers.off % blksiz);
+		DBG_BUGON(used_before != (cur->buffers.off & (blksiz - 1)));
 
 		ret = __erofs_battach(cur, NULL, size, alignsize,
 				      required_ext + inline_ext, true);
-- 
2.39.3



More information about the Linux-erofs mailing list