Re: [PATCH] ubifs: Move update of cnt in get_znodes_to_commit

From: Zhihao Cheng
Date: Thu Oct 17 2024 - 21:24:16 EST


在 2024/10/18 2:41, Waqar Hameed 写道:
There is no need to update `cnt` for the first dirty node just before
the loop, and then again update it at the end of each iteration for the
next dirty nodes. Just update `cnt` at the beginning of each iteration
instead. This way, the first iteration will count the first dirty node
and any subsequent iterations will count the next dirty nodes.

Well, from my own view, I prefer the orignal style because it looks more readable.
c->cnext = find_first_dirty(c->zroot.znode);
znode = c->enext = c->cnext;
cnt += 1; // We get the first one.

while (1) {
cnext = find_next_dirty(znode);
znode = cnext;
cnt += 1; // We get another one.
}

After applying this patch, the intention of 'cnt' updating is not so obviously. However, it does reduce the duplicated codes. I will add an acked-by to let Richard determine whether or not apply this patch.

Acked-by: Zhihao Cheng <chengzhihao1@xxxxxxxxxx>

Signed-off-by: Waqar Hameed <waqar.hameed@xxxxxxxx>
---
fs/ubifs/tnc_commit.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/fs/ubifs/tnc_commit.c b/fs/ubifs/tnc_commit.c
index a55e04822d16..d42f7829389c 100644
--- a/fs/ubifs/tnc_commit.c
+++ b/fs/ubifs/tnc_commit.c
@@ -650,8 +650,8 @@ static int get_znodes_to_commit(struct ubifs_info *c)
dbg_cmt("no znodes to commit");
return 0;
}
- cnt += 1;
while (1) {
+ cnt += 1;
ubifs_assert(c, !ubifs_zn_cow(znode));
__set_bit(COW_ZNODE, &znode->flags);
znode->alt = 0;
@@ -664,7 +664,6 @@ static int get_znodes_to_commit(struct ubifs_info *c)
znode->ciip = znode->iip;
znode->cnext = cnext;
znode = cnext;
- cnt += 1;
}
dbg_cmt("committing %d znodes", cnt);
ubifs_assert(c, cnt == atomic_long_read(&c->dirty_zn_cnt));