diff options
author | Jaegeuk Kim <jaegeuk@kernel.org> | 2014-08-08 02:45:42 -0400 |
---|---|---|
committer | Jaegeuk Kim <jaegeuk@kernel.org> | 2014-08-19 13:01:34 -0400 |
commit | e3b4d43f7c233c6fce21fe4b4cb55b6d59afddae (patch) | |
tree | 4fea68166a571a4601837eab4a1e425bfe98514b /fs | |
parent | 695facc05a3eaaf434911dc5dbbc3e6c6a4e1862 (diff) |
f2fs: should clear the inline_xattr flag
During the recovery, we should clear the inline_xattr flag if its xattr node
block is recovered.
Reviewed-by: Chao Yu <chao2.yu@samsung.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Diffstat (limited to 'fs')
-rw-r--r-- | fs/f2fs/node.c | 15 |
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 | 1578 | update_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 | } |