f2fs: remain written times to update inode during fsync
[linux-2.6-microblaze.git] / fs / f2fs / inode.c
index 205add3..e0d9e8f 100644 (file)
@@ -284,6 +284,10 @@ static int do_read_inode(struct inode *inode)
                fi->i_crtime.tv_nsec = le32_to_cpu(ri->i_crtime_nsec);
        }
 
+       F2FS_I(inode)->i_disk_time[0] = inode->i_atime;
+       F2FS_I(inode)->i_disk_time[1] = inode->i_ctime;
+       F2FS_I(inode)->i_disk_time[2] = inode->i_mtime;
+       F2FS_I(inode)->i_disk_time[3] = F2FS_I(inode)->i_crtime;
        f2fs_put_page(node_page, 1);
 
        stat_inc_inline_xattr(inode);
@@ -328,7 +332,7 @@ make_now:
                inode->i_op = &f2fs_dir_inode_operations;
                inode->i_fop = &f2fs_dir_operations;
                inode->i_mapping->a_ops = &f2fs_dblock_aops;
-               mapping_set_gfp_mask(inode->i_mapping, GFP_F2FS_HIGH_ZERO);
+               inode_nohighmem(inode);
        } else if (S_ISLNK(inode->i_mode)) {
                if (f2fs_encrypted_inode(inode))
                        inode->i_op = &f2fs_encrypted_symlink_inode_operations;
@@ -439,12 +443,15 @@ void update_inode(struct inode *inode, struct page *node_page)
        }
 
        __set_inode_rdev(inode, ri);
-       set_cold_node(inode, node_page);
 
        /* deleted inode */
        if (inode->i_nlink == 0)
                clear_inline_node(node_page);
 
+       F2FS_I(inode)->i_disk_time[0] = inode->i_atime;
+       F2FS_I(inode)->i_disk_time[1] = inode->i_ctime;
+       F2FS_I(inode)->i_disk_time[2] = inode->i_mtime;
+       F2FS_I(inode)->i_disk_time[3] = F2FS_I(inode)->i_crtime;
 }
 
 void update_inode_page(struct inode *inode)