[libvirt] [PATCH v1 02/15] qemu_domain: Separate NVRAM VAR store file name generation

Michal Privoznik posted 15 patches 6 years, 11 months ago
There is a newer version of this series
[libvirt] [PATCH v1 02/15] qemu_domain: Separate NVRAM VAR store file name generation
Posted by Michal Privoznik 6 years, 11 months ago
Move the code that (possibly) generates filename of NVRAM VAR
store into a single function so that it can be re-used later.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
---
 src/qemu/qemu_domain.c | 26 ++++++++++++++++++--------
 src/qemu/qemu_domain.h |  4 ++++
 2 files changed, 22 insertions(+), 8 deletions(-)

diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c
index 59fe1eb401..cf7e650b34 100644
--- a/src/qemu/qemu_domain.c
+++ b/src/qemu/qemu_domain.c
@@ -3876,14 +3876,8 @@ qemuDomainDefPostParse(virDomainDefPtr def,
         goto cleanup;
     }
 
-    if (def->os.loader &&
-        def->os.loader->type == VIR_DOMAIN_LOADER_TYPE_PFLASH &&
-        def->os.loader->readonly == VIR_TRISTATE_SWITCH_ON &&
-        !def->os.loader->nvram) {
-        if (virAsprintf(&def->os.loader->nvram, "%s/%s_VARS.fd",
-                        cfg->nvramDir, def->name) < 0)
-            goto cleanup;
-    }
+    if (qemuDomainNVRAMPathGenerate(cfg, def) < 0)
+        goto cleanup;
 
     if (qemuDomainDefAddDefaultDevices(def, qemuCaps) < 0)
         goto cleanup;
@@ -13944,3 +13938,19 @@ qemuDomainDiskIsMissingLocalOptional(virDomainDiskDefPtr disk)
            virStorageSourceIsLocalStorage(disk->src) && disk->src->path &&
            !virFileExists(disk->src->path);
 }
+
+
+int
+qemuDomainNVRAMPathGenerate(virQEMUDriverConfigPtr cfg,
+                            virDomainDefPtr def)
+{
+    if (def->os.loader &&
+        def->os.loader->type == VIR_DOMAIN_LOADER_TYPE_PFLASH &&
+        def->os.loader->readonly == VIR_TRISTATE_SWITCH_ON &&
+        !def->os.loader->nvram) {
+        return virAsprintf(&def->os.loader->nvram, "%s/%s_VARS.fd",
+                           cfg->nvramDir, def->name);
+    }
+
+    return 0;
+}
diff --git a/src/qemu/qemu_domain.h b/src/qemu/qemu_domain.h
index 7c6b50184c..136a7a7c72 100644
--- a/src/qemu/qemu_domain.h
+++ b/src/qemu/qemu_domain.h
@@ -1107,4 +1107,8 @@ qemuDomainIsUsingNoShutdown(qemuDomainObjPrivatePtr priv);
 bool
 qemuDomainDiskIsMissingLocalOptional(virDomainDiskDefPtr disk);
 
+int
+qemuDomainNVRAMPathGenerate(virQEMUDriverConfigPtr cfg,
+                            virDomainDefPtr def);
+
 #endif /* LIBVIRT_QEMU_DOMAIN_H */
-- 
2.19.2

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list
Re: [libvirt] [PATCH v1 02/15] qemu_domain: Separate NVRAM VAR store file name generation
Posted by Laszlo Ersek 6 years, 11 months ago
On 02/27/19 11:04, Michal Privoznik wrote:
> Move the code that (possibly) generates filename of NVRAM VAR
> store into a single function so that it can be re-used later.
> 
> Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
> ---
>  src/qemu/qemu_domain.c | 26 ++++++++++++++++++--------
>  src/qemu/qemu_domain.h |  4 ++++
>  2 files changed, 22 insertions(+), 8 deletions(-)
> 
> diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c
> index 59fe1eb401..cf7e650b34 100644
> --- a/src/qemu/qemu_domain.c
> +++ b/src/qemu/qemu_domain.c
> @@ -3876,14 +3876,8 @@ qemuDomainDefPostParse(virDomainDefPtr def,
>          goto cleanup;
>      }
>  
> -    if (def->os.loader &&
> -        def->os.loader->type == VIR_DOMAIN_LOADER_TYPE_PFLASH &&
> -        def->os.loader->readonly == VIR_TRISTATE_SWITCH_ON &&
> -        !def->os.loader->nvram) {
> -        if (virAsprintf(&def->os.loader->nvram, "%s/%s_VARS.fd",
> -                        cfg->nvramDir, def->name) < 0)
> -            goto cleanup;
> -    }
> +    if (qemuDomainNVRAMPathGenerate(cfg, def) < 0)
> +        goto cleanup;
>  
>      if (qemuDomainDefAddDefaultDevices(def, qemuCaps) < 0)
>          goto cleanup;
> @@ -13944,3 +13938,19 @@ qemuDomainDiskIsMissingLocalOptional(virDomainDiskDefPtr disk)
>             virStorageSourceIsLocalStorage(disk->src) && disk->src->path &&
>             !virFileExists(disk->src->path);
>  }
> +
> +
> +int
> +qemuDomainNVRAMPathGenerate(virQEMUDriverConfigPtr cfg,
> +                            virDomainDefPtr def)
> +{
> +    if (def->os.loader &&
> +        def->os.loader->type == VIR_DOMAIN_LOADER_TYPE_PFLASH &&
> +        def->os.loader->readonly == VIR_TRISTATE_SWITCH_ON &&
> +        !def->os.loader->nvram) {
> +        return virAsprintf(&def->os.loader->nvram, "%s/%s_VARS.fd",
> +                           cfg->nvramDir, def->name);
> +    }
> +
> +    return 0;
> +}
> diff --git a/src/qemu/qemu_domain.h b/src/qemu/qemu_domain.h
> index 7c6b50184c..136a7a7c72 100644
> --- a/src/qemu/qemu_domain.h
> +++ b/src/qemu/qemu_domain.h
> @@ -1107,4 +1107,8 @@ qemuDomainIsUsingNoShutdown(qemuDomainObjPrivatePtr priv);
>  bool
>  qemuDomainDiskIsMissingLocalOptional(virDomainDiskDefPtr disk);
>  
> +int
> +qemuDomainNVRAMPathGenerate(virQEMUDriverConfigPtr cfg,
> +                            virDomainDefPtr def);
> +
>  #endif /* LIBVIRT_QEMU_DOMAIN_H */
> 

I'm not familiar with restrictions on helper functions (e.g. if they are
supposed to sanity check input params for null pointers etc), but as a
normal code extraction patch, this looks OK to me.

Also presumably the other call will arrive from a different C file,
hence the external linkage and header file change.

Reviewed-by: Laszlo Ersek <lersek@redhat.com>

Thanks
Laszlo

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list
Re: [libvirt] [PATCH v1 02/15] qemu_domain: Separate NVRAM VAR store file name generation
Posted by Michal Privoznik 6 years, 11 months ago
On 2/28/19 10:11 AM, Laszlo Ersek wrote:
> On 02/27/19 11:04, Michal Privoznik wrote:
>> Move the code that (possibly) generates filename of NVRAM VAR
>> store into a single function so that it can be re-used later.
>>
>> Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
>> ---
>>   src/qemu/qemu_domain.c | 26 ++++++++++++++++++--------
>>   src/qemu/qemu_domain.h |  4 ++++
>>   2 files changed, 22 insertions(+), 8 deletions(-)
>>
>> diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c
>> index 59fe1eb401..cf7e650b34 100644
>> --- a/src/qemu/qemu_domain.c
>> +++ b/src/qemu/qemu_domain.c
>> @@ -3876,14 +3876,8 @@ qemuDomainDefPostParse(virDomainDefPtr def,
>>           goto cleanup;
>>       }
>>   
>> -    if (def->os.loader &&
>> -        def->os.loader->type == VIR_DOMAIN_LOADER_TYPE_PFLASH &&
>> -        def->os.loader->readonly == VIR_TRISTATE_SWITCH_ON &&
>> -        !def->os.loader->nvram) {
>> -        if (virAsprintf(&def->os.loader->nvram, "%s/%s_VARS.fd",
>> -                        cfg->nvramDir, def->name) < 0)
>> -            goto cleanup;
>> -    }
>> +    if (qemuDomainNVRAMPathGenerate(cfg, def) < 0)
>> +        goto cleanup;
>>   
>>       if (qemuDomainDefAddDefaultDevices(def, qemuCaps) < 0)
>>           goto cleanup;
>> @@ -13944,3 +13938,19 @@ qemuDomainDiskIsMissingLocalOptional(virDomainDiskDefPtr disk)
>>              virStorageSourceIsLocalStorage(disk->src) && disk->src->path &&
>>              !virFileExists(disk->src->path);
>>   }
>> +
>> +
>> +int
>> +qemuDomainNVRAMPathGenerate(virQEMUDriverConfigPtr cfg,
>> +                            virDomainDefPtr def)
>> +{
>> +    if (def->os.loader &&
>> +        def->os.loader->type == VIR_DOMAIN_LOADER_TYPE_PFLASH &&
>> +        def->os.loader->readonly == VIR_TRISTATE_SWITCH_ON &&
>> +        !def->os.loader->nvram) {
>> +        return virAsprintf(&def->os.loader->nvram, "%s/%s_VARS.fd",
>> +                           cfg->nvramDir, def->name);
>> +    }
>> +
>> +    return 0;
>> +}
>> diff --git a/src/qemu/qemu_domain.h b/src/qemu/qemu_domain.h
>> index 7c6b50184c..136a7a7c72 100644
>> --- a/src/qemu/qemu_domain.h
>> +++ b/src/qemu/qemu_domain.h
>> @@ -1107,4 +1107,8 @@ qemuDomainIsUsingNoShutdown(qemuDomainObjPrivatePtr priv);
>>   bool
>>   qemuDomainDiskIsMissingLocalOptional(virDomainDiskDefPtr disk);
>>   
>> +int
>> +qemuDomainNVRAMPathGenerate(virQEMUDriverConfigPtr cfg,
>> +                            virDomainDefPtr def);
>> +
>>   #endif /* LIBVIRT_QEMU_DOMAIN_H */
>>
> 
> I'm not familiar with restrictions on helper functions (e.g. if they are
> supposed to sanity check input params for null pointers etc), but as a
> normal code extraction patch, this looks OK to me.

There are no rules in libvirt for that. Usually, we take the path of 
least resistance. So when some piece of code needs to be reused, we just 
move it into a function and expose it. Without us adding special checks 
(e.g. argument sanitization). Those are added if the function might be 
called from another place where the assumption that arguments are sane 
can't be made. But it's not the case for this function.

> 
> Also presumably the other call will arrive from a different C file,
> hence the external linkage and header file change.
> 
> Reviewed-by: Laszlo Ersek <lersek@redhat.com>
> 

Thanks,
Michal

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list