On 2012-12-03 16:53, Osier wrote:
>On 2012年12月03日 11:39, hzguanqiang wrote:
>> On 2012-12-03 10:33, Osier wrote:
>>  >On 2012年11月28日 16:34, hzguanqiang wrote:
>>  >> Hi, guys.
>>  >> I want to change block I/O throttle using 'virsh blkdeviotune' with vm
>>  >> not running, it reported an error:
>>  >> # virsh blkdeviotune instance-000000dc /dev/loop0 --total-bytes-sec
>>  >> 20000000 --total-iops-sec 20 --config
>>  >> error: Unable to change block I/O throttle
>>  >> error: unsupported configuration: block I/O throttling not supported
>>  >> with this QEMU binary
>>  >> I can do this when the vm is running. Is it a bug? How can I fix this
>>  >> problem.
>>  >
>>  >It just looks strange, as you can tune when the VM is active. Because
>>  >the qemu capabilities is collected during the qemu driver starts up,
>>  >which is independant with the domain states.
>>  >
>>  >Probably you will want to debug the qemu capabilities collecting
>>  >process.
>>  >
>>  >Osier
>> Osier, Firstly, thanks for your reply.
>> The situation is that I want to resize the disk and meanwhile reset the
>> block I/O throttle. And during the whole process, The vm is stopped.
>> I've found this was directly caused by the patch "qemu: reject
>> blockiotune if qemu too old" post by Eric Blake long before. I've sent
>> an email to ask him the reason. Maybe, People think you can't set I/O
>> throtting if vm not started, I guess.
>Eric's path is good, because it makes no sense to set block IO tune
>for inactive guest if the qemu doesn't support it, otherwise the guest
>will fails to start.
>The key point is why the IO tuning can be set when the guest is active,
>while fails when it's inactive. Because the qemu caps is not related
>with the domain states.
Yes, You are right. And I agree with you on Eric's practice.
It failed just because the qemu caps is Null when the vm is inactive.
But what do you mean by saying "the qemu caps is not related with the domain states"?
Do you mean It's just that way and I/O tuning can not be set when vm is inactive, Or something is wrong with my libvirt configure that caused this problem?