diff options
author | Jaegeuk Kim <jaegeuk@kernel.org> | 2016-03-24 02:12:58 +0300 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2019-01-26 11:42:46 +0300 |
commit | 1499d39b74f5957e932639a86487ccea5a0a9740 (patch) | |
tree | 9b2ce4d98ebbf1ffc54f1ff9a8ef12200f8e13b6 /fs/f2fs/super.c | |
parent | 523972a6e347c178204cb891bd18322df47b134b (diff) | |
download | linux-1499d39b74f5957e932639a86487ccea5a0a9740.tar.xz |
f2fs: give -EINVAL for norecovery and rw mount
commit 6781eabba1bdb133eb9125c4acf6704ccbe4df02 upstream.
Once detecting something to recover, f2fs should stop mounting, given norecovery
and rw mount options.
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Signed-off-by: Ben Hutchings <ben.hutchings@codethink.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'fs/f2fs/super.c')
-rw-r--r-- | fs/f2fs/super.c | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/fs/f2fs/super.c b/fs/f2fs/super.c index 88a769d719ca..3d5c8a60ac6e 100644 --- a/fs/f2fs/super.c +++ b/fs/f2fs/super.c @@ -1457,14 +1457,24 @@ try_onemore: if (need_fsck) set_sbi_flag(sbi, SBI_NEED_FSCK); - err = recover_fsync_data(sbi); - if (err) { + err = recover_fsync_data(sbi, false); + if (err < 0) { need_fsck = true; f2fs_msg(sb, KERN_ERR, "Cannot recover all fsync data errno=%ld", err); goto free_kobj; } + } else { + err = recover_fsync_data(sbi, true); + + if (!f2fs_readonly(sb) && err > 0) { + err = -EINVAL; + f2fs_msg(sb, KERN_ERR, + "Need to recover fsync data"); + goto free_kobj; + } } + /* recover_fsync_data() cleared this already */ clear_sbi_flag(sbi, SBI_POR_DOING); |