f2fs: invalidate xattr node page when evict inode
authorChao Yu <chao2.yu@samsung.com>
Mon, 4 Aug 2014 01:54:58 +0000 (09:54 +0800)
committerJaegeuk Kim <jaegeuk@kernel.org>
Mon, 4 Aug 2014 20:01:22 +0000 (13:01 -0700)
When inode is evicted, all the page cache belong to this inode should be
released including the xattr node page. But previously we didn't do this, this
patch fixed this issue.

v2:
 o reposition invalidate_mapping_pages() to the right place suggested by
Jaegeuk Kim.

Signed-off-by: Chao Yu <chao2.yu@samsung.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
fs/f2fs/inode.c

index 0e69aa90238dc0472700509f9ed5e1873d5b3466..2c39999f386848669d217dfb6891b9f78fcdcda6 100644 (file)
@@ -267,6 +267,7 @@ int f2fs_write_inode(struct inode *inode, struct writeback_control *wbc)
 void f2fs_evict_inode(struct inode *inode)
 {
        struct f2fs_sb_info *sbi = F2FS_SB(inode->i_sb);
+       nid_t xnid = F2FS_I(inode)->i_xattr_nid;
 
        trace_f2fs_evict_inode(inode);
        truncate_inode_pages_final(&inode->i_data);
@@ -296,6 +297,8 @@ void f2fs_evict_inode(struct inode *inode)
        sb_end_intwrite(inode->i_sb);
 no_delete:
        invalidate_mapping_pages(NODE_MAPPING(sbi), inode->i_ino, inode->i_ino);
+       if (xnid)
+               invalidate_mapping_pages(NODE_MAPPING(sbi), xnid, xnid);
        if (is_inode_flag_set(F2FS_I(inode), FI_APPEND_WRITE))
                add_dirty_inode(sbi, inode->i_ino, APPEND_INO);
        if (is_inode_flag_set(F2FS_I(inode), FI_UPDATE_WRITE))