qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Anthony Liguori <anthony@codemonkey.ws>
To: Kevin Wolf <kwolf@redhat.com>
Cc: qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] [PATCH 05/11] virtio-blk: support VIRTIO_BLK_F_CONFIG_WCE
Date: Sun, 12 Aug 2012 15:47:21 -0500	[thread overview]
Message-ID: <87wr13bzxi.fsf@codemonkey.ws> (raw)
In-Reply-To: <1344617249-6620-6-git-send-email-kwolf@redhat.com>

Kevin Wolf <kwolf@redhat.com> writes:

> From: Paolo Bonzini <pbonzini@redhat.com>
>
> Also rename VIRTIO_BLK_F_WCACHE to VIRTIO_BLK_F_WCE for consistency with
> the spec.
>
> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
> Signed-off-by: Kevin Wolf <kwolf@redhat.com>

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

  reply	other threads:[~2012-08-12 20:47 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-08-10 16:47 [Qemu-devel] [PULL 00/11] Block patches Kevin Wolf
2012-08-10 16:47 ` [Qemu-devel] [PATCH 01/11] virtio-blk: fix use-after-free while handling scsi commands Kevin Wolf
2012-08-10 16:47 ` [Qemu-devel] [PATCH 02/11] ahci: Fix ahci cdrom read corruptions for reads > 128k Kevin Wolf
2012-08-10 16:47 ` [Qemu-devel] [PATCH 03/11] ahci: Fix sglist memleak in ahci_dma_rw_buf() Kevin Wolf
2012-08-10 16:47 ` [Qemu-devel] [PATCH 04/11] qemu-iotests: Save some sed processes Kevin Wolf
2012-08-10 16:47 ` [Qemu-devel] [PATCH 05/11] virtio-blk: support VIRTIO_BLK_F_CONFIG_WCE Kevin Wolf
2012-08-12 20:47   ` Anthony Liguori [this message]
2012-08-10 16:47 ` [Qemu-devel] [PATCH 06/11] virtio-blk: disable write cache if not negotiated Kevin Wolf
2012-08-10 16:47 ` [Qemu-devel] [PATCH 07/11] blockdev: flip default cache mode from writethrough to writeback Kevin Wolf
2013-03-27 15:16   ` Artyom Tarasenko
2013-03-27 15:19     ` Paolo Bonzini
2012-08-10 16:47 ` [Qemu-devel] [PATCH 08/11] qed: mark image clean after repair succeeds Kevin Wolf
2012-08-10 16:47 ` [Qemu-devel] [PATCH 09/11] qcow2: " Kevin Wolf
2012-08-10 16:47 ` [Qemu-devel] [PATCH 10/11] block: add BLOCK_O_CHECK for qemu-img check Kevin Wolf
2012-08-10 16:47 ` [Qemu-devel] [PATCH 11/11] qemu-iotests: skip 039 with ./check -nocache Kevin Wolf
2012-08-12 18:14 ` [Qemu-devel] [PULL 00/11] Block patches Anthony Liguori

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=87wr13bzxi.fsf@codemonkey.ws \
    --to=anthony@codemonkey.ws \
    --cc=kwolf@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).