diff options
author | Imre Kaloz <kaloz@openwrt.org> | 2009-12-27 21:28:02 +0000 |
---|---|---|
committer | Imre Kaloz <kaloz@openwrt.org> | 2009-12-27 21:28:02 +0000 |
commit | 1fe38ff73bbb1397330adfcf331a1b9b871547df (patch) | |
tree | c611ef3a4ee2b8752582ad546268e481713166ba /target/linux/brcm47xx/patches-2.6.28/302-kmod-fuse-dcache-bug-fuse.patch | |
parent | 858ea761172f225faac6ba07a59cb0b9497a6d88 (diff) | |
download | upstream-1fe38ff73bbb1397330adfcf331a1b9b871547df.tar.gz upstream-1fe38ff73bbb1397330adfcf331a1b9b871547df.tar.bz2 upstream-1fe38ff73bbb1397330adfcf331a1b9b871547df.zip |
switch ixp4xx and ubicom32 to 2.6.30, get rid of 2.6.28 files
SVN-Revision: 18952
Diffstat (limited to 'target/linux/brcm47xx/patches-2.6.28/302-kmod-fuse-dcache-bug-fuse.patch')
-rw-r--r-- | target/linux/brcm47xx/patches-2.6.28/302-kmod-fuse-dcache-bug-fuse.patch | 82 |
1 files changed, 0 insertions, 82 deletions
diff --git a/target/linux/brcm47xx/patches-2.6.28/302-kmod-fuse-dcache-bug-fuse.patch b/target/linux/brcm47xx/patches-2.6.28/302-kmod-fuse-dcache-bug-fuse.patch deleted file mode 100644 index a81e76719a..0000000000 --- a/target/linux/brcm47xx/patches-2.6.28/302-kmod-fuse-dcache-bug-fuse.patch +++ /dev/null @@ -1,82 +0,0 @@ ---- a/fs/fuse/dev.c -+++ b/fs/fuse/dev.c -@@ -525,6 +525,11 @@ static void fuse_copy_finish(struct fuse - } - } - -+#ifdef DCACHE_BUG -+extern void (*fuse_flush_cache_all)(void); -+extern void (*fuse_flush_cache_page)(struct vm_area_struct *vma, unsigned long page, unsigned long pfn); -+#endif -+ - /* - * Get another pagefull of userspace buffer, and map it to kernel - * address space, and lock request -@@ -533,6 +538,9 @@ static int fuse_copy_fill(struct fuse_co - { - unsigned long offset; - int err; -+#ifdef DCACHE_BUG -+ struct vm_area_struct *vma; -+#endif - - unlock_request(cs->fc, cs->req); - fuse_copy_finish(cs); -@@ -544,14 +552,22 @@ static int fuse_copy_fill(struct fuse_co - cs->nr_segs --; - } - down_read(¤t->mm->mmap_sem); -+#ifndef DCACHE_BUG - err = get_user_pages(current, current->mm, cs->addr, 1, cs->write, 0, - &cs->pg, NULL); -+#else -+ err = get_user_pages(current, current->mm, cs->addr, 1, cs->write, 0, -+ &cs->pg, &vma); -+#endif - up_read(¤t->mm->mmap_sem); - if (err < 0) - return err; - BUG_ON(err != 1); - offset = cs->addr % PAGE_SIZE; - cs->mapaddr = kmap_atomic(cs->pg, KM_USER0); -+#ifdef DCACHE_BUG -+ fuse_flush_cache_page(vma, cs->addr, page_to_pfn(cs->pg)); -+#endif - cs->buf = cs->mapaddr + offset; - cs->len = min(PAGE_SIZE - offset, cs->seglen); - cs->seglen -= cs->len; -@@ -565,6 +581,11 @@ static int fuse_copy_do(struct fuse_copy - { - unsigned ncpy = min(*size, cs->len); - if (val) { -+#ifdef DCACHE_BUG -+ // patch from mailing list, it is very important, otherwise, -+ // can't mount, or ls mount point will hang -+ fuse_flush_cache_all(); -+#endif - if (cs->write) - memcpy(cs->buf, *val, ncpy); - else ---- a/fs/fuse/fuse_i.h -+++ b/fs/fuse/fuse_i.h -@@ -8,6 +8,7 @@ - - #ifndef _FS_FUSE_I_H - #define _FS_FUSE_I_H -+#define DCACHE_BUG - - #include <linux/fuse.h> - #include <linux/fs.h> ---- a/fs/fuse/inode.c -+++ b/fs/fuse/inode.c -@@ -1038,6 +1038,10 @@ static int __init fuse_init(void) - printk("fuse init (API version %i.%i)\n", - FUSE_KERNEL_VERSION, FUSE_KERNEL_MINOR_VERSION); - -+#ifdef DCACHE_BUG -+printk("fuse init: DCACHE_BUG enabled\n"); -+#endif -+ - INIT_LIST_HEAD(&fuse_conn_list); - res = fuse_fs_init(); - if (res) |