resize.f2fs: add force option to rewrite broken calculation
authorJaegeuk Kim <jaegeuk@kernel.org>
Fri, 2 Apr 2021 03:25:32 +0000 (20:25 -0700)
committerJaegeuk Kim <jaegeuk@kernel.org>
Fri, 2 Apr 2021 03:25:32 +0000 (20:25 -0700)
This patch adds "-f" for resize.f2fs to fix broken resized f2fs.

Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
fsck/main.c
fsck/resize.c

index be30e00..64efa87 100644 (file)
@@ -506,7 +506,7 @@ void f2fs_parse_options(int argc, char *argv[])
 #endif
        } else if (!strcmp("resize.f2fs", prog)) {
 #ifdef WITH_RESIZE
-               const char *option_string = "d:st:iV";
+               const char *option_string = "d:fst:iV";
 
                c.func = RESIZE;
                while ((option = getopt(argc, argv, option_string)) != EOF) {
@@ -522,6 +522,10 @@ void f2fs_parse_options(int argc, char *argv[])
                                MSG(0, "Info: Debug level = %d\n",
                                                        c.dbg_lv);
                                break;
+                       case 'f':
+                               c.force = 1;
+                               MSG(0, "Info: Force to resize\n");
+                               break;
                        case 's':
                                c.safe_resize = 1;
                                break;
index 46b1cfb..0425498 100644 (file)
@@ -714,8 +714,9 @@ int f2fs_resize(struct f2fs_sb_info *sbi)
                } else {
                        return f2fs_resize_shrink(sbi);
                }
-       else if ((c.target_sectors * c.sector_size >>
-                       get_sb(log_blocksize)) > get_sb(block_count))
+       else if (((c.target_sectors * c.sector_size >>
+                       get_sb(log_blocksize)) > get_sb(block_count)) ||
+                       c.force)
                return f2fs_resize_grow(sbi);
        else {
                MSG(0, "Nothing to resize.\n");