|
From: Jonathan B. <jbr...@ea...> - 2006-01-05 14:39:14
|
On Thu, 2006-01-05 at 10:41 +0100, Miklos Szeredi wrote: > > I know that you folks aren't responsible for developing fuseiso, but I'm > > hoping that someone here knows how it is supposed to work, or may be a > > developer for fuseiso. > > > > I am currently using fuse 2.4.0 on kernel 2.6.14 (Debian) on an amd64 > > system running in 64 bit mode (but the same issue exists in IA32 mode, > > too). I am trying to use fuseiso version 20051029, but it isn't quite > > working. When used as directed (according to fuseiso --help): > > $ fuseiso debian-31r0a-amd64-netinst.iso ./test > > > > I get this error whenever I try to ls below the mount point: > > Transport endpoint is not connected > > > > It appears that fuseiso is exiting immediately after invocation without > > any warning or error messages, while leaving an entry in the mount table > > that the fs is mounted. How is it supposed to work? > > Probably not like that ;) > > You can try running in the foreground (-f) or with debug (-d) to see > how it crashes. When run with either -f or -d, it works! That suggests to me that the problem is in the backgrounding. After a little digging, I found that if fuseiso is given the full path to the .iso image file rather than the relative path, it works. Guess: useiso only opens the image file in its .init function. This function is called after libfuse calls daemon(). daemon(0, 0) changes the working directory to /. Therefore, a relative path is no longer valid, and the program exits. Is this fuseiso's fault for not changing the filename to an absolute path reference before calling fuse_main() (or just not open()ing the file earlier)? Or is it libfuse's fault for calling daemon() before the client program's .init() function? I can submit a patch in either case. -Jonathan |