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

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
Loading
Loading
Loading
Loading
+17 −16
Original line number Diff line number Diff line
@@ -4949,7 +4949,6 @@ static int check_zone_write_pointer(struct f2fs_sb_info *sbi,
		return ret;
	}

	if (is_set_ckpt_flags(sbi, CP_UMOUNT_FLAG)) {
	/*
	 * If there are valid blocks and the write pointer doesn't match
	 * with them, we need to report the inconsistency and fill
@@ -4962,7 +4961,6 @@ static int check_zone_write_pointer(struct f2fs_sb_info *sbi,
			    GET_SEGNO(sbi, last_valid_block),
			    GET_BLKOFF_FROM_SEG0(sbi, last_valid_block),
			    wp_segno, wp_blkoff);
	}

	ret = blkdev_zone_mgmt(fdev->bdev, REQ_OP_ZONE_FINISH,
				zone->start, zone->len, GFP_NOFS);
@@ -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: "
			    "curseg[0x%x,0x%x] wp[0x%x,0x%x]", type, cs->segno,
			    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]: "
		    "curseg[0x%x,0x%x]", type, cs->segno, cs->next_blkoff);
	/* Allocate a new section if it's not new. */
	if (cs->next_blkoff) {
		unsigned int old_segno = cs->segno, old_blkoff = cs->next_blkoff;

		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 */
	if (check_zone_write_pointer(sbi, zbd, &zone))