X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=fs%2Fext4%2Ffsync.c;h=1c8ba48d4f8d6014e5708b44706640e3e29a11e9;hb=a0abb93bf9dc590b031a1123f3e6c6c225c1cdd1;hp=2a167d7131fa38feec17d647bbbdefbb98b6b601;hpb=9eb200748878751310cd9848c5dd4d467960beec;p=linux-2.6 diff --git a/fs/ext4/fsync.c b/fs/ext4/fsync.c index 2a167d7131..1c8ba48d4f 100644 --- a/fs/ext4/fsync.c +++ b/fs/ext4/fsync.c @@ -27,8 +27,8 @@ #include #include #include -#include -#include +#include "ext4.h" +#include "ext4_jbd2.h" /* * akpm: A new design for ext4_sync_file(). @@ -47,7 +47,7 @@ int ext4_sync_file(struct file * file, struct dentry *dentry, int datasync) struct inode *inode = dentry->d_inode; int ret = 0; - J_ASSERT(ext4_journal_current_handle() == 0); + J_ASSERT(ext4_journal_current_handle() == NULL); /* * data=writeback: @@ -72,6 +72,9 @@ int ext4_sync_file(struct file * file, struct dentry *dentry, int datasync) goto out; } + if (datasync && !(inode->i_state & I_DIRTY_DATASYNC)) + goto out; + /* * The VFS has written the file data. If the inode is unaltered * then we need not start a commit.