[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 05/11] virtio-blk: support VIRTIO_BLK_F_CONFIG_W
From: |
Anthony Liguori |
Subject: |
Re: [Qemu-devel] [PATCH 05/11] virtio-blk: support VIRTIO_BLK_F_CONFIG_WCE |
Date: |
Sun, 12 Aug 2012 15:47:21 -0500 |
User-agent: |
Notmuch/0.13.2+93~ged93d79 (http://notmuchmail.org) Emacs/23.3.1 (x86_64-pc-linux-gnu) |
Kevin Wolf <address@hidden> writes:
> From: Paolo Bonzini <address@hidden>
>
> Also rename VIRTIO_BLK_F_WCACHE to VIRTIO_BLK_F_WCE for consistency with
> the spec.
>
> Signed-off-by: Paolo Bonzini <address@hidden>
> Signed-off-by: Kevin Wolf <address@hidden>
This broke qemu-test because it changed the pc-1.0 machine type:
Setting guest RANDOM seed to 47167
*** Running tests ***
Running test /tests/finger-print.sh... OK
--- fingerprints/pc-1.0.x86_64 2011-12-18 13:08:40.000000000 -0600
+++ fingerprint.txt 2012-08-12 13:30:48.000000000 -0500
@@ -55,7 +55,7 @@
/sys/bus/pci/devices/0000:00:06.0/subsystem_device=0x0002
/sys/bus/pci/devices/0000:00:06.0/class=0x010000
/sys/bus/pci/devices/0000:00:06.0/revision=0x00
-/sys/bus/pci/devices/0000:00:06.0/virtio/host-features=0x710006d4
+/sys/bus/pci/devices/0000:00:06.0/virtio/host-features=0x71000ed4
/sys/class/dmi/id/bios_vendor=Bochs
/sys/class/dmi/id/bios_date=01/01/2007
/sys/class/dmi/id/bios_version=Bochs
Guest fingerprint changed for pc-1.0!
Need to make this a qdev-visible feature and then add compatibility
properties for all of the old machine types.
Regards,
Anthony Liguori
> ---
> hw/virtio-blk.c | 16 ++++++++++++++--
> hw/virtio-blk.h | 4 +++-
> 2 files changed, 17 insertions(+), 3 deletions(-)
>
> diff --git a/hw/virtio-blk.c b/hw/virtio-blk.c
> index 552b3b6..97bb4bd 100644
> --- a/hw/virtio-blk.c
> +++ b/hw/virtio-blk.c
> @@ -510,9 +510,19 @@ static void virtio_blk_update_config(VirtIODevice *vdev,
> uint8_t *config)
> blkcfg.size_max = 0;
> blkcfg.physical_block_exp = get_physical_block_exp(s->conf);
> blkcfg.alignment_offset = 0;
> + blkcfg.wce = bdrv_enable_write_cache(s->bs);
> memcpy(config, &blkcfg, sizeof(struct virtio_blk_config));
> }
>
> +static void virtio_blk_set_config(VirtIODevice *vdev, const uint8_t *config)
> +{
> + VirtIOBlock *s = to_virtio_blk(vdev);
> + struct virtio_blk_config blkcfg;
> +
> + memcpy(&blkcfg, config, sizeof(blkcfg));
> + bdrv_set_enable_write_cache(s->bs, blkcfg.wce != 0);
> +}
> +
> static uint32_t virtio_blk_get_features(VirtIODevice *vdev, uint32_t
> features)
> {
> VirtIOBlock *s = to_virtio_blk(vdev);
> @@ -523,9 +533,10 @@ static uint32_t virtio_blk_get_features(VirtIODevice
> *vdev, uint32_t features)
> features |= (1 << VIRTIO_BLK_F_BLK_SIZE);
> features |= (1 << VIRTIO_BLK_F_SCSI);
>
> + features |= (1 << VIRTIO_BLK_F_CONFIG_WCE);
> if (bdrv_enable_write_cache(s->bs))
> - features |= (1 << VIRTIO_BLK_F_WCACHE);
> -
> + features |= (1 << VIRTIO_BLK_F_WCE);
> +
> if (bdrv_is_read_only(s->bs))
> features |= 1 << VIRTIO_BLK_F_RO;
>
> @@ -610,6 +621,7 @@ VirtIODevice *virtio_blk_init(DeviceState *dev,
> VirtIOBlkConf *blk)
> sizeof(VirtIOBlock));
>
> s->vdev.get_config = virtio_blk_update_config;
> + s->vdev.set_config = virtio_blk_set_config;
> s->vdev.get_features = virtio_blk_get_features;
> s->vdev.reset = virtio_blk_reset;
> s->bs = blk->conf.bs;
> diff --git a/hw/virtio-blk.h b/hw/virtio-blk.h
> index 79ebccc..35834cf 100644
> --- a/hw/virtio-blk.h
> +++ b/hw/virtio-blk.h
> @@ -31,8 +31,9 @@
> #define VIRTIO_BLK_F_BLK_SIZE 6 /* Block size of disk is available*/
> #define VIRTIO_BLK_F_SCSI 7 /* Supports scsi command passthru */
> /* #define VIRTIO_BLK_F_IDENTIFY 8 ATA IDENTIFY supported,
> DEPRECATED */
> -#define VIRTIO_BLK_F_WCACHE 9 /* write cache enabled */
> +#define VIRTIO_BLK_F_WCE 9 /* write cache enabled */
> #define VIRTIO_BLK_F_TOPOLOGY 10 /* Topology information is available
> */
> +#define VIRTIO_BLK_F_CONFIG_WCE 11 /* write cache configurable */
>
> #define VIRTIO_BLK_ID_BYTES 20 /* ID string length */
>
> @@ -49,6 +50,7 @@ struct virtio_blk_config
> uint8_t alignment_offset;
> uint16_t min_io_size;
> uint32_t opt_io_size;
> + uint8_t wce;
> } QEMU_PACKED;
>
> /* These two define direction. */
> --
> 1.7.6.5
- [Qemu-devel] [PULL 00/11] Block patches, Kevin Wolf, 2012/08/10
- [Qemu-devel] [PATCH 01/11] virtio-blk: fix use-after-free while handling scsi commands, Kevin Wolf, 2012/08/10
- [Qemu-devel] [PATCH 02/11] ahci: Fix ahci cdrom read corruptions for reads > 128k, Kevin Wolf, 2012/08/10
- [Qemu-devel] [PATCH 03/11] ahci: Fix sglist memleak in ahci_dma_rw_buf(), Kevin Wolf, 2012/08/10
- [Qemu-devel] [PATCH 05/11] virtio-blk: support VIRTIO_BLK_F_CONFIG_WCE, Kevin Wolf, 2012/08/10
- Re: [Qemu-devel] [PATCH 05/11] virtio-blk: support VIRTIO_BLK_F_CONFIG_WCE,
Anthony Liguori <=
- [Qemu-devel] [PATCH 04/11] qemu-iotests: Save some sed processes, Kevin Wolf, 2012/08/10
- [Qemu-devel] [PATCH 06/11] virtio-blk: disable write cache if not negotiated, Kevin Wolf, 2012/08/10
- [Qemu-devel] [PATCH 09/11] qcow2: mark image clean after repair succeeds, Kevin Wolf, 2012/08/10
- [Qemu-devel] [PATCH 07/11] blockdev: flip default cache mode from writethrough to writeback, Kevin Wolf, 2012/08/10
- [Qemu-devel] [PATCH 08/11] qed: mark image clean after repair succeeds, Kevin Wolf, 2012/08/10
- [Qemu-devel] [PATCH 11/11] qemu-iotests: skip 039 with ./check -nocache, Kevin Wolf, 2012/08/10
- [Qemu-devel] [PATCH 10/11] block: add BLOCK_O_CHECK for qemu-img check, Kevin Wolf, 2012/08/10
- Re: [Qemu-devel] [PULL 00/11] Block patches, Anthony Liguori, 2012/08/12