aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSheng Yong <shengyong@oppo.com>2022-11-14 22:17:00 +0800
committerJaegeuk Kim <jaegeuk@kernel.org>2022-11-21 12:35:02 -0800
commit1bb669e872ac2026e5e58f977ab65e8caf58e918 (patch)
treee780aeb0ebf4689fbb6ff19f37f864515eeef8a3
parentccd2361c296315945c71bcbdd07c8521ac101c9f (diff)
downloadf2fs-tools-1bb669e872ac2026e5e58f977ab65e8caf58e918.tar.gz
fsck.f2fs: avoid uncessary recalculation
There is no need to recalculate ADDRS_PER_INODE and ADDRS_PER_BLOCK, especially in a for loop. Signed-off-by: Sheng Yong <shengyong@oppo.com> Reviewed-by: Chao Yu <chao@kernel.org> Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
-rw-r--r--fsck/fsck.c19
1 files changed, 9 insertions, 10 deletions
diff --git a/fsck/fsck.c b/fsck/fsck.c
index ebc60ad..df91c82 100644
--- a/fsck/fsck.c
+++ b/fsck/fsck.c
@@ -706,7 +706,7 @@ void fsck_chk_inode_blk(struct f2fs_sb_info *sbi, u32 nid,
int ofs;
char *en;
u32 namelen;
- unsigned int idx = 0;
+ unsigned int addrs, idx = 0;
unsigned short i_gc_failures;
int need_fix = 0;
int ret;
@@ -932,17 +932,16 @@ check_next:
}
/* check data blocks in inode */
+ addrs = ADDRS_PER_INODE(&node_blk->i);
if (cur_qtype != -1) {
+ u64 addrs_per_blk = (u64)ADDRS_PER_BLOCK(&node_blk->i);
qf_szchk_type[cur_qtype] = QF_SZCHK_REGFILE;
- qf_maxsize[cur_qtype] = (ADDRS_PER_INODE(&node_blk->i) +
- 2 * ADDRS_PER_BLOCK(&node_blk->i) +
- 2 * ADDRS_PER_BLOCK(&node_blk->i) *
- NIDS_PER_BLOCK +
- (u64) ADDRS_PER_BLOCK(&node_blk->i) *
- NIDS_PER_BLOCK * NIDS_PER_BLOCK) * F2FS_BLKSIZE;
- }
- for (idx = 0; idx < ADDRS_PER_INODE(&node_blk->i);
- idx++, child.pgofs++) {
+ qf_maxsize[cur_qtype] = (u64)(addrs + 2 * addrs_per_blk +
+ 2 * addrs_per_blk * NIDS_PER_BLOCK +
+ addrs_per_blk * NIDS_PER_BLOCK *
+ NIDS_PER_BLOCK) * F2FS_BLKSIZE;
+ }
+ for (idx = 0; idx < addrs; idx++, child.pgofs++) {
block_t blkaddr = le32_to_cpu(node_blk->i.i_addr[ofs + idx]);
/* check extent info */