aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/file.c
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/file.c')
-rw-r--r--kernel/file.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/kernel/file.c b/kernel/file.c
index 42ab037..e8dae79 100644
--- a/kernel/file.c
+++ b/kernel/file.c
@@ -692,9 +692,15 @@ static ssize_t fuse_direct_write(struct file *file, const char __user *buf,
struct inode *inode = file->f_dentry->d_inode;
ssize_t res;
/* Don't allow parallel writes to the same file */
+#ifdef KERNEL_2_6_16_PLUS
+ mutex_lock(&inode->i_mutex);
+ res = fuse_direct_io(file, buf, count, ppos, 1);
+ mutex_unlock(&inode->i_mutex);
+#else
down(&inode->i_sem);
res = fuse_direct_io(file, buf, count, ppos, 1);
up(&inode->i_sem);
+#endif
return res;
}