f2fs: don't need to update inode checksum for recovery
Subsystems (2)
Jaegeuk Kim
maintainerPATCH 1/2 f2fs: don't need to update inode checksum for recovery
This patch fixes "f2fs: support inode checksum".
The recovered inode page will be rewritten with valid checksum.
--- fs/f2fs/node.c | 2 -- 1 file changed, 2 deletions(-)
fs/f2fs/node.c +0 -2
@@ -2287,8 +2287,6 @@ int recover_inode_page(struct f2fs_sb_info *sbi, struct page *page)F2FS_FITS_IN_INODE (src,le16_to_cpu (src->i_extra_isize), i_projid)) dst->i_projid = src->i_projid; - -f2fs_inode_chksum_set (sbi, ipage); } new_ni = old_ni;
Signature · 1 line
2.14.0.rc1.383.gd1ce394fe2-goog
Jaegeuk Kim
maintainerPATCH 2/2 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.
--- fs/f2fs/inode.c | 3 ++- fs/f2fs/node.c | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-)
fs/f2fs/inode.c +2 -1
@@ -153,7 +153,8 @@ bool f2fs_inode_chksum_verify(struct f2fs_sb_info *sbi, struct page *page)struct f2fs_inode *ri;__u32 provided, calculated; -if (!f2fs_enable_inode_chksum (sbi, page)) +if (!f2fs_enable_inode_chksum (sbi, page) || +PageDirty (page) ||PageWriteback (page))return true; ri = &F2FS_NODE (page)->i;
fs/f2fs/node.c +1 -1
@@ -1187,9 +1187,9 @@ static struct page *__get_node_page(struct f2fs_sb_info *sbi, pgoff_t nid, nid,nid_of_node (page),ino_of_node (page),ofs_of_node (page),cpver_of_node (page), next_blkaddr_of_node(page)); -ClearPageUptodate (page); err = -EINVAL ; out_err: +ClearPageUptodate (page);f2fs_put_page (page,1 );return ERR_PTR (err); }
Signature · 1 line
2.14.0.rc1.383.gd1ce394fe2-goog
Re: [f2fs-dev] [PATCH 2/2] f2fs: don't check inode's checksum if it was dirtied or writebacked
Quoted 4 lines · Jaegeuk Kim
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.
Signed-off-by Jaegeuk Kim <[email protected]>
Quoted 35 lines
--- fs/f2fs/inode.c | 3 ++- fs/f2fs/node.c | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-)fs/f2fs/inode.c +2
-1@@ -153,7 +153,8 @@ bool f2fs_inode_chksum_verify(struct f2fs_sb_info *sbi, struct page *page)struct f2fs_inode *ri;__u32 provided, calculated; -if (!f2fs_enable_inode_chksum (sbi, page)) +if (!f2fs_enable_inode_chksum (sbi, page) || +PageDirty (page) ||PageWriteback (page))return true; ri = &F2FS_NODE (page)->i;fs/f2fs/node.c +1
-1@@ -1187,9 +1187,9 @@ static struct page *__get_node_page(struct f2fs_sb_info *sbi, pgoff_t nid, nid,nid_of_node (page),ino_of_node (page),ofs_of_node (page),cpver_of_node (page), next_blkaddr_of_node(page)); -ClearPageUptodate (page); err = -EINVAL ; out_err: +ClearPageUptodate (page);f2fs_put_page (page,1 );return ERR_PTR (err); }
Quoted 4 lines · Jaegeuk Kim
This patch fixes "f2fs: support inode checksum".
The recovered inode page will be rewritten with valid checksum.Signed-off-by Jaegeuk Kim <[email protected]>
Quoted 18 lines
--- fs/f2fs/node.c | 2 -- 1 file changed, 2 deletions(-)fs/f2fs/node.c +0
-2@@ -2287,8 +2287,6 @@ int recover_inode_page(struct f2fs_sb_info *sbi, struct page *page)F2FS_FITS_IN_INODE (src,le16_to_cpu (src->i_extra_isize), i_projid)) dst->i_projid = src->i_projid; - -f2fs_inode_chksum_set (sbi, ipage); } new_ni = old_ni;