summaryrefslogtreecommitdiff
path: root/drivers/block/virtio_blk.c
diff options
context:
space:
mode:
authorjohn cooper <john.cooper@redhat.com>2010-03-25 05:34:02 (GMT)
committerRusty Russell <rusty@rustcorp.com.au>2010-05-19 12:45:40 (GMT)
commit234f2725a5d03f78539f1d36cb32f2c4f9b1822c (patch)
tree583925489f277e88f4326bbb7a22018b1c1ceb01 /drivers/block/virtio_blk.c
parent4cb2ea28c55cf5e5ef83aec535099ffce3c583df (diff)
downloadlinux-234f2725a5d03f78539f1d36cb32f2c4f9b1822c.tar.xz
Add virtio disk identification ioctl
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 <john.cooper@redhat.com> Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Diffstat (limited to 'drivers/block/virtio_blk.c')
-rw-r--r--drivers/block/virtio_blk.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/drivers/block/virtio_blk.c b/drivers/block/virtio_blk.c
index 759dee8..67dcb19 100644
--- a/drivers/block/virtio_blk.c
+++ b/drivers/block/virtio_blk.c
@@ -225,6 +225,16 @@ 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 __user *usr_data = (void __user *)data;
+ char id_str[VIRTIO_BLK_ID_BYTES];
+ int err;
+
+ err = virtblk_get_id(disk, id_str);
+ if (!err && copy_to_user(usr_data, id_str, VIRTIO_BLK_ID_BYTES))
+ err = -EFAULT;
+ return err;
+ }
/*
* Only allow the generic SCSI ioctls if the host can support it.
*/