Re: [PATCH] drivers: virtio_blk: notify blk-core when hw-queue number changes

From: Bob Liu
Date: Thu Jul 28 2016 - 04:18:45 EST



On 06/19/2016 06:10 AM, Paolo Bonzini wrote:
>
>
> On 13/06/2016 11:58, Bob Liu wrote:
>> A guest might be migrated to other hosts with different num_queues, the
>> blk-core should aware of that else the reference of &vblk->vqs[qid] may be wrong.
>>
>> Signed-off-by: Bob Liu <bob.liu@xxxxxxxxxx>
>> ---
>> drivers/block/virtio_blk.c | 3 +++
>> 1 file changed, 3 insertions(+)
>>
>> diff --git a/drivers/block/virtio_blk.c b/drivers/block/virtio_blk.c
>> index 42758b5..c169238 100644
>> --- a/drivers/block/virtio_blk.c
>> +++ b/drivers/block/virtio_blk.c
>> @@ -819,6 +819,9 @@ static int virtblk_restore(struct virtio_device *vdev)
>> if (ret)
>> return ret;
>>
>> + if (vblk->num_vqs != vblk->tag_set.nr_hw_queues)
>> + blk_mq_update_nr_hw_queues(&vblk->tag_set, vblk->num_vqs);
>> +
>> virtio_device_ready(vdev);
>>
>> blk_mq_start_stopped_hw_queues(vblk->disk->queue, true);
>>
>
> This should never happen; it'd be a configuration problem.
>

Do you mean all hosts have to be configured with the same number of ->num_vqs?
What about cases like migrating a guest from HostA to HostB while HostB is much more powerful
and would like to run more hardware queues to get better performance.

Thanks,
Bob Liu