[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH] virtio-blk: add default value to serial attribute
From: |
Dave Young |
Subject: |
[Qemu-devel] [PATCH] virtio-blk: add default value to serial attribute |
Date: |
Thu, 20 Sep 2012 21:02:41 +0800 |
User-agent: |
Mutt/1.5.20 (2009-06-14) |
From: Dave Young <address@hidden>
For virtio block device, if user does not specify the serial attribute,
There will be not serial availabe, this is not convinient for identify
the disk.
Doing something similar to ide disks, add a "VD0000?" default serial
number if user does not specify it.
Signed-off-by: Dave Young <address@hidden>
---
hw/virtio-blk.c | 9 ++++++++-
1 file changed, 8 insertions(+), 1 deletion(-)
--- qemu-kvm.orig/hw/virtio-blk.c 2012-09-02 09:45:03.115696878 +0800
+++ qemu-kvm/hw/virtio-blk.c 2012-09-20 20:57:56.177206991 +0800
@@ -22,6 +22,7 @@
# include <scsi/sg.h>
#endif
+#define DEFAULT_VIRTIO_BLK_SERIAL_LEN 8
typedef struct VirtIOBlock
{
VirtIODevice vdev;
@@ -33,6 +34,7 @@ typedef struct VirtIOBlock
VirtIOBlkConf *blk;
unsigned short sector_mask;
DeviceState *qdev;
+ int drive_serial;
} VirtIOBlock;
static VirtIOBlock *to_virtio_blk(VirtIODevice *vdev)
@@ -364,6 +366,7 @@ static void virtio_blk_handle_request(Vi
MultiReqBuffer *mrb)
{
uint32_t type;
+ char serial[DEFAULT_VIRTIO_BLK_SERIAL_LEN];
if (req->elem.out_num < 1 || req->elem.in_num < 1) {
error_report("virtio-blk missing headers");
@@ -388,12 +391,14 @@ static void virtio_blk_handle_request(Vi
} else if (type & VIRTIO_BLK_T_GET_ID) {
VirtIOBlock *s = req->dev;
+ snprintf(serial, DEFAULT_VIRTIO_BLK_SERIAL_LEN,
+ "VD%05d", s->drive_serial);
/*
* NB: per existing s/n string convention the string is
* terminated by '\0' only when shorter than buffer.
*/
strncpy(req->elem.in_sg[0].iov_base,
- s->blk->serial ? s->blk->serial : "",
+ s->blk->serial ? s->blk->serial : serial,
MIN(req->elem.in_sg[0].iov_len, VIRTIO_BLK_ID_BYTES));
virtio_blk_req_complete(req, VIRTIO_BLK_S_OK);
g_free(req);
@@ -611,6 +616,7 @@ static const BlockDevOps virtio_block_op
VirtIODevice *virtio_blk_init(DeviceState *dev, VirtIOBlkConf *blk)
{
+ static int drive_serial = 1;
VirtIOBlock *s;
static int virtio_blk_id;
@@ -632,6 +638,7 @@ VirtIODevice *virtio_blk_init(DeviceStat
sizeof(struct virtio_blk_config),
sizeof(VirtIOBlock));
+ s->drive_serial = drive_serial++;
s->vdev.get_config = virtio_blk_update_config;
s->vdev.set_config = virtio_blk_set_config;
s->vdev.get_features = virtio_blk_get_features;
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Qemu-devel] [PATCH] virtio-blk: add default value to serial attribute,
Dave Young <=