[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 0/2] Add serial number support for virtio_blk
From: |
john cooper |
Subject: |
[Qemu-devel] [PATCH 0/2] Add serial number support for virtio_blk |
Date: |
Wed, 29 Apr 2009 11:47:49 -0400 |
User-agent: |
Thunderbird 2.0.0.9 (X11/20071115) |
[Repost -- neglected to add qemu-devel in my
prior post.]
This patch allows passing of a virtio_blk drive
serial number from qemu into a guest's virtio_blk
driver, and provides a means to access the serial
number from a guest's userspace.
Equivalent functionality currently exists for IDE
and SCSI, however it is not yet implemented for
virtio. Scenarios exist where guest code relies
on a unique drive serial number to correctly
identify the machine environment in which it
exists.
The following two patches implement the above
qemu-vblk-serial.patch
which provides the qemu missing bits to interpret
a '-drive .. serial=XYZ ..' flag, and
virtio_blk-serial.patch
which extracts this information and makes it
available to guest userspace via ioctl.
Attached to this patch header is a trivial example
program which retrieves the serial number from
guest userspace.
The above patches are relative to kvm-84 and
2.6.28 respectively.
-john
--
address@hidden
/* example: retrieve serial number from virtio block device
*/
#include <stdio.h>
#include <fcntl.h>
#include <stdlib.h>
#include <linux/virtio_blk.h>
#define iswhite(c) (!('!' <= (c) && (c) <= '~'))
#ifndef VBLK_GET_SN
#define VBLK_GET_SN ((unsigned int)('V' << 24 | 'B' << 16 | 'L' << 8 | 'K'))
#endif
/* get virtblk drive serial#
*/
int main(int ac, char ***av)
{
int fd, nb, i;
unsigned char sn[30];
unsigned char *p;
sn[0] = sizeof (sn);
if ((fd = open("/dev/vda", O_RDONLY)) < 0)
perror("can't open device"), exit(1);
else if ((nb = ioctl(fd, VBLK_GET_SN, &sn)) < 0)
perror("can't ioctl device"), exit(1);
printf("returned %d bytes:\n", nb);
for (p = sn, i = nb; 0 <= --i; ++p)
printf("%02x%c", *p, i ? ' ' : '\t');
for (p = sn, i = nb; 0 <= --i; ++p)
printf("%c%s", iswhite(*p) ? '.' : *p, i ? "" : "\n");
return (0);
}
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Qemu-devel] [PATCH 0/2] Add serial number support for virtio_blk,
john cooper <=