aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog2
-rw-r--r--kernel/file.c6
-rw-r--r--kernel/fuse_i.h3
3 files changed, 9 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index efd5a3e..1298d09 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -10,8 +10,6 @@
* Connection may be aborted through either the sysfs interface or
with 'umount -f mountpoint'
- *
-
2006-01-14 Miklos Szeredi <miklos@szeredi.hu>
* Released 2.5.0
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;
}
diff --git a/kernel/fuse_i.h b/kernel/fuse_i.h
index b68b9e3..4979fac 100644
--- a/kernel/fuse_i.h
+++ b/kernel/fuse_i.h
@@ -40,6 +40,9 @@
# if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,13)
# define KERNEL_2_6_13_PLUS
# endif
+# if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,16)
+# define KERNEL_2_6_16_PLUS
+# endif
#endif
#include "config.h"