It is never normally valid to use the mount-local* APIs when you haven't mounted some filesystems in the libguestfs namespace. If you try it, it results in some odd errors. The mount-local-run call is successful, but subsequent operations fail: $ mkdir -p /tmp/mnt $ guestfish -x -N fs mount-local /tmp/mnt : mount-local-run libguestfs: error: lstat: lstat_stub: you must call 'mount' first to mount the root filesystem libguestfs: error: lstat: lstat_stub: you must call 'mount' first to mount the root filesystem With this commit, the mount-local-run call gives an error. The error is implemented by calling guestfs_exists (g, "/") which has the side effect of running the NEED_ROOT macro in the daemon. (There is no simple equivalent of NEED_ROOT on the library side.) --- src/fuse.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/fuse.c b/src/fuse.c index dd4f139..c22cbba 100644 --- a/src/fuse.c +++ b/src/fuse.c @@ -1028,6 +1028,12 @@ guestfs__mount_local_run (guestfs_h *g) return -1; } + /* Test if root is mounted. We do this by using a side-effect of + * guestfs_exists (which is that it calls NEED_ROOT). + */ + if (guestfs_exists (g, "/") == -1) + return -1; + debug (g, "%s: entering fuse_loop", __func__); /* Enter the main loop. */ -- 1.8.4.2