aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--fs/f2fs/node.c15
1 files changed, 7 insertions, 8 deletions
diff --git a/fs/f2fs/node.c b/fs/f2fs/node.c
index 093d7991b7ed..151045f3e7b7 100644
--- a/fs/f2fs/node.c
+++ b/fs/f2fs/node.c
@@ -1557,26 +1557,25 @@ void recover_inline_xattr(struct inode *inode, struct page *page)
1557 struct page *ipage; 1557 struct page *ipage;
1558 struct f2fs_inode *ri; 1558 struct f2fs_inode *ri;
1559 1559
1560 if (!f2fs_has_inline_xattr(inode))
1561 return;
1562
1563 if (!IS_INODE(page)) 1560 if (!IS_INODE(page))
1564 return; 1561 return;
1565 1562
1566 ri = F2FS_INODE(page);
1567 if (!(ri->i_inline & F2FS_INLINE_XATTR))
1568 return;
1569
1570 ipage = get_node_page(sbi, inode->i_ino); 1563 ipage = get_node_page(sbi, inode->i_ino);
1571 f2fs_bug_on(IS_ERR(ipage)); 1564 f2fs_bug_on(IS_ERR(ipage));
1572 1565
1566 ri = F2FS_INODE(page);
1567 if (!(ri->i_inline & F2FS_INLINE_XATTR)) {
1568 clear_inode_flag(F2FS_I(inode), FI_INLINE_XATTR);
1569 goto update_inode;
1570 }
1571
1573 dst_addr = inline_xattr_addr(ipage); 1572 dst_addr = inline_xattr_addr(ipage);
1574 src_addr = inline_xattr_addr(page); 1573 src_addr = inline_xattr_addr(page);
1575 inline_size = inline_xattr_size(inode); 1574 inline_size = inline_xattr_size(inode);
1576 1575
1577 f2fs_wait_on_page_writeback(ipage, NODE); 1576 f2fs_wait_on_page_writeback(ipage, NODE);
1578 memcpy(dst_addr, src_addr, inline_size); 1577 memcpy(dst_addr, src_addr, inline_size);
1579 1578update_inode:
1580 update_inode(inode, ipage); 1579 update_inode(inode, ipage);
1581 f2fs_put_page(ipage, 1); 1580 f2fs_put_page(ipage, 1);
1582} 1581}