From 9af3176dbda518c399b6e48b58293b39708aeae8 Mon Sep 17 00:00:00 2001 From: Christoph Hellwig Date: Thu, 3 Feb 2011 23:49:01 -0200 Subject: [PATCH 04/15] virtio-blk: tell the guest about size changes RH-Author: Christoph Hellwig Message-id: <1296776941-22666-4-git-send-email-chellwig@redhat.com> Patchwork-id: 17657 O-Subject: [RHEL6 qemu PATCH 3/3 v2] virtio-blk: tell the guest about size changes Bugzilla: 515775 RH-Acked-by: Juan Quintela RH-Acked-by: Kevin Wolf RH-Acked-by: Jes Sorensen From: Christoph Hellwig Raise a config change interrupt when the size changed. This allows virtio-blk guest drivers to read-read the information from the config space once it got the config chaged interrupt. Signed-off-by: Christoph Hellwig Signed-off-by: Kevin Wolf Upstream commit e5051fc70807750f7a4798d2d83e159793c466d3 BZ: 515775 Signed-off-by: Luiz Capitulino --- hw/virtio-blk.c | 10 ++++++++++ 1 files changed, 10 insertions(+), 0 deletions(-) diff --git a/hw/virtio-blk.c b/hw/virtio-blk.c index b965173..898985d 100644 --- a/hw/virtio-blk.c +++ b/hw/virtio-blk.c @@ -511,6 +511,15 @@ static int virtio_blk_load(QEMUFile *f, void *opaque, int version_id) return 0; } +static void virtio_blk_change_cb(void *opaque, int reason) +{ + VirtIOBlock *s = opaque; + + if (reason & CHANGE_SIZE) { + virtio_notify_config(&s->vdev); + } +} + VirtIODevice *virtio_blk_init(DeviceState *dev, BlockConf *conf) { VirtIOBlock *s; @@ -538,6 +547,7 @@ VirtIODevice *virtio_blk_init(DeviceState *dev, BlockConf *conf) register_savevm(dev, "virtio-blk", virtio_blk_id++, 2, virtio_blk_save, virtio_blk_load, s); bdrv_set_removable(s->bs, 0); + bdrv_set_change_cb(s->bs, virtio_blk_change_cb, s); s->bs->buffer_alignment = conf->logical_block_size; add_boot_device_path(conf->bootindex, dev, "/disk@0,0"); -- 1.7.4.rc1.16.gd2f15e