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 <[email protected]> --- 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. */ -- [email protected]
