Add serial number support for virtio_blk

[brought forward to current qemu-kvm.git]

This patch implements the missing qemu logic to
interpret a '-drive .. serial=XYZ ..' flag for
a virtio_blk device.

The serial number string is contained in a
skeletal IDENTIFY DEVICE data structure and
this structure is made available to the guest
virtio_blk driver via pci i/o region 0.

Signed-off-by: john cooper <john.cooper@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
This commit is contained in:
john cooper 2009-06-22 14:26:51 -04:00 committed by Anthony Liguori
parent 024589f182
commit bf011293fa
3 changed files with 65 additions and 1 deletions

View file

@ -30,6 +30,11 @@
#define VIRTIO_BLK_F_RO 5 /* Disk is read-only */
#define VIRTIO_BLK_F_BLK_SIZE 6 /* Block size of disk is available*/
#define VIRTIO_BLK_F_SCSI 7 /* Supports scsi command passthru */
#define VIRTIO_BLK_F_IDENTIFY 8 /* ATA IDENTIFY supported */
#define VIRTIO_BLK_ID_LEN 256 /* length of identify u16 array */
#define VIRTIO_BLK_ID_SN 10 /* start of char * serial# */
#define VIRTIO_BLK_ID_SN_BYTES 20 /* length in bytes of serial# */
struct virtio_blk_config
{
@ -39,6 +44,8 @@ struct virtio_blk_config
uint16_t cylinders;
uint8_t heads;
uint8_t sectors;
uint32_t _blk_size; /* structure pad, currently unused */
uint16_t identify[VIRTIO_BLK_ID_LEN];
} __attribute__((packed));
/* These two define direction. */