diff options
author | Christoph Hellwig <hch@tuxera.com> | 2010-11-23 14:38:21 +0100 |
---|---|---|
committer | Christoph Hellwig <hch@lst.de> | 2010-11-23 14:38:21 +0100 |
commit | 34a2d313c51f47cae50ccb89f4196462665f2c48 (patch) | |
tree | c641c7bd24b9e343139a3e1c4d81e51822114cd9 /fs/hfsplus/inode.c | |
parent | hfsplus: optimize fsync (diff) | |
download | linux-34a2d313c51f47cae50ccb89f4196462665f2c48.tar.xz linux-34a2d313c51f47cae50ccb89f4196462665f2c48.zip |
hfsplus: flush disk caches in sync and fsync
Flush the disk cache in fsync and sync to make sure data actually is
on disk on completion of these system calls. There is a nobarrier
mount option to disable this behaviour. It's slightly misnamed now
that barrier actually are gone, but it matches the name used by all
major filesystems.
Signed-off-by: Christoph Hellwig <hch@tuxera.com>
Diffstat (limited to 'fs/hfsplus/inode.c')
-rw-r--r-- | fs/hfsplus/inode.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/fs/hfsplus/inode.c b/fs/hfsplus/inode.c index bf6535b73261..bda7464c205d 100644 --- a/fs/hfsplus/inode.c +++ b/fs/hfsplus/inode.c @@ -8,6 +8,7 @@ * Inode handling routines */ +#include <linux/blkdev.h> #include <linux/mm.h> #include <linux/fs.h> #include <linux/pagemap.h> @@ -334,6 +335,9 @@ int hfsplus_file_fsync(struct file *file, int datasync) error = error2; } + if (!test_bit(HFSPLUS_SB_NOBARRIER, &sbi->flags)) + blkdev_issue_flush(inode->i_sb->s_bdev, GFP_KERNEL, NULL); + return error; } |