From patchwork Thu Mar 25 05:34:02 2010 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: [4/4] Add virtio disk identification support Date: Wed, 24 Mar 2010 19:34:02 -0000 From: john cooper X-Patchwork-Id: 48495 Message-Id: <4BAAF5CA.2010401@redhat.com> To: Rusty Russell Cc: john.cooper@redhat.com, Marc Haber , qemu-devel@nongnu.org Return serial string to the guest application via ioctl driver call. Note this form of interface to the guest userland was the consensus when the prior version using the ATA_IDENTIFY came under dispute. Signed-off-by: john cooper --- diff --git a/drivers/block/virtio_blk.c b/drivers/block/virtio_blk.c index cd66806..0954193 100644 --- a/drivers/block/virtio_blk.c +++ b/drivers/block/virtio_blk.c @@ -225,6 +225,21 @@ static int virtblk_ioctl(struct block_device *bdev, fmode_t mode, struct gendisk *disk = bdev->bd_disk; struct virtio_blk *vblk = disk->private_data; + if (cmd == 'VBID') { + void *usr_data = (void __user *)data; + char *id_str; + int err; + + if (!(id_str = kmalloc(VIRTIO_BLK_ID_BYTES, GFP_KERNEL))) + err = -ENOMEM; + else if ((err = virtblk_get_id(disk, id_str))) + ; + else if (copy_to_user(usr_data, id_str, VIRTIO_BLK_ID_BYTES)) + err = -EFAULT; + if (id_str) + kfree(id_str); + return err; + } /* * Only allow the generic SCSI ioctls if the host can support it. */