[Libguestfs] do_umount adjustment

Richard W.M. Jones rjones at redhat.com
Wed Aug 12 08:20:06 UTC 2009


On Wed, Aug 12, 2009 at 10:14:51AM +0200, Jim Meyering wrote:
> Here's one final (I hope) question without a complete patch.
> Given that I already ensure that stubs.c invokes
> REQUIRE_ROOT_OR_RESOLVE_DEVICE just before calling do_umount,
> does this new version of do_umount look ok?
> 
> /* Again, use the external /bin/umount program, so that /etc/mtab
>  * is kept updated.
>  */
> int
> do_umount (const char *pathordevice)
> {
>   int r;
>   char *err;
> 
>   char *buf = sysroot_path (pathordevice);
>   if (buf == NULL) {
>     reply_with_perror ("malloc");
>     return -1;
>   }

I think the problem here is you'll end up with a buf like
'/sysroot/dev/vda'.

In the original code:

  if (strncmp (pathordevice, "/dev/", 5) == 0) {
    buf = pathordevice;
    IS_DEVICE (buf, -1);
  } else {
    buf = sysroot_path (pathordevice);
    if (buf == NULL) {
      reply_with_perror ("malloc");
      return -1;
    }
    freeit = 1;
  }

it avoids prefixing /dev paths.

If Pathname args turn into two parameters (the original path, and the
sysroot-prefixed path), then maybe Pathname_or_device args should turn
into several parameters too, like:

  int is_device, const char *original_pathordevice, const char *sysroot_pathordevice

(That's just an idea ...  maybe not a good one)

Rich.

-- 
Richard Jones, Emerging Technologies, Red Hat  http://et.redhat.com/~rjones
virt-top is 'top' for virtual machines.  Tiny program with many
powerful monitoring features, net stats, disk stats, logging, etc.
http://et.redhat.com/~rjones/virt-top




More information about the Libguestfs mailing list