aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/staging/pohmelfs/inode.c
diff options
context:
space:
mode:
authorDmitry Torokhov <dmitry.torokhov@gmail.com>2011-09-07 14:18:36 -0700
committerDmitry Torokhov <dmitry.torokhov@gmail.com>2011-09-07 14:18:36 -0700
commit7e66eaf14e19c032433be7c4df3c892fa2a5282f (patch)
tree56b0d5f9d16eb18744e102f3f216715196cd62e6 /drivers/staging/pohmelfs/inode.c
parentInput: tsc2007 - add open and close methods (diff)
parentLinux 3.1-rc4 (diff)
downloadlinux-dev-7e66eaf14e19c032433be7c4df3c892fa2a5282f.tar.xz
linux-dev-7e66eaf14e19c032433be7c4df3c892fa2a5282f.zip
Merge commit 'v3.1-rc4' into next
Diffstat (limited to 'drivers/staging/pohmelfs/inode.c')
-rw-r--r--drivers/staging/pohmelfs/inode.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/drivers/staging/pohmelfs/inode.c b/drivers/staging/pohmelfs/inode.c
index c0f0ac7c1cdb..f3c6060c96b8 100644
--- a/drivers/staging/pohmelfs/inode.c
+++ b/drivers/staging/pohmelfs/inode.c
@@ -887,11 +887,16 @@ static struct inode *pohmelfs_alloc_inode(struct super_block *sb)
/*
* We want fsync() to work on POHMELFS.
*/
-static int pohmelfs_fsync(struct file *file, int datasync)
+static int pohmelfs_fsync(struct file *file, loff_t start, loff_t end, int datasync)
{
struct inode *inode = file->f_mapping->host;
-
- return sync_inode_metadata(inode, 1);
+ int err = filemap_write_and_wait_range(inode->i_mapping, start, end);
+ if (!err) {
+ mutex_lock(&inode->i_mutex);
+ err = sync_inode_metadata(inode, 1);
+ mutex_unlock(&inode->i_mutex);
+ }
+ return err;
}
ssize_t pohmelfs_write(struct file *file, const char __user *buf,