Commit 15a76c80 authored by Jaegeuk Kim's avatar Jaegeuk Kim

f2fs: allocate new section if it's not new

If fsck can allocate a new zone, it'd be better to use that instead of
allocating a new one.

And, it modifies kernel messages.
Reviewed-by: default avatarDaeho Jeong <daehojeong@google.com>
Signed-off-by: default avatarJaegeuk Kim <jaegeuk@kernel.org>
parent 29215a7d
...@@ -4949,20 +4949,18 @@ static int check_zone_write_pointer(struct f2fs_sb_info *sbi, ...@@ -4949,20 +4949,18 @@ static int check_zone_write_pointer(struct f2fs_sb_info *sbi,
return ret; return ret;
} }
if (is_set_ckpt_flags(sbi, CP_UMOUNT_FLAG)) { /*
/* * If there are valid blocks and the write pointer doesn't match
* If there are valid blocks and the write pointer doesn't match * with them, we need to report the inconsistency and fill
* with them, we need to report the inconsistency and fill * the zone till the end to close the zone. This inconsistency
* the zone till the end to close the zone. This inconsistency * does not cause write error because the zone will not be
* does not cause write error because the zone will not be * selected for write operation until it get discarded.
* selected for write operation until it get discarded. */
*/ f2fs_notice(sbi, "Valid blocks are not aligned with write "
f2fs_notice(sbi, "Valid blocks are not aligned with write "
"pointer: valid block[0x%x,0x%x] wp[0x%x,0x%x]", "pointer: valid block[0x%x,0x%x] wp[0x%x,0x%x]",
GET_SEGNO(sbi, last_valid_block), GET_SEGNO(sbi, last_valid_block),
GET_BLKOFF_FROM_SEG0(sbi, last_valid_block), GET_BLKOFF_FROM_SEG0(sbi, last_valid_block),
wp_segno, wp_blkoff); wp_segno, wp_blkoff);
}
ret = blkdev_zone_mgmt(fdev->bdev, REQ_OP_ZONE_FINISH, ret = blkdev_zone_mgmt(fdev->bdev, REQ_OP_ZONE_FINISH,
zone->start, zone->len, GFP_NOFS); zone->start, zone->len, GFP_NOFS);
...@@ -5053,15 +5051,18 @@ static int fix_curseg_write_pointer(struct f2fs_sb_info *sbi, int type) ...@@ -5053,15 +5051,18 @@ static int fix_curseg_write_pointer(struct f2fs_sb_info *sbi, int type)
f2fs_notice(sbi, "Unaligned curseg[%d] with write pointer: " f2fs_notice(sbi, "Unaligned curseg[%d] with write pointer: "
"curseg[0x%x,0x%x] wp[0x%x,0x%x]", type, cs->segno, "curseg[0x%x,0x%x] wp[0x%x,0x%x]", type, cs->segno,
cs->next_blkoff, wp_segno, wp_blkoff); cs->next_blkoff, wp_segno, wp_blkoff);
} else {
f2fs_notice(sbi, "Not successfully unmounted in the previous "
"mount");
} }
f2fs_notice(sbi, "Assign new section to curseg[%d]: " /* Allocate a new section if it's not new. */
"curseg[0x%x,0x%x]", type, cs->segno, cs->next_blkoff); if (cs->next_blkoff) {
unsigned int old_segno = cs->segno, old_blkoff = cs->next_blkoff;
f2fs_allocate_new_section(sbi, type, true); f2fs_allocate_new_section(sbi, type, true);
f2fs_notice(sbi, "Assign new section to curseg[%d]: "
"[0x%x,0x%x] -> [0x%x,0x%x]",
type, old_segno, old_blkoff,
cs->segno, cs->next_blkoff);
}
/* check consistency of the zone curseg pointed to */ /* check consistency of the zone curseg pointed to */
if (check_zone_write_pointer(sbi, zbd, &zone)) if (check_zone_write_pointer(sbi, zbd, &zone))
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment