From: Chris F. <ch...@fr...> - 2006-05-04 15:50:32
|
On Thu, May 04, 2006 at 01:58:46PM +0200, Miklos Szeredi wrote: > In theory there shouldn't be any probelm. I just can't imagine any > useful application for multiple filesystems per process. What are you > using it for? A fwiw, we run our fuse-based fileserver with multiple filesystems per process. We run in fuse (vs in the kernel) for safer testing and easier debugging and profiling. We run in a single process because our server's mounts must all share the same virtual address space and we found telling (lowlevel) fuse about each mount to be cleaner than exporting a single mount and then mapping to internal mounts, which would require combining all mounts' inode spaces and special support for a few operations (eg rename). (Inode-space combining and other issues do not arise when exporting each mount since the mounts are kept separate all the way into the kernel.) Our fuse-based fileserver process exports multiple mounts through two changes (both local to our program; nicely, there is no need to modify the fuse library). (1) We rewrote a local version of lib/fuse_loop.c to support multiple mounts. (2) We run mounts and unmounts in a second thread so that when fuse_mount() and fuse_unmount() block (for fork, exec, and wait) to get information about the mount's parent directory (which might be served by the same fileserver) there is no deadlock. A downside to this local modification approach is that we of course have to watch for changes to lib/fuse_loop.c and to the general internal fuse architecture. -- Chris Frost | <http://www.frostnet.net/chris/> -------------+---------------------------------- Public PGP Key: Email ch...@fr... with the subject "retrieve pgp key" or visit <http://www.frostnet.net/chris/about/pgp_key.phtml> |