From: Lucas C. V. R. <lu...@go...> - 2011-09-20 21:33:02
|
On Tue, Sep 20, 2011 at 5:37 PM, Nikolaus Rath <Nik...@ra...> wrote: > "Lucas C. Villa Real" <luc...@pu...> writes: >> On Mon, Sep 19, 2011 at 10:31 PM, Nikolaus Rath <Nik...@pu...> wrote: >>> Hello, >>> >>> Is there a way from within the file system to make the mountpoint >>> inaccessible? I would like to have the same effect as if the file system >>> process had crashed, only that it's still running. >>> >>> I'm using the low level API. >> >> Perhaps /sys/fs/fuse/connections/id/abort can be of help for that? As >> long as you know the id given to your file system, you could take the >> appropriate actions to shut down your file system and, right before >> returning control to the shell, write '1' to that file. Further >> attempts to access the mount point will fail with -ENOTCONN. > > Hmm, yes, that would work very well. But it seems to me there ought to > be a way to do the same thing on the FUSE side, without having to figure > out the id. Would, for example, closing the pipe used to talk with the > kernel module have a similar effect? For the sake of curiosity, I tried closing the file descriptor associated to /dev/fuse on my implementation of getattr(). That caused a connection abort error on the client side (as expected), and the FUSE file system exited after that. However, further attempts to access the mount point succeeded with no errors, which is not what you want. I guess writing 1 to 'abort' is the way to go. I haven't looked at the source code of libfuse enough to find if the connection id is saved in some internal state variables, though, or if that needs to be asked to the kernel somehow. Thanks, -- Lucas "If you're looking for a reason I've a reason to give: pleasure, little treasure" |