summaryrefslogtreecommitdiff
blob: 72d86fec465cd12e37ad677f8984978d086b2eb9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
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