As Ondřej Jirman <[email protected]> reported:

I was trying to run: fsck.f2fs --dry-run /dev/mmcblk0p2 on a RO mounted device,
and fsck refuses to run. Strace shows that it tries to open the block device
with O_EXCL even in RO mode, which will always fail if the block device
is mounted.

fsck.f2fs --dry-run /dev/mmcblk0p2
Info: Dry run
Info: Mounted device!
Info: Check FS only on RO mounted device
        Error: Failed to open the device!

I suggest not using O_EXCL for --dry-run check.

Let's change to allow --dry-run to check readonly mounted fs.

Reported-by: Ondřej Jirman <[email protected]>
Signed-off-by: Chao Yu <[email protected]>
---
 lib/libf2fs.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/lib/libf2fs.c b/lib/libf2fs.c
index d527d68..5c064c8 100644
--- a/lib/libf2fs.c
+++ b/lib/libf2fs.c
@@ -907,7 +907,8 @@ int get_device_info(int i)
                        return -1;
                }
 
-               if (S_ISBLK(stat_buf->st_mode) && !c.force && c.func != DUMP) {
+               if (S_ISBLK(stat_buf->st_mode) &&
+                               !c.force && c.func != DUMP && !c.dry_run) {
                        fd = open(dev->path, O_RDWR | O_EXCL);
                        if (fd < 0)
                                fd = open_check_fs(dev->path, O_EXCL);
-- 
2.18.0.rc1



_______________________________________________
Linux-f2fs-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel

Reply via email to