On 4/16/25 11:40, Juhyung Park wrote: > Just checked gparted's source code: > https://github.com/GNOME/gparted/blob/GPARTED_1_7_0/src/f2fs.cc#L135 > > Seems unlikely. :/
Alright, seems still we need another testcase for reproducing. :( Thanks, > > On Tue, Apr 15, 2025 at 8:34 PM Chao Yu <c...@kernel.org> wrote: >> >> 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