Christoph Hellwig wrote: > 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@xxxxxx> Given that I tried to do the same thing 1.5 years ago (though not quite correctly) ... Acked-by: Eric Sandeen <sandeen@xxxxxxxxxx> > > Index: linux-2.6/fs/ext3/fsync.c > =================================================================== > --- linux-2.6.orig/fs/ext3/fsync.c > +++ linux-2.6/fs/ext3/fsync.c > @@ -23,6 +23,7 @@ > */ > > #include <linux/time.h> > +#include <linux/blkdev.h> > #include <linux/fs.h> > #include <linux/sched.h> > #include <linux/writeback.h> > @@ -87,5 +88,7 @@ int ext3_sync_file(struct file * file, s > ret = sync_inode(inode, &wbc); > } > out: > + if (test_opt(inode->i_sb, 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@xxxxxxxxxxxxxxx > More majordomo info at http://vger.kernel.org/majordomo-info.html -- To unsubscribe from this list: send the line "unsubscribe linux-ext4" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html