diff options
author | Jaegeuk Kim <jaegeuk@kernel.org> | 2016-03-23 16:12:58 -0700 |
---|---|---|
committer | Jaegeuk Kim <jaegeuk@kernel.org> | 2016-04-15 08:49:47 -0700 |
commit | 6781eabba1bdb133eb9125c4acf6704ccbe4df02 (patch) | |
tree | f20bf831b5fdfc4390beae29976a6f90dda1502f /fs/f2fs/super.c | |
parent | df728b0f6954c38545f4bf12dedeeb9e07469a94 (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.c | 14 |
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); |