[PATCH 3/5] erofs-utils: lib: rename `mapped_buckets` to `watermeter`
Gao Xiang
hsiangkao at linux.alibaba.com
Fri Jan 3 20:03:36 AEDT 2025
In order to prepare for the upcoming space allocation speedup.
Signed-off-by: Gao Xiang <hsiangkao at linux.alibaba.com>
---
include/erofs/cache.h | 4 ++--
lib/cache.c | 27 +++++++++++++--------------
2 files changed, 15 insertions(+), 16 deletions(-)
diff --git a/include/erofs/cache.h b/include/erofs/cache.h
index 6ff80ab..bdf6460 100644
--- a/include/erofs/cache.h
+++ b/include/erofs/cache.h
@@ -48,7 +48,7 @@ struct erofs_buffer_head {
struct erofs_buffer_block {
struct list_head list;
- struct list_head mapped_list;
+ struct list_head sibling; /* blocks of the same waterline */
erofs_blk_t blkaddr;
int type;
@@ -60,7 +60,7 @@ struct erofs_bufmgr {
struct erofs_sb_info *sbi;
/* buckets for all mapped buffer blocks to boost up allocation */
- struct list_head mapped_buckets[META + 1][EROFS_MAX_BLOCK_SIZE];
+ struct list_head watermeter[META + 1][EROFS_MAX_BLOCK_SIZE];
struct erofs_buffer_block blkh;
erofs_blk_t tail_blkaddr, metablkcnt;
diff --git a/lib/cache.c b/lib/cache.c
index f9aa6eb..c7243b5 100644
--- a/lib/cache.c
+++ b/lib/cache.c
@@ -41,15 +41,15 @@ struct erofs_bufmgr *erofs_buffer_init(struct erofs_sb_info *sbi,
bufmgr->blkh.blkaddr = NULL_ADDR;
bufmgr->last_mapped_block = &bufmgr->blkh;
- for (i = 0; i < ARRAY_SIZE(bufmgr->mapped_buckets); i++)
- for (j = 0; j < ARRAY_SIZE(bufmgr->mapped_buckets[0]); j++)
- init_list_head(&bufmgr->mapped_buckets[i][j]);
+ for (i = 0; i < ARRAY_SIZE(bufmgr->watermeter); i++)
+ for (j = 0; j < (1 << sbi->blkszbits); j++)
+ init_list_head(&bufmgr->watermeter[i][j]);
bufmgr->tail_blkaddr = startblk;
bufmgr->sbi = sbi;
return bufmgr;
}
-static void erofs_bupdate_mapped(struct erofs_buffer_block *bb)
+static void erofs_update_bwatermeter(struct erofs_buffer_block *bb)
{
struct erofs_bufmgr *bmgr = bb->buffers.fsprivate;
struct erofs_sb_info *sbi = bmgr->sbi;
@@ -58,10 +58,10 @@ static void erofs_bupdate_mapped(struct erofs_buffer_block *bb)
if (bb->blkaddr == NULL_ADDR)
return;
- bkt = bmgr->mapped_buckets[bb->type] +
+ bkt = bmgr->watermeter[bb->type] +
(bb->buffers.off & (erofs_blksiz(sbi) - 1));
- list_del(&bb->mapped_list);
- list_add_tail(&bb->mapped_list, bkt);
+ list_del(&bb->sibling);
+ list_add_tail(&bb->sibling, bkt);
}
/* return occupied bytes in specific buffer block if succeed */
@@ -116,7 +116,7 @@ static int __erofs_battach(struct erofs_buffer_block *bb,
/* need to update the tail_blkaddr */
if (tailupdate)
bmgr->tail_blkaddr = blkaddr + bb->buffers.nblocks;
- erofs_bupdate_mapped(bb);
+ erofs_update_bwatermeter(bb);
}
return ((alignedoffset + incr + blkmask) & blkmask) + 1;
}
@@ -165,12 +165,11 @@ static int erofs_bfind_for_attach(struct erofs_bufmgr *bmgr,
used_before = rounddown(blksiz - (size + inline_ext), alignsize);
for (; used_before; --used_before) {
- struct list_head *bt = bmgr->mapped_buckets[type] + used_before;
+ struct list_head *bt = bmgr->watermeter[type] + used_before;
if (list_empty(bt))
continue;
- cur = list_first_entry(bt, struct erofs_buffer_block,
- mapped_list);
+ cur = list_first_entry(bt, struct erofs_buffer_block, sibling);
/* last mapped block can be expended, don't handle it here */
if (list_next_entry(cur, list)->blkaddr == NULL_ADDR) {
@@ -279,7 +278,7 @@ struct erofs_buffer_head *erofs_balloc(struct erofs_bufmgr *bmgr,
&bmgr->last_mapped_block->list);
else
list_add_tail(&bb->list, &bmgr->blkh.list);
- init_list_head(&bb->mapped_list);
+ init_list_head(&bb->sibling);
bh = malloc(sizeof(struct erofs_buffer_head));
if (!bh) {
@@ -343,7 +342,7 @@ static void __erofs_mapbh(struct erofs_buffer_block *bb)
}
}
bmgr->last_mapped_block = bb;
- erofs_bupdate_mapped(bb);
+ erofs_update_bwatermeter(bb);
}
blkaddr = bb->blkaddr + bb->buffers.nblocks;
@@ -382,7 +381,7 @@ static void erofs_bfree(struct erofs_buffer_block *bb)
if (bb == bmgr->last_mapped_block)
bmgr->last_mapped_block = list_prev_entry(bb, list);
- list_del(&bb->mapped_list);
+ list_del(&bb->sibling);
list_del(&bb->list);
free(bb);
}
--
2.43.5
More information about the Linux-erofs
mailing list