f2fs: don't check inode's checksum if it was dirtied or writebacked

If another thread already made the page dirtied or writebacked, we must avoid
to verify checksum. If we got an error, we need to remove its uptodate as well.

Reviewed-by: Chao Yu <yuchao0@huawei.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>

+3 -2
+2 -1
fs/f2fs/inode.c
··· 153 153 struct f2fs_inode *ri; 154 154 __u32 provided, calculated; 155 155 156 - if (!f2fs_enable_inode_chksum(sbi, page)) 156 + if (!f2fs_enable_inode_chksum(sbi, page) || 157 + PageDirty(page) || PageWriteback(page)) 157 158 return true; 158 159 159 160 ri = &F2FS_NODE(page)->i;
+1 -1
fs/f2fs/node.c
··· 1187 1187 nid, nid_of_node(page), ino_of_node(page), 1188 1188 ofs_of_node(page), cpver_of_node(page), 1189 1189 next_blkaddr_of_node(page)); 1190 - ClearPageUptodate(page); 1191 1190 err = -EINVAL; 1192 1191 out_err: 1192 + ClearPageUptodate(page); 1193 1193 f2fs_put_page(page, 1); 1194 1194 return ERR_PTR(err); 1195 1195 }