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