f2fs: introduce cur_cp_version function to reduce code size
[deliverable/linux.git] / fs / f2fs / file.c
index 157a6357f14c32bf2398c64338e980f53589b83f..bd4184e3552503712a6726abdc8bc28367e58bc1 100644 (file)
@@ -112,11 +112,13 @@ static int get_parent_ino(struct inode *inode, nid_t *pino)
        if (!dentry)
                return 0;
 
-       inode = igrab(dentry->d_parent->d_inode);
-       dput(dentry);
+       if (update_dent_inode(inode, &dentry->d_name)) {
+               dput(dentry);
+               return 0;
+       }
 
-       *pino = inode->i_ino;
-       iput(inode);
+       *pino = parent_ino(dentry);
+       dput(dentry);
        return 1;
 }
 
@@ -159,10 +161,14 @@ int f2fs_sync_file(struct file *file, loff_t start, loff_t end, int datasync)
                need_cp = true;
        else if (!is_checkpointed_node(sbi, F2FS_I(inode)->i_pino))
                need_cp = true;
+       else if (F2FS_I(inode)->xattr_ver == cur_cp_version(F2FS_CKPT(sbi)))
+               need_cp = true;
 
        if (need_cp) {
                nid_t pino;
 
+               F2FS_I(inode)->xattr_ver = 0;
+
                /* all the dirty node pages should be flushed for POR */
                ret = f2fs_sync_fs(inode->i_sb, 1);
                if (file_wrong_pino(inode) && inode->i_nlink == 1 &&
@@ -206,7 +212,7 @@ int truncate_data_blocks_range(struct dnode_of_data *dn, int count)
        struct f2fs_node *raw_node;
        __le32 *addr;
 
-       raw_node = page_address(dn->node_page);
+       raw_node = F2FS_NODE(dn->node_page);
        addr = blkaddr_in_node(raw_node) + ofs;
 
        for ( ; count > 0; count--, addr++, dn->ofs_in_node++) {
This page took 0.036323 seconds and 5 git commands to generate.