[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <20090831193553.GA2672@lst.de>
Date: Mon, 31 Aug 2009 21:35:53 +0200
From: Christoph Hellwig <hch@....de>
To: linux-ext4@...r.kernel.org
Subject: [PATCH] ext4: fix cache flish in ext4_sync_file
We need to flush the write cache unconditionally in ->fsync, otherwise
writes into already allocated blocks can get lost. Writes into fully
allocated files are very common when using disk images for
virtualization, and without this fix can easily lose data after
an fdatasync, which is the typical implementation for a cache flush on
the virtual drive.
Signed-off-by: Christoph Hellwig <hch@....de>
Index: linux-2.6/fs/ext4/fsync.c
===================================================================
--- linux-2.6.orig/fs/ext4/fsync.c
+++ linux-2.6/fs/ext4/fsync.c
@@ -92,9 +92,9 @@ int ext4_sync_file(struct file *file, st
.nr_to_write = 0, /* sys_fsync did this */
};
ret = sync_inode(inode, &wbc);
- if (journal && (journal->j_flags & JBD2_BARRIER))
- blkdev_issue_flush(inode->i_sb->s_bdev, NULL);
}
out:
+ if (journal && (journal->j_flags & JBD2_BARRIER))
+ blkdev_issue_flush(inode->i_sb->s_bdev, NULL);
return ret;
}
--
To unsubscribe from this list: send the line "unsubscribe linux-ext4" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists