[libvirt] libvirt disk labels and QEMU drive host alias generation
Kashyap Chamarthy
kchamart at redhat.com
Tue Jun 14 12:42:27 UTC 2016
On Tue, Jun 14, 2016 at 12:01:52PM +0100, Daniel P. Berrange wrote:
> On Tue, Jun 14, 2016 at 12:50:09PM +0200, Kashyap Chamarthy wrote:
> > Summary
> > -------
> >
> > It seems like libvirt is generating the same QEMU drive host
> > alias ('drive-virtio-disk%d') for different two disk labels (vdb, vdb1).
> >
> > [Refer the contextual root cause analysis discussion at the end with
> > Laine & Peter.]
> >
> > Let's take a quick example to demonstrate the issue.
> >
> > On a guest that is shut down, attach a couplee of disks with labels
> > 'vdb', and 'vdb1'
> >
> > $ sudo virsh attach-disk cvm1 \
> > /export/vmimages/1.raw vdb --config
> >
> > $ sudo virsh attach-disk cvm1 \
> > /export/vmimages/1.raw vdb1 --config
>
> That second command is user error - hotplugging a disk partition
> is nonsensical, except with Xen which allows that for paravirtualized
> disks. We should reject such disk names with an error right away in
> all other cases.
Okay, filed this upstream bug:
https://bugzilla.redhat.com/show_bug.cgi?id=1346265 --
Disallow disk hot-plugging with invalid target labels (e.g. disk
partition number for non-paravirt disks)
I realized supplying disk partition numbers as targets is not sensible,
but virDiskNameParse() parses partition numbers too:
$ less -N src/util/virutil.c
[...]
543 /* Translates a device name of the form (regex) /^[fhv]d[a-z]+[0-9]*$/
544 * into the corresponding index and partition number
545 * (e.g. sda0 => (0,0), hdz2 => (25,2), vdaa12 => (26,12))
546 * @param name The name of the device
547 * @param disk The disk index to be returned
548 * @param partition The partition index to be returned
549 * @return 0 on success, or -1 on failure
550 */
551 int virDiskNameParse(const char *name, int *disk, int *partition)
552 {
[...]
--
/kashyap
More information about the libvir-list
mailing list