[PATCH 2/6] qemuMigrationCookieNew: Refactor allocation and cleanup

Michal Prívozník mprivozn at redhat.com
Wed Sep 30 15:26:08 UTC 2020


On 9/29/20 5:10 PM, Ján Tomko wrote:
> On a Tuesday in 2020, Peter Krempa wrote:
>> Move around some code so that we can get rid of the 'cleanup:' label.
>>
>> Signed-off-by: Peter Krempa <pkrempa at redhat.com>
>> ---
>> src/qemu/qemu_migration_cookie.c | 35 ++++++++++++++++----------------
>> 1 file changed, 17 insertions(+), 18 deletions(-)
>>
>> diff --git a/src/qemu/qemu_migration_cookie.c 
>> b/src/qemu/qemu_migration_cookie.c
>> index 124f61e3ea..a04b74f092 100644
>> --- a/src/qemu/qemu_migration_cookie.c
>> +++ b/src/qemu/qemu_migration_cookie.c
>> @@ -280,31 +280,30 @@ qemuMigrationCookieNew(const virDomainDef *def,
>>                        const char *origname)
>> {
>>     qemuMigrationCookiePtr mig = NULL;
>> -    const char *name;
>> +    unsigned char localHostUUID[VIR_UUID_BUFLEN];
>> +    g_autofree char *localHostname = NULL;
>>
>> -    if (VIR_ALLOC(mig) < 0)
>> -        goto error;
>> -
>> -    if (origname)
>> -        name = origname;
>> -    else
>> -        name = def->name;
>> -    mig->name = g_strdup(name);
>> -    memcpy(mig->uuid, def->uuid, VIR_UUID_BUFLEN);
>> +    if (!(localHostname = virGetHostname()))
>> +        return NULL;
>>
>> -    if (!(mig->localHostname = virGetHostname()))
>> -        goto error;
> 
> Note that as of:
> commit 26d9748ff114a060ee751959d108d062f737f5d9
>      util: replace gethostname() with g_get_hostname()
> the virGetHostname function always g_strdup's something.

Since you mentioned this, g_get_hostname() is horrible API as it caches 
the host name on the first run and returns a const char * so there is no 
way for callers to reflect on changing hostname. We had to drop it in 
qemu-ga, because if qemu-ga was started before network was configured 
then hostname change on DHCP wasn't being reflected. Hopefully, it is 
not a problem for libvirt because we start after NICs are configured. 
And nobody is really changing the hostname once a host is running, or 
are they?

# hostname; virsh hostname ; hostname asdf; virsh hostname ; hostname
bart
bart
bart
asdf

Michal




More information about the libvir-list mailing list