diff options
-rw-r--r-- | ChangeLog | 2 | ||||
-rw-r--r-- | kernel/file.c | 6 | ||||
-rw-r--r-- | kernel/fuse_i.h | 3 |
3 files changed, 9 insertions, 2 deletions
@@ -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" |