|
From: Frank M. <fr...@me...> - 2006-05-04 11:54:15
|
Hello, i'm trying to run fuse on an arm-based embedded system. When i try to mount a filesystem i get this error message: # ./fusexmp /mnt/net/ fusermount: mount failed: Invalid argument # insmod /lib/modules/fuse.ko fuse init (API version 7.5) fuse distribution version: 2.5.3 # ls -al /dev/fuse crw-rw-rw- 1 root root 10, 229 Dec 31 1969 /dev/fuse To me it looks like the problem discussed in these postings: http://sourceforge.net/mailarchive/forum.php?thread_id=10145055&forum_id=42692 (3 weeks ago) I tried to apply the patch posted by Miklos Szeredi against fuse-2.5.3 and fuse-2.6.0-pre2 but couldn't compile the result in both cases. diff -urN fuse-2.5.3/kernel/dev.c fuse-2.5.3_mod/kernel/dev.c --- fuse-2.5.3/kernel/dev.c 2006-02-02 18:04:52.000000000 +0100 +++ fuse-2.5.3_mod/kernel/dev.c 2006-05-04 12:17:10.000000000 +0200 @@ -511,6 +511,7 @@ static int fuse_copy_fill(struct fuse_copy_state *cs) { unsigned long offset; + struct vm_area_struct *vma; int err; unlock_request(cs->req); @@ -524,13 +525,14 @@ } down_read(¤t->mm->mmap_sem); err = get_user_pages(current, current->mm, cs->addr, 1, cs->write, 0, - &cs->pg, NULL); + &cs->pg, &vma); 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); + flush_cache_page(vma, cs->addr, page_to_pfn(cs->pg)); cs->buf = cs->mapaddr + offset; cs->len = min(PAGE_SIZE - offset, cs->seglen); cs->seglen -= cs->len; /build_arm_nofpu/fuse-2.6.0-pre2/kernel/dev.c: In function `fuse_copy_fill': /build_arm_nofpu/fuse-2.6.0-pre2/kernel/dev.c:513: error: too many arguments to function `flush_cache_page' make[4]: *** [/build_arm_nofpu/fuse-2.6.0-pre2/kernel/dev.o] Error 1 The system i'm using is running linux-2.6.10. The function signature on my system looks like this: flush_cache_page(struct vm_area_struct *vma, unsigned long user_addr); What do i have to pass to flush_cache_page()? Thanks. Regards, Frank |