[libvirt] [PATCH v2] qemu: return -1 on error paths in qemuDomainSaveImageStartVM
Nikolay Shirokovskiy
nshirokovskiy at virtuozzo.com
Mon Feb 1 12:24:03 UTC 2016
On 01.02.2016 15:08, Jiri Denemark wrote:
> On Fri, Jan 29, 2016 at 11:49:45 +0300, Nikolay Shirokovskiy wrote:
>> Error paths after sending the event that domain is started written as if ret = -1
>> which is set at the beginning of the function. It's common idioma to keep 'ret'
>> equal to -1 until the end of function where it is set to 0. But here we use ret
>> to keep result of restore operation too and thus breaks the idioma and its users :)
>>
>> Let's use different variable to hold restore result.
>>
>> Signed-off-by: Nikolay Shirokovskiy <nshirokovskiy at virtuozzo.com>
>> ---
>> src/qemu/qemu_driver.c | 21 ++++++++++-----------
>> 1 file changed, 10 insertions(+), 11 deletions(-)
>>
>> diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
>> index 351e529..ced105b 100644
>> --- a/src/qemu/qemu_driver.c
>> +++ b/src/qemu/qemu_driver.c
>> @@ -6732,6 +6732,7 @@ qemuDomainSaveImageStartVM(virConnectPtr conn,
>> qemuDomainAsyncJob asyncJob)
>> {
>> int ret = -1;
>> + bool restored;
>> virObjectEventPtr event;
>> int intermediatefd = -1;
>> virCommandPtr cmd = NULL;
>> @@ -6758,13 +6759,13 @@ qemuDomainSaveImageStartVM(virConnectPtr conn,
>> }
>>
>> /* Set the migration source and start it up. */
>> - ret = qemuProcessStart(conn, driver, vm, asyncJob,
>> - "stdio", *fd, path, NULL,
>> - VIR_NETDEV_VPORT_PROFILE_OP_RESTORE,
>> - VIR_QEMU_PROCESS_START_PAUSED);
>> + restored = qemuProcessStart(conn, driver, vm, asyncJob,
>> + "stdio", *fd, path, NULL,
>> + VIR_NETDEV_VPORT_PROFILE_OP_RESTORE,
>> + VIR_QEMU_PROCESS_START_PAUSED) >= 0;
>
> I was pretty confused when I saw this for the first time... it's too
> easy to miss the comparison at the end. I suggest changing the code to
> something similar to the following:
>
> bool restored = false;
> ...
> if (qemuProcessStart(conn, driver, vm, asyncJob,
> "stdio", *fd, path, NULL,
> VIR_NETDEV_VPORT_PROFILE_OP_RESTORE,
> VIR_QEMU_PROCESS_START_PAUSED) == 0)
> restored = true;
True. Will fix.
>
> Jirka
>
More information about the libvir-list
mailing list