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