From: Paul T. <twohey@CS.Stanford.EDU> - 2005-03-12 23:54:20
|
> > However, we run into problems with mmap. It turns out that FUSE doesn't > > provide mmap. > > Memory mapping is pretty complex, and the kernel provides an > implentation in the form of the page cache, so it makes no sense to > export the mmap interface to the filesystem. Most (all?) in-kernel > filesystems also just use the page cache. > > > Do you guys have a mmap patch for FUSE on 2.6 or 2.4? I'd really > > appericate it. I googled a bit and it seems that map on FUSE can > > cause kernel mm system to deadlock. > > > That's a different problem. The deadlock is only in case of writable > shared mapping, which is _very_ rarely used (I haven't yet seen a real > application using it only some testcases in LTP). So all other kinds > of mmap() are supported. This strace of CVS seems to imply that fuse doesn't support mmap, even for private mappings. I was trying to run a cvs commit on a repository on the fusexmp file system. The cvs commit fails as a result of the failed mmap. [pid 7777] chmod("/mnt/fuse/home/twohey/tmp/cvsroot/project/test-file,v", 0100444) = 0 [pid 7777] open("/mnt/fuse/home/twohey/tmp/cvsroot/project/test-file,v", O_RDONLY|O_LARGEFILE) = 4 [pid 7777] fstat64(4, {st_mode=S_IFREG|0444, st_size=79, ...}) = 0 [pid 7777] mmap2(NULL, 79, PROT_READ|PROT_WRITE, MAP_PRIVATE, 4, 0) = -1 ENODEV (No such device) I'm mounting the file system as root with the following options: ./example/fusexmp /mnt/fuse -d -s -o allow_other,allow_root,direct_io,debug As for wanting MAP_SHARED, berkeley db uses shared mappings. Thus, applications like subversion with the berkeley db backend will want support for MAP_SHARED. Thanks for your help. Paul Twohey twohey@cs |