This series adds the minimal support to qemu and virtio_blk to support passing of a virtio_blk serial id string from qemu through the guest driver and to the guest userland.
This is derived in part from a patch set posted by Rusty some time ago, but has been minimized to remove support for prior versions which attempted to provide the same functionality via pci config/io space. This version rather uses a virtio request as proposed in Rusty's example. Also removed is the packaging of the serial/id string within the glorious bag of bits returned by the ATA_IDENTIFY command. Here we transfer only the 20 bytes of serial/id string from qemu to the guest userland. In the proposed interface, this is made available by an ioctl() into the virtio_blk driver however other interfaces (eg: /sys) have also been proposed. A code snippet is attached below as an example of ioctl usage. The resulting code is quite minimal and I believe it addresses all concerns raised in prior versions. -john #include <stdio.h> #include <strings.h> #include <sys/types.h> #include <fcntl.h> #include <linux/hdreg.h> #define IOCTL_CMD 'VBID' main() { int fd, rv; char buf[512]; bzero(buf, sizeof (buf)); if ((fd = open("/dev/vda", O_RDONLY)) < 0) perror("open"); else if (ioctl(fd, IOCTL_CMD, buf) < 0) perror("ioctl"); else printf("[%s]\n", buf); } -- john.coo...@redhat.com