diff options
-rw-r--r-- | fs/f2fs/inode.c | 6 | ||||
-rw-r--r-- | fs/f2fs/node.c | 2 |
2 files changed, 7 insertions, 1 deletions
diff --git a/fs/f2fs/inode.c b/fs/f2fs/inode.c index 959df2249875..dd608b819a3c 100644 --- a/fs/f2fs/inode.c +++ b/fs/f2fs/inode.c @@ -368,6 +368,12 @@ static int do_read_inode(struct inode *inode) if (f2fs_has_inline_data(inode) && !f2fs_exist_data(inode)) __recover_inline_status(inode, node_page); + /* try to recover cold bit for non-dir inode */ + if (!S_ISDIR(inode->i_mode) && !is_cold_node(node_page)) { + set_cold_node(node_page, false); + set_page_dirty(node_page); + } + /* get rdev by using inline_info */ __get_inode_rdev(inode, ri); diff --git a/fs/f2fs/node.c b/fs/f2fs/node.c index 96e6f47862a5..42ea42acb487 100644 --- a/fs/f2fs/node.c +++ b/fs/f2fs/node.c @@ -2539,7 +2539,7 @@ retry: if (!PageUptodate(ipage)) SetPageUptodate(ipage); fill_node_footer(ipage, ino, ino, 0, true); - set_cold_node(page, false); + set_cold_node(ipage, false); src = F2FS_INODE(page); dst = F2FS_INODE(ipage); |