To ensure that bits are truly on-disk after an fsync,
we should call blkdev_issue_flush if barriers are supported.
Inspired by an old thread on barriers, by reiserfs & xfs
which do the same, and by a patch SuSE ships with their kernel
Signed-off-by: Eric Sandeen <sandeen@redhat.com>
---
fs/ext4/fsync.c | 4 ++++
1 files changed, 4 insertions(+), 0 deletions(-)
diff --git a/fs/ext4/fsync.c b/fs/ext4/fsync.c
index 1c8ba48..a45c373 100644
--- a/fs/ext4/fsync.c
+++ b/fs/ext4/fsync.c
@@ -27,6 +27,7 @@
#include <linux/sched.h>
#include <linux/writeback.h>
#include <linux/jbd2.h>
+#include <linux/blkdev.h>
#include "ext4.h"
#include "ext4_jbd2.h"
@@ -45,6 +46,7 @@
int ext4_sync_file(struct file * file, struct dentry *dentry, int datasync)
{
struct inode *inode = dentry->d_inode;
+ journal_t *journal = EXT4_SB(inode->i_sb)->s_journal;
int ret = 0;
J_ASSERT(ext4_journal_current_handle() == NULL);
@@ -85,6 +87,8 @@ int ext4_sync_file(struct file * file, struct dentry *dentry, int datasync)
.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:
return ret;
-- 1.5.3.6
--
| Satyam Sharma | Re: 2.6.23-rc6-mm1 |
| Robin Lee Powell | NFS hang + umount -f: better behaviour requested. |
| Tarkan Erimer | Re: Dual-Licensing Linux Kernel with GPL V2 and GPL V3 |
| Michal Piotrowski | Re: 2.6.22-rc4-mm2 |
git: | |
| Shawn Pearce | Re: [RFC] Submodules in GIT |
| Linus Torvalds | People unaware of the importance of "git gc"? |
| Martin Langhoff | Handling large files with GIT |
| Pierre Habouzit | [PATCH] git-revert is one of the most misunderstood command in git, help users out. |
| GVG GVG | ssh_exchange_identification: Connection closed by remote host |
| Douglas A. Tutty | OBSD's perspective on SELinux |
| askthelist | Packets Per Second Limit? |
| Christophe Rioux | OpenBSD as host for VMWare Server |
| Daniel J Blueman | [sky2, solved] transmit timeouts and firmware update... |
| Octavian Purdila | [RFC] support for IEEE 1588 |
| Johann Baudy | Packet mmap: TX RING and zero copy |
| Evgeniy Polyakov | [resend take 2 0/4] Distributed storage. |
