Merge tag 'ftracetest-3.18' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt...
[firefly-linux-kernel-4.4.55.git] / fs / f2fs / inline.c
index 3e8ecdf3742b18d72eba2e9c780f2c6e8d215c5e..88036fd75797f8bdfb65a91f25b8c6339cc089fc 100644 (file)
 
 bool f2fs_may_inline(struct inode *inode)
 {
-       struct f2fs_sb_info *sbi = F2FS_SB(inode->i_sb);
        block_t nr_blocks;
        loff_t i_size;
 
-       if (!test_opt(sbi, INLINE_DATA))
+       if (!test_opt(F2FS_I_SB(inode), INLINE_DATA))
+               return false;
+
+       if (f2fs_is_atomic_file(inode))
                return false;
 
        nr_blocks = F2FS_I(inode)->i_xattr_nid ? 3 : 2;
@@ -35,7 +37,6 @@ bool f2fs_may_inline(struct inode *inode)
 
 int f2fs_read_inline_data(struct inode *inode, struct page *page)
 {
-       struct f2fs_sb_info *sbi = F2FS_SB(inode->i_sb);
        struct page *ipage;
        void *src_addr, *dst_addr;
 
@@ -44,7 +45,7 @@ int f2fs_read_inline_data(struct inode *inode, struct page *page)
                goto out;
        }
 
-       ipage = get_node_page(sbi, inode->i_ino);
+       ipage = get_node_page(F2FS_I_SB(inode), inode->i_ino);
        if (IS_ERR(ipage)) {
                unlock_page(page);
                return PTR_ERR(ipage);
@@ -73,7 +74,7 @@ static int __f2fs_convert_inline_data(struct inode *inode, struct page *page)
        struct dnode_of_data dn;
        void *src_addr, *dst_addr;
        block_t new_blk_addr;
-       struct f2fs_sb_info *sbi = F2FS_SB(inode->i_sb);
+       struct f2fs_sb_info *sbi = F2FS_I_SB(inode);
        struct f2fs_io_info fio = {
                .type = DATA,
                .rw = WRITE_SYNC | REQ_PRIO,
@@ -189,13 +190,12 @@ int f2fs_write_inline_data(struct inode *inode,
 
 void truncate_inline_data(struct inode *inode, u64 from)
 {
-       struct f2fs_sb_info *sbi = F2FS_SB(inode->i_sb);
        struct page *ipage;
 
        if (from >= MAX_INLINE_DATA)
                return;
 
-       ipage = get_node_page(sbi, inode->i_ino);
+       ipage = get_node_page(F2FS_I_SB(inode), inode->i_ino);
        if (IS_ERR(ipage))
                return;
 
@@ -209,7 +209,7 @@ void truncate_inline_data(struct inode *inode, u64 from)
 
 bool recover_inline_data(struct inode *inode, struct page *npage)
 {
-       struct f2fs_sb_info *sbi = F2FS_SB(inode->i_sb);
+       struct f2fs_sb_info *sbi = F2FS_I_SB(inode);
        struct f2fs_inode *ri = NULL;
        void *src_addr, *dst_addr;
        struct page *ipage;
@@ -229,7 +229,7 @@ bool recover_inline_data(struct inode *inode, struct page *npage)
                        ri && (ri->i_inline & F2FS_INLINE_DATA)) {
 process_inline:
                ipage = get_node_page(sbi, inode->i_ino);
-               f2fs_bug_on(IS_ERR(ipage));
+               f2fs_bug_on(sbi, IS_ERR(ipage));
 
                f2fs_wait_on_page_writeback(ipage, NODE);
 
@@ -243,7 +243,7 @@ process_inline:
 
        if (f2fs_has_inline_data(inode)) {
                ipage = get_node_page(sbi, inode->i_ino);
-               f2fs_bug_on(IS_ERR(ipage));
+               f2fs_bug_on(sbi, IS_ERR(ipage));
                f2fs_wait_on_page_writeback(ipage, NODE);
                zero_user_segment(ipage, INLINE_DATA_OFFSET,
                                 INLINE_DATA_OFFSET + MAX_INLINE_DATA);