aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJaegeuk Kim <jaegeuk@kernel.org>2021-04-01 20:25:32 -0700
committerJaegeuk Kim <jaegeuk@kernel.org>2021-04-01 20:25:32 -0700
commit98e64635bdb43b9684b6afe77d01f8d841b0a72a (patch)
treee6eab2262c276d38e2b9e5e4adaa95780e6f736d
parentf056fbeff08d30a6d9acdb9e06704461ceee3500 (diff)
downloadf2fs-tools-98e64635bdb43b9684b6afe77d01f8d841b0a72a.tar.gz
resize.f2fs: add force option to rewrite broken calculation
This patch adds "-f" for resize.f2fs to fix broken resized f2fs. Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
-rw-r--r--fsck/main.c6
-rw-r--r--fsck/resize.c5
2 files changed, 8 insertions, 3 deletions
diff --git a/fsck/main.c b/fsck/main.c
index be30e00..64efa87 100644
--- a/fsck/main.c
+++ b/fsck/main.c
@@ -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;
diff --git a/fsck/resize.c b/fsck/resize.c
index 46b1cfb..0425498 100644
--- a/fsck/resize.c
+++ b/fsck/resize.c
@@ -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");