Also, if we are going to issue the barrier, we should do this after we
write out the parent directories if necessary.
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
Reviewed-by: Jan Kara <jack@suse.cz>
        }
 
        if (!journal) {
-               ret = generic_file_fsync(file, start, end, datasync);
+               ret = __generic_file_fsync(file, start, end, datasync);
                if (!ret && !hlist_empty(&inode->i_dentry))
                        ret = ext4_sync_parent(inode);
+               if (test_opt(inode->i_sb, BARRIER))
+                       goto issue_flush;
                goto out;
        }
 
                needs_barrier = true;
        ret = jbd2_complete_transaction(journal, commit_tid);
        if (needs_barrier) {
+       issue_flush:
                err = blkdev_issue_flush(inode->i_sb->s_bdev, GFP_KERNEL, NULL);
                if (!ret)
                        ret = err;