summaryrefslogtreecommitdiff
path: root/fs/f2fs/super.c
diff options
context:
space:
mode:
authorJaegeuk Kim <jaegeuk@kernel.org>2016-03-23 16:12:58 -0700
committerJaegeuk Kim <jaegeuk@kernel.org>2016-04-15 08:49:47 -0700
commit6781eabba1bdb133eb9125c4acf6704ccbe4df02 (patch)
treef20bf831b5fdfc4390beae29976a6f90dda1502f /fs/f2fs/super.c
parentdf728b0f6954c38545f4bf12dedeeb9e07469a94 (diff)
f2fs: give -EINVAL for norecovery and rw mount
Once detecting something to recover, f2fs should stop mounting, given norecovery and rw mount options. Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Diffstat (limited to 'fs/f2fs/super.c')
-rw-r--r--fs/f2fs/super.c14
1 files changed, 12 insertions, 2 deletions
diff --git a/fs/f2fs/super.c b/fs/f2fs/super.c
index f5fbbfdb3d93..8f9648ffbbc3 100644
--- a/fs/f2fs/super.c
+++ b/fs/f2fs/super.c
@@ -1562,14 +1562,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);