summaryrefslogtreecommitdiff
path: root/fs/sync.c
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2015-02-18 05:48:51 +0300
committerDavid S. Miller <davem@davemloft.net>2015-02-18 05:48:51 +0300
commitfece13ca005a5f559147e9424321f4b5e01272b4 (patch)
tree54e762e70afb664d14152e6bcf89a48be3fb9c13 /fs/sync.c
parent855e7e7174bade3f2b63077a81eea5aab525dbf6 (diff)
parentf5af19d10d151c5a2afae3306578f485c244db25 (diff)
downloadlinux-fece13ca005a5f559147e9424321f4b5e01272b4.tar.xz
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
Diffstat (limited to 'fs/sync.c')
-rw-r--r--fs/sync.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/fs/sync.c b/fs/sync.c
index 01d9f18a70b5..fbc98ee62044 100644
--- a/fs/sync.c
+++ b/fs/sync.c
@@ -177,8 +177,16 @@ SYSCALL_DEFINE1(syncfs, int, fd)
*/
int vfs_fsync_range(struct file *file, loff_t start, loff_t end, int datasync)
{
+ struct inode *inode = file->f_mapping->host;
+
if (!file->f_op->fsync)
return -EINVAL;
+ if (!datasync && (inode->i_state & I_DIRTY_TIME)) {
+ spin_lock(&inode->i_lock);
+ inode->i_state &= ~I_DIRTY_TIME;
+ spin_unlock(&inode->i_lock);
+ mark_inode_dirty_sync(inode);
+ }
return file->f_op->fsync(file, start, end, datasync);
}
EXPORT_SYMBOL(vfs_fsync_range);