From: Miklos Szeredi Date: Sat, 23 Apr 2005 10:59:44 +0000 (+0000) Subject: fix X-Git-Tag: fuse_2_3_pre5~1 X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=f913745c0936646cf33fb37efad837f5b40d81a4;p=qemu-gpiodev%2Flibfuse.git fix --- diff --git a/ChangeLog b/ChangeLog index 5415803..6b13011 100644 --- a/ChangeLog +++ b/ChangeLog @@ -12,6 +12,9 @@ * Fix Oops caused by premature release of fuse_conn. Clean up related code, to be more readable + * Sendfile should not use page cache if "direct_io" mount option + is given + 2005-04-08 Miklos Szeredi * Fix Oops in case of nfs export. Spotted by David Shaw diff --git a/kernel/file.c b/kernel/file.c index cf8e855..6fee83e 100644 --- a/kernel/file.c +++ b/kernel/file.c @@ -654,6 +654,17 @@ static int fuse_file_mmap(struct file *file, struct vm_area_struct *vma) } #ifdef KERNEL_2_6 +static ssize_t fuse_file_sendfile(struct file *file, loff_t *ppos, + size_t count, read_actor_t actor, + void *target) +{ + struct fuse_conn *fc = get_fuse_conn(file->f_dentry->d_inode); + if (fc->flags & FUSE_DIRECT_IO) + return -EINVAL; + else + return generic_file_sendfile(file, ppos, count, actor, target); +} + static int fuse_set_page_dirty(struct page *page) { printk("fuse_set_page_dirty: should not happen\n"); @@ -672,7 +683,7 @@ static struct file_operations fuse_file_operations = { .release = fuse_release, .fsync = fuse_fsync, #ifdef KERNEL_2_6 - .sendfile = generic_file_sendfile, + .sendfile = fuse_file_sendfile, #endif };