]> git.proxmox.com Git - mirror_ubuntu-artful-kernel.git/blobdiff - fs/f2fs/file.c
f2fs: fix to write node pages with WRITE_SYNC
[mirror_ubuntu-artful-kernel.git] / fs / f2fs / file.c
index 0dfcef53a6ed830e442f8c174ea166b0d1b2eabd..a4cc1d6bdd848f8f402d02286ecbd140855223d2 100644 (file)
@@ -115,7 +115,7 @@ int f2fs_sync_file(struct file *file, loff_t start, loff_t end, int datasync)
        int ret = 0;
        bool need_cp = false;
        struct writeback_control wbc = {
-               .sync_mode = WB_SYNC_NONE,
+               .sync_mode = WB_SYNC_ALL,
                .nr_to_write = LONG_MAX,
                .for_reclaim = 0,
        };
@@ -560,6 +560,8 @@ static long f2fs_fallocate(struct file *file, int mode,
        if (mode & ~(FALLOC_FL_KEEP_SIZE | FALLOC_FL_PUNCH_HOLE))
                return -EOPNOTSUPP;
 
+       mutex_lock(&inode->i_mutex);
+
        if (mode & FALLOC_FL_PUNCH_HOLE)
                ret = punch_hole(inode, offset, len);
        else
@@ -569,6 +571,9 @@ static long f2fs_fallocate(struct file *file, int mode,
                inode->i_mtime = inode->i_ctime = CURRENT_TIME;
                mark_inode_dirty(inode);
        }
+
+       mutex_unlock(&inode->i_mutex);
+
        trace_f2fs_fallocate(inode, mode, offset, len, ret);
        return ret;
 }