From 5f0cdda872593a7babb74ec77012ca5183670a37 Mon Sep 17 00:00:00 2001 From: Jan Kara Date: Thu, 5 Aug 2010 20:32:45 +0200 Subject: [PATCH] --- yaml --- r: 210384 b: refs/heads/master c: 04eda1a18019bb387dc7e97ee99979dd88dc608a h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/fs/ocfs2/file.c | 11 ++++++++++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index af799c00b43c..7f38bdb866de 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: f63afdb2c32db850fa1bfccf84643a8885cbeb61 +refs/heads/master: 04eda1a18019bb387dc7e97ee99979dd88dc608a diff --git a/trunk/fs/ocfs2/file.c b/trunk/fs/ocfs2/file.c index 81296b4e3646..6b2be0f2eacd 100644 --- a/trunk/fs/ocfs2/file.c +++ b/trunk/fs/ocfs2/file.c @@ -36,6 +36,7 @@ #include #include #include +#include #define MLOG_MASK_PREFIX ML_INODE #include @@ -190,8 +191,16 @@ static int ocfs2_sync_file(struct file *file, int datasync) if (err) goto bail; - if (datasync && !(inode->i_state & I_DIRTY_DATASYNC)) + if (datasync && !(inode->i_state & I_DIRTY_DATASYNC)) { + /* + * We still have to flush drive's caches to get data to the + * platter + */ + if (osb->s_mount_opt & OCFS2_MOUNT_BARRIER) + blkdev_issue_flush(inode->i_sb->s_bdev, GFP_KERNEL, + NULL, BLKDEV_IFL_WAIT); goto bail; + } journal = osb->journal->j_journal; err = jbd2_journal_force_commit(journal);