mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-09-18 22:14:16 +00:00
f2fs: fix to avoid changing 'check only' behaior of recovery
The following two 'check only recovery' processes are very dependent on the return value of f2fs_recover_fsync_data, especially when the return value is greater than 0. 1. when device has readonly mode, shown as commit23738e7447
("f2fs: fix to restrict mount condition on readonly block device") 2. mount optiont NORECOVERY or DISABLE_ROLL_FORWARD is set, shown as commit6781eabba1
("f2fs: give -EINVAL for norecovery and rw mount") However, commitc426d99127
("f2fs: Check write pointer consistency of open zones") will change the return value unexpectedly, thereby changing the caller's behavior This patch let the f2fs_recover_fsync_data return correct value,and not do f2fs_check_and_fix_write_pointer when the device is read-only. Fixes:c426d99127
("f2fs: Check write pointer consistency of open zones") Signed-off-by: Zhiguo Niu <zhiguo.niu@unisoc.com> Reviewed-by: Chao Yu <chao@kernel.org> Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
This commit is contained in:
parent
6d4008dc4a
commit
edf3c08600
2 changed files with 3 additions and 4 deletions
|
@ -899,10 +899,8 @@ skip:
|
|||
* and the f2fs is not read only, check and fix zoned block devices'
|
||||
* write pointer consistency.
|
||||
*/
|
||||
if (!err) {
|
||||
if (!err)
|
||||
err = f2fs_check_and_fix_write_pointer(sbi);
|
||||
ret = err;
|
||||
}
|
||||
|
||||
if (!err)
|
||||
clear_sbi_flag(sbi, SBI_POR_DOING);
|
||||
|
|
|
@ -5462,7 +5462,8 @@ int f2fs_check_and_fix_write_pointer(struct f2fs_sb_info *sbi)
|
|||
{
|
||||
int ret;
|
||||
|
||||
if (!f2fs_sb_has_blkzoned(sbi) || f2fs_readonly(sbi->sb))
|
||||
if (!f2fs_sb_has_blkzoned(sbi) || f2fs_readonly(sbi->sb) ||
|
||||
f2fs_hw_is_readonly(sbi))
|
||||
return 0;
|
||||
|
||||
f2fs_notice(sbi, "Checking entire write pointers");
|
||||
|
|
Loading…
Add table
Reference in a new issue