On 01/12/2015 11:30 PM, John Ferlan wrote: > <No commit message>? > > Seems we're fixing two issues here > > #1. The ExitMonitor issue > > #2. Somehow the disk->info.alias becomes NULL and thus we're making a > local copy to avoid that. > > On 01/07/2015 10:42 AM, Ján Tomko wrote: >> --- >> src/qemu/qemu_driver.c | 26 +++++++++++++++++++------- >> 1 file changed, 19 insertions(+), 7 deletions(-) >>
>> @@ -10231,6 +10238,8 @@ qemuDomainBlockStatsFlags(virDomainPtr dom,
>> disk->dst);
>> goto endjob;
>> }
>> + if (VIR_STRDUP(diskAlias, disk->info.alias) < 0)
>> + goto endjob;
>
> so diskAlias is only set if *nparams != 0, but...
>
>> }
>>
>> priv = vm->privateData;
>> @@ -10241,12 +10250,12 @@ qemuDomainBlockStatsFlags(virDomainPtr dom,
>> ret = qemuMonitorGetBlockStatsParamsNumber(priv->mon, nparams);
>>
>> if (tmp == 0 || ret < 0) {
>> - qemuDomainObjExitMonitor(driver, vm);
>> + ignore_value(qemuDomainObjExitMonitor(driver, vm));
>
> Can tmp == 0 and ret == 0? Thus when go to endjob and eventually exit
> we don't a failure? Does it matter? I suppose for consistency it does.
Just a few lines above *nparams gets assigned to tmp. So if no block stats
were requested, there's nothing to return back to the user and no need to fail.
>
>> goto endjob;
>> }
>>
>> ret = qemuMonitorGetBlockStatsInfo(priv->mon,
>> - disk->info.alias,
>> + diskAlias,
>
> ...used here regardless of *nparams... Can we get here with diskAlias
> == NULL?
>
No, if tmp == 0 we jump to endjob.
>> &rd_req,
>> &rd_bytes,
>> &rd_total_times,
>> @@ -10257,7 +10266,8 @@ qemuDomainBlockStatsFlags(virDomainPtr dom,
>> &flush_total_times,
>> &errs);
>>
>> - qemuDomainObjExitMonitor(driver, vm);
>> + if (qemuDomainObjExitMonitor(driver, vm) < 0)
>> + ret = -1;
>>
>> if (ret < 0)
>> goto endjob;
>> @@ -10342,6 +10352,7 @@ qemuDomainBlockStatsFlags(virDomainPtr dom,
>> qemuDomainObjEndJob(driver, vm);
>>
>> cleanup:
>> + VIR_FREE(diskAlias);
>> qemuDomObjEndAPI(&vm);
>> return ret;
>> }
>> @@ -16853,7 +16864,8 @@ qemuDomainSetBlockIoTune(virDomainPtr dom,
>> qemuDomainObjEnterMonitor(driver, vm);
>> ret = qemuMonitorSetBlockIoThrottle(priv->mon, device,
>> &info, supportMaxOptions);
>> - qemuDomainObjExitMonitor(driver, vm);
>> + if (qemuDomainObjExitMonitor(driver, vm) < 0)
>> + goto endjob;
>
> Potentially leaving ret = 0 from the IoThrottle call... Should just set
> ret = -1 (liek done in qemuDomainBlockStatsFlags above)
>
I've fixed that and wrote a commit message.
Jan
>
> ACK with a commit message and the issues resolved.
>
> John
>
>> if (ret < 0)
>> goto endjob;
>> vm->def->disks[idx]->blkdeviotune = info;
>>
>
> --
> libvir-list mailing list
> [email protected]
> https://www.redhat.com/mailman/listinfo/libvir-list
>
signature.asc
Description: OpenPGP digital signature
-- libvir-list mailing list [email protected] https://www.redhat.com/mailman/listinfo/libvir-list
