From: Jason Wang <jasowang@redhat.com>
To: "Michael S. Tsirkin" <mst@redhat.com>,
Thibaut Collet <thibaut.collet@6wind.com>
Cc: pbonzini@redhat.com, marcandre.lureau@gmail.com,
qemu-devel@nongnu.org, haifeng.lin@huawei.com
Subject: Re: [Qemu-devel] [PATCH 1/1] vhost: set the correct queue index in case of migration with multiqueue
Date: Wed, 21 Oct 2015 11:03:10 +0800 [thread overview]
Message-ID: <5627006E.6000601@redhat.com> (raw)
In-Reply-To: <20151020163155-mutt-send-email-mst@redhat.com>
On 10/20/2015 09:33 PM, Michael S. Tsirkin wrote:
> On Mon, Oct 19, 2015 at 02:59:27PM +0200, Thibaut Collet wrote:
>> When a live migration is started the log address to mark dirty pages is provided
>> to the vhost backend through the vhost_dev_set_log function.
>> This function is called for each queue pairs but the queue index is wrongly set:
>> always set to the first queue pair. Then vhost backend lost descriptor addresses
>> of the queue pairs greater than 1 and behaviour of the vhost backend is
>> unpredictable.
>>
>> The queue index is computed by taking account of the vq_index (to retrieve the
>> queue pair index) and calling the vhost_get_vq_index method of the backend.
>>
>> Signed-off-by: Thibaut Collet <thibaut.collet@6wind.com>
> Thanks!
> The code in question was added by:
> commit a9f98bb5ebe6fb1869321dcc58e72041ae626ad8
> Author: Jason Wang <jasowang@redhat.com>
> Date: Wed Jan 30 19:12:35 2013 +0800
>
> vhost: multiqueue support
>
> Jason, could you comment on whether this makes sense please?
It makes sense.
> If yes - this is an old bug, and we need this on stable,
> do we not?
But not an old bug, only vhost-user has this issue. So no need for stable.
>
> Maybe we should refactor vhost_virtqueue_set_addr to
> make it call vhost_get_vq_index internally automatically.
> All callers do this anyway.
> This can be a patch on top.
Yes, this looks cleaner.
>
>> ---
>> hw/virtio/vhost.c | 8 +++++---
>> 1 file changed, 5 insertions(+), 3 deletions(-)
>>
>> diff --git a/hw/virtio/vhost.c b/hw/virtio/vhost.c
>> index feeaaa4..de29968 100644
>> --- a/hw/virtio/vhost.c
>> +++ b/hw/virtio/vhost.c
>> @@ -656,13 +656,14 @@ static int vhost_dev_set_features(struct vhost_dev *dev, bool enable_log)
>>
>> static int vhost_dev_set_log(struct vhost_dev *dev, bool enable_log)
>> {
>> - int r, t, i;
>> + int r, t, i, idx;
>> r = vhost_dev_set_features(dev, enable_log);
>> if (r < 0) {
>> goto err_features;
>> }
>> for (i = 0; i < dev->nvqs; ++i) {
>> - r = vhost_virtqueue_set_addr(dev, dev->vqs + i, i,
>> + idx = dev->vhost_ops->vhost_get_vq_index(dev, dev->vq_index + i);
>> + r = vhost_virtqueue_set_addr(dev, dev->vqs + i, idx,
>> enable_log);
>> if (r < 0) {
>> goto err_vq;
>> @@ -671,7 +672,8 @@ static int vhost_dev_set_log(struct vhost_dev *dev, bool enable_log)
>> return 0;
>> err_vq:
>> for (; i >= 0; --i) {
>> - t = vhost_virtqueue_set_addr(dev, dev->vqs + i, i,
>> + idx = dev->vhost_ops->vhost_get_vq_index(dev, dev->vq_index + i);
>> + t = vhost_virtqueue_set_addr(dev, dev->vqs + i, idx,
>> dev->log_enabled);
>> assert(t >= 0);
>> }
>> --
>> 2.1.4
prev parent reply other threads:[~2015-10-21 3:03 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-10-19 12:59 [Qemu-devel] [PATCH 0/1] vhost-user: support of live migration with multiqueue Thibaut Collet
2015-10-19 12:59 ` [Qemu-devel] [PATCH 1/1] vhost: set the correct queue index in case of " Thibaut Collet
2015-10-19 15:41 ` Michael S. Tsirkin
2015-10-19 16:41 ` Thibaut Collet
2015-10-20 13:25 ` Michael S. Tsirkin
2015-10-20 13:33 ` Michael S. Tsirkin
2015-10-21 3:03 ` Jason Wang [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=5627006E.6000601@redhat.com \
--to=jasowang@redhat.com \
--cc=haifeng.lin@huawei.com \
--cc=marcandre.lureau@gmail.com \
--cc=mst@redhat.com \
--cc=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=thibaut.collet@6wind.com \
/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.