On 4/16/25 03:28, Juhyung Park wrote: > Hm. > > Would this be what @uplinkr might have encountered?
Maybe, :) @uplinkr, previously, if you used '-s' parameter while expand-resizing, that could be the reason it corrupted your partition. Thanks, > > On Mon, Apr 14, 2025 at 4:13 AM Chao Yu via Linux-f2fs-devel > <linux-f2fs-devel@lists.sourceforge.net> wrote: >> >> w/ below testcase, resize will generate a corrupted image which >> contains inconsistent metadata: >> >> touch img >> truncate -s $((512*1024*1024*1024)) img >> mkfs.f2fs -f img $((256*1024*1024)) >> resize.f2fs -s img -t $((1024*1024*1024)) >> mount img /mnt/f2fs >> >> [ 31.725200] F2FS-fs (loop0): Wrong bitmap size: sit: 192, sit_blk_cnt:4762 >> [ 31.728441] F2FS-fs (loop0): Failed to get valid F2FS checkpoint >> >> The root cause is safe mode (via -s option) is not compatible >> w/ expand resize, due to in safe mode, we will keep all parameters >> related to NAT, SIT, SSA area, e.g. sit_bitmap_size, however, we >> will update segment_count_main according new partition size, result >> in there is no enough sit_bitmap and SIT blocks to address the >> entire block address of new partition. >> >> Adding a check condition to avoid expanding partition in safe >> mode, and change manual accordingly. >> >> Signed-off-by: Chao Yu <c...@kernel.org> >> --- >> fsck/resize.c | 12 ++++++++---- >> man/resize.f2fs.8 | 2 +- >> 2 files changed, 9 insertions(+), 5 deletions(-) >> >> diff --git a/fsck/resize.c b/fsck/resize.c >> index 1ab7d75..58914ec 100644 >> --- a/fsck/resize.c >> +++ b/fsck/resize.c >> @@ -756,18 +756,22 @@ int f2fs_resize(struct f2fs_sb_info *sbi) >> >> /* may different sector size */ >> if ((c.target_sectors * c.sector_size >> >> - get_sb(log_blocksize)) < get_sb(block_count)) >> + get_sb(log_blocksize)) < get_sb(block_count)) { >> if (!c.safe_resize) { >> ASSERT_MSG("Nothing to resize, now only supports >> resizing with safe resize flag\n"); >> return -1; >> } else { >> return f2fs_resize_shrink(sbi); >> } >> - else if (((c.target_sectors * c.sector_size >> >> + } else if (((c.target_sectors * c.sector_size >> >> get_sb(log_blocksize)) > get_sb(block_count)) || >> - c.ignore_error) >> + c.ignore_error) { >> + if (c.safe_resize) { >> + ASSERT_MSG("Expanding resize doesn't support safe >> resize flag"); >> + return -1; >> + } >> return f2fs_resize_grow(sbi); >> - else { >> + } else { >> MSG(0, "Nothing to resize.\n"); >> return 0; >> } >> diff --git a/man/resize.f2fs.8 b/man/resize.f2fs.8 >> index bdda4fd..5b6daf5 100644 >> --- a/man/resize.f2fs.8 >> +++ b/man/resize.f2fs.8 >> @@ -69,7 +69,7 @@ Skip caution dialogue and resize partition directly. >> Specify support write hint. >> .TP >> .BI \-s >> -Enable safe resize. >> +Enable safe resize, it can only be used w/ shrink resize. >> .TP >> .BI \-V >> Print the version number and exit. >> -- >> 2.49.0 >> >> >> >> _______________________________________________ >> Linux-f2fs-devel mailing list >> Linux-f2fs-devel@lists.sourceforge.net >> https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel _______________________________________________ Linux-f2fs-devel mailing list Linux-f2fs-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel