aboutsummaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorGravatar Nikolaus Rath <Nikolaus@rath.org>2016-11-23 15:59:52 -0800
committerGravatar Nikolaus Rath <Nikolaus@rath.org>2016-11-29 08:25:52 -0800
commit56fde4ba9ee0268ece42512a00782b2064537b15 (patch)
treeeb683a64fe89098de9be107272b39ef130e4ae74 /include
parent8e9cf9ecc6241f740edfa5bdc3533a2d0f2bb3e1 (diff)
Improve documentation of fuse_session_unmount
Diffstat (limited to 'include')
-rw-r--r--include/fuse.h2
-rw-r--r--include/fuse_lowlevel.h21
2 files changed, 22 insertions, 1 deletions
diff --git a/include/fuse.h b/include/fuse.h
index a9e569e..89798ef 100644
--- a/include/fuse.h
+++ b/include/fuse.h
@@ -819,6 +819,8 @@ int fuse_mount(struct fuse *f, const char *mountpoint);
/**
* Unmount a FUSE file system.
*
+ * See fuse_session_unmount() for additional information.
+ *
* @param f the FUSE handle
**/
void fuse_unmount(struct fuse *f);
diff --git a/include/fuse_lowlevel.h b/include/fuse_lowlevel.h
index af3063f..835b420 100644
--- a/include/fuse_lowlevel.h
+++ b/include/fuse_lowlevel.h
@@ -1850,7 +1850,26 @@ void fuse_session_reset(struct fuse_session *se);
int fuse_session_exited(struct fuse_session *se);
/**
- * Unmount the file system
+ * Ensure that file system is unmounted.
+ *
+ * In regular operation, the file system is typically unmounted by the
+ * user calling umount(8) or fusermount(1), which then terminates the
+ * FUSE session loop. However, the session loop may also terminate as
+ * a result of an explicit call to fuse_session_exit() (e.g. by a
+ * signal handler installed by fuse_set_signal_handler()). In this
+ * case the filesystem remains mounted, but any attempt to access it
+ * will block (while the filesystem process is still running) or give
+ * an ESHUTDOWN error (after the filesystem process has terminated).
+ *
+ * If the communication channel with the FUSE kernel module is still
+ * open (i.e., if the session loop was terminated by an explicit call
+ * to fuse_session_exit()), this function will close it and unmount
+ * the filesystem. If the communication channel has been closed by the
+ * kernel, this method will do (almost) nothing.
+ *
+ * NOTE: The above semantics mean that if the connection to the kernel
+ * is terminated via the ``/sys/fs/fuse/connections/NNN/abort`` file,
+ * this method will *not* unmount the filesystem.
*
* @param se the session
*/