From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1M4I37-0007ND-Al for qemu-devel@nongnu.org; Wed, 13 May 2009 13:15:21 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1M4I33-0007M0-RF for qemu-devel@nongnu.org; Wed, 13 May 2009 13:15:21 -0400 Received: from [199.232.76.173] (port=37162 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1M4I33-0007Lx-PJ for qemu-devel@nongnu.org; Wed, 13 May 2009 13:15:17 -0400 Received: from mx2.redhat.com ([66.187.237.31]:59550) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1M4I33-00022L-Cz for qemu-devel@nongnu.org; Wed, 13 May 2009 13:15:17 -0400 Message-ID: <4A0AFE31.70908@redhat.com> Date: Wed, 13 May 2009 13:06:57 -0400 From: john cooper MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="------------050305080609030300000708" Subject: [Qemu-devel] [PATCH 0/2] Add serial number support for virtio_blk, V2 List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: KVM list , qemu-devel@nongnu.org Cc: john.cooper@redhat.com This is a multi-part message in MIME format. --------------050305080609030300000708 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit [Resend of earlier patch: 1/2 rebased to qemu-kvm, 2/2 minor tweak] 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-2.patch which provides the qemu missing bits to interpret a '-drive .. serial=XYZ ..' flag, and: virtio_blk-serial-2.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 qemu-kvm.git and 2.6.29.3 respectively. -john -- john.cooper@redhat.com --------------050305080609030300000708 Content-Type: text/x-csrc; name="virtio_get_sn.c" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="virtio_get_sn.c" /* example: retrieve serial number from virtio block device */ #include #include #include #include #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); } --------------050305080609030300000708--