From a6160c3e21f43b89b49802cc4a956d1c4b65ae44 Mon Sep 17 00:00:00 2001 From: Chao Yu Date: Mon, 26 Nov 2018 18:53:37 +0800 Subject: fsck.f2fs: allow to fsck readonly image w/ -f option To keep line with e2fsprogs, let's allow to fsck mounted image as readonly w/ -f option. Reported-by: Perfect Gentleman Signed-off-by: Chao Yu --- fsck/main.c | 1 + include/f2fs_fs.h | 1 + lib/libf2fs.c | 2 +- 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/fsck/main.c b/fsck/main.c index 675c603..bb79f6e 100644 --- a/fsck/main.c +++ b/fsck/main.c @@ -249,6 +249,7 @@ void f2fs_parse_options(int argc, char *argv[]) case 'f': case 'y': c.fix_on = 1; + c.force = 1; MSG(0, "Info: Force to fix corruption\n"); break; case 'q': diff --git a/include/f2fs_fs.h b/include/f2fs_fs.h index 65cc8fd..6eebb3a 100644 --- a/include/f2fs_fs.h +++ b/include/f2fs_fs.h @@ -369,6 +369,7 @@ struct f2fs_configuration { void *private; int dry_run; int fix_on; + int force; int defset; int bug_on; int alloc_failed; diff --git a/lib/libf2fs.c b/lib/libf2fs.c index cc335db..498f6c0 100644 --- a/lib/libf2fs.c +++ b/lib/libf2fs.c @@ -821,7 +821,7 @@ int get_device_info(int i) return -1; } - if (S_ISBLK(stat_buf->st_mode)) + if (S_ISBLK(stat_buf->st_mode) && !c.force) fd = open(dev->path, O_RDWR | O_EXCL); else fd = open(dev->path, O_RDWR); -- cgit 1.2-0.3.lf.el7