blob: 72d86fec465cd12e37ad677f8984978d086b2eb9 [file] [log] [blame]
From a6160c3e21f43b89b49802cc4a956d1c4b65ae44 Mon Sep 17 00:00:00 2001
From: Chao Yu <yuchao0@huawei.com>
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 <perfect007gentleman@gmail.com>
Signed-off-by: Chao Yu <yuchao0@huawei.com>
---
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