All of lore.kernel.org
 help / color / mirror / Atom feed
* Re: [Qemu-devel] [PATCH] add default virtio-blk serial id
       [not found] <20120920084832.3740540FC3@darkstar.nay.redhat.com>
@ 2012-09-20  8:59 ` Dave Young
  0 siblings, 0 replies; only message in thread
From: Dave Young @ 2012-09-20  8:59 UTC (permalink / raw)
  To: Dave Young; +Cc: qemu-devel

Oops, local mta use wrong from line, should use below:
From: Dave Young <dyoung@redhat.com>

On 09/20/2012 04:48 PM, Dave Young wrote:

> 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 <dyoung@redhat.com>
> ---
>  hw/virtio-blk.c |    9 ++++++++-
>  1 file changed, 8 insertions(+), 1 deletion(-)
> 
> --- qemu.orig/hw/virtio-blk.c
> +++ qemu/hw/virtio-blk.c
> @@ -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;



-- 
Thanks
Dave

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2012-09-20  9:03 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <20120920084832.3740540FC3@darkstar.nay.redhat.com>
2012-09-20  8:59 ` [Qemu-devel] [PATCH] add default virtio-blk serial id Dave Young

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.