[libvirt] PATCH: Support setting a disk drive serial (number)

Dave Allan dallan at redhat.com
Mon Aug 17 18:54:57 UTC 2009


Daniel P. Berrange wrote:
> On Mon, Aug 17, 2009 at 02:37:48PM -0400, Dave Allan wrote:
>> Daniel P. Berrange wrote:
>>> All hard disks (IDE, SCSI, USB, VirtIO) have a concept of a serial number
>>> which is intended to uniquely identify them. If you mean this off, QEMU
>>> just makes up a serial on the fly. THis is not guarenteed to be stable
>>> across guest reboots with hardware changes. It is thus desirable to be
>>> able to specify this in libvirt XML. To that end, this patch allows
>>> for a <serial> element inside a disk
>>>
>>>    <disk type='file' device='disk'>
>>>      <source 
>>>      file='/media/lacie-500-disk-2/virtual-machines/scratch5.img'/>
>>>      <target dev='vda' bus='virtio'/>
>>>      <serial>dan123virtio</serial>
>>>    </disk>
>>>
>>> the contents is free-form. It implemenmts this for the QEMU driver for
>>> any disk using -drive style args. Unfortunately this excludes USB disk,
>>> even though internally QEMU can set a serial for these, the -usbdevice
>>> syntax does not allow it
>>>
>>> Daniel
>>>
>>> * docs/schemas/domain.rng: Add <serial> element to disks
>>> * src/domain_conf.h, src/domain_conf.c: XML parsing and
>>>  formatting for disk serial numbers
>>> * src/qemu_conf.c: Set serial number when launching guests
>>> * tests/qemuxml2argvdata/qemuxml2argv-disk-drive-shared.args,
>>>  tests/qemuxml2argvdata/qemuxml2argv-disk-drive-shared.xml: Add
>>>  serial number to XML test
> 
> [snip]
> 
>> This patch seems like a very good idea to me.  I'm surprised it doesn't 
>> cause more grief if the serial # keeps changing.  I didn't review the 
>> code too closely, but a definite ACK to the functionality, and I saw no 
>> problems with the implementation in the quick look I took.
> 
> Well it causes grief for Windows guests with WHQL'd virtio drivers I
> believe. We've probably just been fortunate with Linux guests that not
> much functional stuff is based off the serial number. The serial number
> is used for /dev/disk/by-id symlinks, but most distros use /dev/disk/by-uuid 
> symlinks for mounting volume instead and that's based off a filesystem
> level UUID, instead of block device level serial.

Yes, I was briefly puzzled as to how any modern Linux could work, as I 
mistook uuid for id in my fstab.  :)

>> As a possible additional feature, in the case of an entire device being 
>> assigned to the guest, have you considered passing through the serial of 
>> the underlying device?  The serial is available in the nodedev XML.
> 
> That's a policy decision, and so not within scope of libvirt. Of course 
> the application provisioning a new guest can see the host device's 
> serial, and copy that across to the guest XML it uses if desired.

Ok, that's fair.

Dave




More information about the libvir-list mailing list