[Libguestfs] [libguestfs] Options for hotplugging
Richard W.M. Jones
rjones at redhat.com
Tue Aug 21 09:45:32 UTC 2012
On Tue, Aug 21, 2012 at 10:32:51AM +0100, Daniel P. Berrange wrote:
> On Mon, Aug 20, 2012 at 10:07:43PM +0100, Richard W.M. Jones wrote:
> > In the first case (using "/dev/sdX" names), some magic already happens
> > translating these to the real names underneath, but currently that
> > magic is just "/dev/sdX" -> "/dev/vdX" for the virtio case.
>
> Ah I didn't realize that you already do device name remapping
> between what the kernel shows & what the API shows.
I maybe wasn't completely clear. We only (currently) do the mapping
for parameters. Return values contain the kernel device names. So we
don't rewrite the output of guestfs_list_devices, we just suppress the
device corresponding to the appliance root filesystem.
This both is and isn't a problem at the moment. If you treat the
returned strings as opaque blobs, you can pass them back to API
functions.
However if you want to print them it's a different matter, and lots of
tools try to canonicalize the names before printing them, eg: consider
the following code in an old version of virt-filesystems:
https://github.com/libguestfs/libguestfs/blob/16fdcb4baabcd96dcc16acf1ec7eae34f7304cce/cat/virt-filesystems.c#L707
In fact this canonicalization code was used so widely, I added it to
the API in later versions:
https://github.com/libguestfs/libguestfs/blob/99759da25c29a7376490074da3d2c22602a2acec/cat/virt-filesystems.c#L642
https://github.com/libguestfs/libguestfs/blob/faf548a4bdd36b476ee6838bfc7d0c134435a331/src/guestfs.c#L1084
For parameters, the mapping process is documented here:
http://libguestfs.org/guestfs.3.html#algorithm-for-block-device-name-translation
The main reason for mapping parameters is so you can write guestfish
scripts which are portable across many versions of libguestfs, eg:
guestfish -a foo.img -m /dev/sda1
will just work.
Rich.
--
Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
virt-df lists disk usage of guests without needing to install any
software inside the virtual machine. Supports Linux and Windows.
http://et.redhat.com/~rjones/virt-df/
More information about the Libguestfs
mailing list