Skip to content

Commit

Permalink
f2fs-tools: skip finishing zones for current zones
Browse files Browse the repository at this point in the history
Do not finishing zones for current zones.

Signed-off-by: Daeho Jeong <daehojeong@google.com>
Fixes: 06a25b0 ("f2fs-tools: make six open zone check resilient")
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
  • Loading branch information
Daeho Jeong authored and Jaegeuk Kim committed Dec 5, 2023
1 parent f2ae743 commit 1cbaa90
Showing 1 changed file with 11 additions and 1 deletion.
12 changes: 11 additions & 1 deletion fsck/fsck.c
Original file line number Diff line number Diff line change
Expand Up @@ -3268,8 +3268,9 @@ static int chk_and_fix_wp_with_sit(int UNUSED(i), void *blkzone, void *opaque)
struct f2fs_fsck *fsck = F2FS_FSCK(sbi);
block_t zone_block, wp_block, wp_blkoff;
unsigned int zone_segno, wp_segno;
int ret, last_valid_blkoff;
int i, ret, last_valid_blkoff;
int log_sectors_per_block = sbi->log_blocksize - SECTOR_SHIFT;
unsigned int segs_per_zone = sbi->segs_per_sec * sbi->secs_per_zone;

if (blk_zone_conv(blkz))
return 0;
Expand Down Expand Up @@ -3312,6 +3313,15 @@ static int chk_and_fix_wp_with_sit(int UNUSED(i), void *blkzone, void *opaque)
return 0;
}

/* if a curseg points to the zone, do not finishing zone */
for (i = 0; i < NO_CHECK_TYPE; i++) {
struct curseg_info *cs = CURSEG_I(sbi, i);

if (zone_segno <= cs->segno &&
cs->segno < zone_segno + segs_per_zone)
return 0;
}

/*
* If valid blocks exist in the zone beyond the write pointer, it
* is a bug. No need to fix because the zone is not selected for the
Expand Down

0 comments on commit 1cbaa90

Please sign in to comment.