[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH] virtio: verify that all outstanding buffers are
From: |
Michael S. Tsirkin |
Subject: |
Re: [Qemu-devel] [PATCH] virtio: verify that all outstanding buffers are flushed (was Re: vmstate conversion for virtio?) |
Date: |
Mon, 10 Dec 2012 22:35:12 +0200 |
On Wed, Dec 05, 2012 at 01:08:07PM +0200, Michael S. Tsirkin wrote:
> Add sanity check to address the following concern:
>
> On Wed, Dec 05, 2012 at 09:47:22AM +1030, Rusty Russell wrote:
> > All we need is the index of the request; the rest can be re-read from
> > the ring.
>
> I'd like to point out that this is not generally
> true if any available requests are outstanding.
> Imagine a ring of size 4.
> Below A means available U means used.
>
> A 1
> A 2
> U 2
> A 2
> U 2
> A 2
> U 2
> A 2
> U 2
>
> At this point available ring has wrapped around, the only
> way to know head 1 is outstanding is because backend
> has stored this info somewhere.
>
> The reason we manage to migrate without tracking this in migration
> state is because we flush outstanding requests before
> migration.
> This flush is device-specific though, let's add
> a safeguard in virtio core to ensure it's done properly.
>
> Signed-off-by: Michael S. Tsirkin <address@hidden>
Doh sent a wrong patch sorry. I'll resend the right one shortly.
Pls disregard.
> ---
>
> diff --git a/hw/virtio.c b/hw/virtio.c
> index f40a8c5..b80a5a9 100644
> --- a/hw/virtio.c
> +++ b/hw/virtio.c
> @@ -788,6 +788,8 @@ void virtio_save(VirtIODevice *vdev, QEMUFile *f)
> if (vdev->vq[i].vring.num == 0)
> break;
>
> + assert(!vq->inuse);
> +
> qemu_put_be32(f, vdev->vq[i].vring.num);
> qemu_put_be64(f, vdev->vq[i].pa);
> qemu_put_be16s(f, &vdev->vq[i].last_avail_idx);
>
> --
> MST
- [Qemu-devel] vmstate conversion for virtio?, Rusty Russell, 2012/12/03
- Re: [Qemu-devel] vmstate conversion for virtio?, Michael S. Tsirkin, 2012/12/04
- Re: [Qemu-devel] vmstate conversion for virtio?, Juan Quintela, 2012/12/04
- Re: [Qemu-devel] vmstate conversion for virtio?, Rusty Russell, 2012/12/04
- [Qemu-devel] [PATCH] virtio: verify that all outstanding buffers are flushed (was Re: vmstate conversion for virtio?), Michael S. Tsirkin, 2012/12/05
- Re: [Qemu-devel] [PATCH] virtio: verify that all outstanding buffers are flushed (was Re: vmstate conversion for virtio?), Rusty Russell, 2012/12/06
- Re: [Qemu-devel] [PATCH] virtio: verify that all outstanding buffers are flushed (was Re: vmstate conversion for virtio?), Michael S. Tsirkin, 2012/12/06
- Re: [Qemu-devel] [PATCH] virtio: verify that all outstanding buffers are flushed (was Re: vmstate conversion for virtio?), Rusty Russell, 2012/12/06
- Re: [Qemu-devel] [PATCH] virtio: verify that all outstanding buffers are flushed (was Re: vmstate conversion for virtio?), Anthony Liguori, 2012/12/10
- Re: [Qemu-devel] [PATCH] virtio: verify that all outstanding buffers are flushed (was Re: vmstate conversion for virtio?), Rusty Russell, 2012/12/10
- Re: [Qemu-devel] [PATCH] virtio: verify that all outstanding buffers are flushed (was Re: vmstate conversion for virtio?),
Michael S. Tsirkin <=