[Libguestfs] [PATCH] fuse: In mount-local-run, test if root filesystem has been mounted (RHBZ#1057504).
Richard W.M. Jones
rjones at redhat.com
Fri Jan 24 12:21:00 UTC 2014
On Fri, Jan 24, 2014 at 01:07:59PM +0100, Pino Toscano wrote:
> On Friday 24 January 2014 10:22:58 Richard W.M. Jones wrote:
> > 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. */
>
> Sounds good (you are fast :) )
> The only drawback is that the guestfish command above will leave the
> local FUSE mountpoint still mounted after the guestfish run.
> Not sure whether it is worth doing anything automatic about that though,
> maybe just adding a
> error (g, _("remember to umount the mountpoint by invoking
> `guestumount` or using unmount-local"));
> before the «return -1» in the patch above could help.
Yes, I noticed this too. I don't think unmounting it is a good
idea, but I've improved the error message.
Thanks,
Rich.
--
Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
Read my programming blog: http://rwmj.wordpress.com
Fedora now supports 80 OCaml packages (the OPEN alternative to F#)
More information about the Libguestfs
mailing list