From: Dave Young <dyoung@redhat.com>
To: qemu-devel@nongnu.org
Cc: eblake@redhat.com
Subject: Re: [Qemu-devel] [PATCH V3] virtio-blk: add default serial id
Date: Wed, 26 Sep 2012 16:54:21 +0800 [thread overview]
Message-ID: <5062C2BD.5020700@redhat.com> (raw)
In-Reply-To: <20120926081805.GA6799@dhcp-16-143.nay.redhat.com>
Hi, Eric
This is in fact same with v1 except the spelling fixes.
I switched back to v1 because of your concern about the same id reusing
issue. For v1, unplugging 100000 times is not likely and insane, so I
think we can safely ignore it.
Unless qemu-img create some uuid for disk imgs I think there's no way
to create some really ideal *uniq* ids.
On 09/26/2012 04:18 PM, Dave Young wrote:
> For virtio block device, if user does not specify the serial attribute,
> There will be no serial availabe, this is not convenient for identifying
> 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-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;
>
>
--
Thanks
Dave
prev parent reply other threads:[~2012-09-26 8:58 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-09-26 8:18 [Qemu-devel] [PATCH V3] virtio-blk: add default serial id Dave Young
2012-09-26 8:54 ` Dave Young [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=5062C2BD.5020700@redhat.com \
--to=dyoung@redhat.com \
--cc=eblake@redhat.com \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.