[PATCH 1/2] erofs-utils: lib/cache.c: replace &g_sbi with sbi
Hongzhen Luo
hongzhen at linux.alibaba.com
Wed Jul 10 16:59:28 AEST 2024
Prepare for the upcoming per-sbi buffer.
Signed-off-by: Hongzhen Luo <hongzhen at linux.alibaba.com>
---
include/erofs/cache.h | 9 ++++++---
lib/cache.c | 28 +++++++++++++++++-----------
2 files changed, 23 insertions(+), 14 deletions(-)
diff --git a/include/erofs/cache.h b/include/erofs/cache.h
index 234185f..288843e 100644
--- a/include/erofs/cache.h
+++ b/include/erofs/cache.h
@@ -55,15 +55,17 @@ struct erofs_buffer_block {
static inline const int get_alignsize(int type, int *type_ret)
{
+ struct erofs_sb_info *sbi = &g_sbi;
+
if (type == DATA)
- return erofs_blksiz(&g_sbi);
+ return erofs_blksiz(sbi);
if (type == INODE) {
*type_ret = META;
return sizeof(struct erofs_inode_compact);
} else if (type == DIRA) {
*type_ret = META;
- return erofs_blksiz(&g_sbi);
+ return erofs_blksiz(sbi);
} else if (type == XATTR) {
*type_ret = META;
return sizeof(struct erofs_xattr_entry);
@@ -83,11 +85,12 @@ extern const struct erofs_bhops erofs_skip_write_bhops;
static inline erofs_off_t erofs_btell(struct erofs_buffer_head *bh, bool end)
{
const struct erofs_buffer_block *bb = bh->block;
+ struct erofs_sb_info *sbi = &g_sbi;
if (bb->blkaddr == NULL_ADDR)
return NULL_ADDR_UL;
- return erofs_pos(&g_sbi, bb->blkaddr) +
+ return erofs_pos(sbi, bb->blkaddr) +
(end ? list_next_entry(bh, list)->off : bh->off);
}
diff --git a/lib/cache.c b/lib/cache.c
index e3dc9de..69a3055 100644
--- a/lib/cache.c
+++ b/lib/cache.c
@@ -51,12 +51,13 @@ void erofs_buffer_init(erofs_blk_t startblk)
static void erofs_bupdate_mapped(struct erofs_buffer_block *bb)
{
struct list_head *bkt;
+ struct erofs_sb_info *sbi = &g_sbi;
if (bb->blkaddr == NULL_ADDR)
return;
bkt = mapped_buckets[bb->type] +
- (bb->buffers.off & (erofs_blksiz(&g_sbi) - 1));
+ (bb->buffers.off & (erofs_blksiz(sbi) - 1));
list_del(&bb->mapped_list);
list_add_tail(&bb->mapped_list, bkt);
}
@@ -69,7 +70,8 @@ static int __erofs_battach(struct erofs_buffer_block *bb,
unsigned int extrasize,
bool dryrun)
{
- const unsigned int blksiz = erofs_blksiz(&g_sbi);
+ struct erofs_sb_info *sbi = &g_sbi;
+ const unsigned int blksiz = erofs_blksiz(sbi);
const unsigned int blkmask = blksiz - 1;
erofs_off_t boff = bb->buffers.off;
const erofs_off_t alignedoffset = roundup(boff, alignsize);
@@ -86,7 +88,7 @@ static int __erofs_battach(struct erofs_buffer_block *bb,
blkaddr = bb->blkaddr;
if (blkaddr != NULL_ADDR) {
tailupdate = (tail_blkaddr == blkaddr +
- BLK_ROUND_UP(&g_sbi, boff));
+ BLK_ROUND_UP(sbi, boff));
if (oob && !tailupdate)
return -EINVAL;
}
@@ -102,7 +104,7 @@ static int __erofs_battach(struct erofs_buffer_block *bb,
bb->buffers.off = boff;
/* need to update the tail_blkaddr */
if (tailupdate)
- tail_blkaddr = blkaddr + BLK_ROUND_UP(&g_sbi, boff);
+ tail_blkaddr = blkaddr + BLK_ROUND_UP(sbi, boff);
erofs_bupdate_mapped(bb);
}
return ((alignedoffset + incr - 1) & blkmask) + 1;
@@ -125,7 +127,8 @@ static int erofs_bfind_for_attach(int type, erofs_off_t size,
unsigned int alignsize,
struct erofs_buffer_block **bbp)
{
- const unsigned int blksiz = erofs_blksiz(&g_sbi);
+ struct erofs_sb_info *sbi = &g_sbi;
+ const unsigned int blksiz = erofs_blksiz(sbi);
struct erofs_buffer_block *cur, *bb;
unsigned int used0, used_before, usedmax, used;
int ret;
@@ -315,6 +318,7 @@ struct erofs_buffer_head *erofs_battach(struct erofs_buffer_head *bh,
static erofs_blk_t __erofs_mapbh(struct erofs_buffer_block *bb)
{
erofs_blk_t blkaddr;
+ struct erofs_sb_info *sbi = &g_sbi;
if (bb->blkaddr == NULL_ADDR) {
bb->blkaddr = tail_blkaddr;
@@ -322,7 +326,7 @@ static erofs_blk_t __erofs_mapbh(struct erofs_buffer_block *bb)
erofs_bupdate_mapped(bb);
}
- blkaddr = bb->blkaddr + BLK_ROUND_UP(&g_sbi, bb->buffers.off);
+ blkaddr = bb->blkaddr + BLK_ROUND_UP(sbi, bb->buffers.off);
if (blkaddr > tail_blkaddr)
tail_blkaddr = blkaddr;
@@ -360,7 +364,8 @@ static void erofs_bfree(struct erofs_buffer_block *bb)
int erofs_bflush(struct erofs_buffer_block *bb)
{
- const unsigned int blksiz = erofs_blksiz(&g_sbi);
+ struct erofs_sb_info *sbi = &g_sbi;
+ const unsigned int blksiz = erofs_blksiz(sbi);
struct erofs_buffer_block *p, *n;
erofs_blk_t blkaddr;
@@ -392,11 +397,11 @@ int erofs_bflush(struct erofs_buffer_block *bb)
padding = blksiz - (p->buffers.off & (blksiz - 1));
if (padding != blksiz)
- erofs_dev_fillzero(&g_sbi, erofs_pos(&g_sbi, blkaddr) - padding,
+ erofs_dev_fillzero(sbi, erofs_pos(sbi, blkaddr) - padding,
padding, true);
if (p->type != DATA)
- erofs_metablkcnt += BLK_ROUND_UP(&g_sbi, p->buffers.off);
+ erofs_metablkcnt += BLK_ROUND_UP(sbi, p->buffers.off);
erofs_dbg("block %u to %u flushed", p->blkaddr, blkaddr - 1);
erofs_bfree(p);
}
@@ -408,10 +413,11 @@ void erofs_bdrop(struct erofs_buffer_head *bh, bool tryrevoke)
struct erofs_buffer_block *const bb = bh->block;
const erofs_blk_t blkaddr = bh->block->blkaddr;
bool rollback = false;
+ struct erofs_sb_info *sbi = &g_sbi;
/* tail_blkaddr could be rolled back after revoking all bhs */
if (tryrevoke && blkaddr != NULL_ADDR &&
- tail_blkaddr == blkaddr + BLK_ROUND_UP(&g_sbi, bb->buffers.off))
+ tail_blkaddr == blkaddr + BLK_ROUND_UP(sbi, bb->buffers.off))
rollback = true;
bh->op = &erofs_drop_directly_bhops;
@@ -421,7 +427,7 @@ void erofs_bdrop(struct erofs_buffer_head *bh, bool tryrevoke)
return;
if (!rollback && bb->type != DATA)
- erofs_metablkcnt += BLK_ROUND_UP(&g_sbi, bb->buffers.off);
+ erofs_metablkcnt += BLK_ROUND_UP(sbi, bb->buffers.off);
erofs_bfree(bb);
if (rollback)
tail_blkaddr = blkaddr;
--
2.43.5
More information about the Linux-erofs
mailing list