From: john cooper <john.cooper@third-harmonic.com>
To: kvm@vger.kernel.org
Cc: john cooper <john.cooper@third-harmonic.com>, john.cooper@redhat.com
Subject: [PATCH 0/2] Add serial number support for virtio_blk
Date: Wed, 29 Apr 2009 10:53:54 -0400 [thread overview]
Message-ID: <49F86A02.2060504@third-harmonic.com> (raw)
[-- Attachment #1: Type: text/plain, Size: 934 bytes --]
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 make 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
--
john.cooper@third-harmonic.com
[-- Attachment #2: virtio_get_sn.c --]
[-- Type: text/x-csrc, Size: 851 bytes --]
/* 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);
}
next reply other threads:[~2009-04-29 15:00 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-04-29 14:53 john cooper [this message]
-- strict thread matches above, loose matches on Subject: below --
2009-04-29 15:47 [PATCH 0/2] Add serial number support for virtio_blk john cooper
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=49F86A02.2060504@third-harmonic.com \
--to=john.cooper@third-harmonic.com \
--cc=john.cooper@redhat.com \
--cc=kvm@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.