[PATCH] qemu_block: Refactor qemuBlockExportAddNBD()

Kristina Hanicova posted 1 patch 2 years, 5 months ago
Test syntax-check failed
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/libvirt tags/patchew/071650947c7bab45933f5928f6fb0eb23847ab12.1635260087.git.khanicov@redhat.com
There is a newer version of this series
src/qemu/qemu_block.c | 33 +++++++++++++--------------------
1 file changed, 13 insertions(+), 20 deletions(-)
[PATCH] qemu_block: Refactor qemuBlockExportAddNBD()
Posted by Kristina Hanicova 2 years, 5 months ago
I think this patch improves readability of the function by
removing unnecessary 'else' branches after 'return' and reworking
the code a bit.

Signed-off-by: Kristina Hanicova <khanicov@redhat.com>
---
 src/qemu/qemu_block.c | 33 +++++++++++++--------------------
 1 file changed, 13 insertions(+), 20 deletions(-)

diff --git a/src/qemu/qemu_block.c b/src/qemu/qemu_block.c
index 34fdec2c4b..4e532d29c0 100644
--- a/src/qemu/qemu_block.c
+++ b/src/qemu/qemu_block.c
@@ -3592,28 +3592,21 @@ qemuBlockExportAddNBD(virDomainObj *vm,
                       const char *bitmap)
 {
     qemuDomainObjPrivate *priv = vm->privateData;
+    g_autoptr(virJSONValue) nbdprops = NULL;
+    const char *bitmaps[2] = { bitmap, NULL };
 
-    if (virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_BLOCKDEV)) {
-        if (virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_BLOCK_EXPORT_ADD)) {
-            g_autoptr(virJSONValue) nbdprops = NULL;
-            const char *bitmaps[2] = { bitmap, NULL };
+    /* older qemu versions didn't support configuring the exportname and
+     * took the 'drivealias' as the export name */
+    if (!virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_BLOCKDEV))
+        return qemuMonitorNBDServerAdd(priv->mon, drivealias, NULL, writable, NULL);
 
-            if (!(nbdprops = qemuBlockExportGetNBDProps(src->nodeformat,
-                                                        exportname,
-                                                        writable,
-                                                        bitmaps)))
-                return -1;
+    if (!virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_BLOCK_EXPORT_ADD))
+        return qemuMonitorNBDServerAdd(priv->mon, src->nodeformat,
+                                       exportname, writable, bitmap);
 
-            return qemuMonitorBlockExportAdd(priv->mon, &nbdprops);
-        } else {
-            return qemuMonitorNBDServerAdd(priv->mon, src->nodeformat,
-                                           exportname, writable, bitmap);
-        }
-    } else {
-        /* older qemu versions didn't support configuring the exportname and
-         * took the 'drivealias' as the export name */
-        return qemuMonitorNBDServerAdd(priv->mon, drivealias, NULL, writable, NULL);
-    }
+    if ((nbdprops = qemuBlockExportGetNBDProps(src->nodeformat, exportname,
+                                               writable, bitmaps)))
+        return qemuMonitorBlockExportAdd(priv->mon, &nbdprops);
 
-    return 0;
+    return -1;
 }
-- 
2.31.1

Re: [PATCH] qemu_block: Refactor qemuBlockExportAddNBD()
Posted by Peter Krempa 2 years, 5 months ago
On Tue, Oct 26, 2021 at 16:58:22 +0200, Kristina Hanicova wrote:
> I think this patch improves readability of the function by
> removing unnecessary 'else' branches after 'return' and reworking
> the code a bit.
> 
> Signed-off-by: Kristina Hanicova <khanicov@redhat.com>
> ---
>  src/qemu/qemu_block.c | 33 +++++++++++++--------------------
>  1 file changed, 13 insertions(+), 20 deletions(-)
> 
> diff --git a/src/qemu/qemu_block.c b/src/qemu/qemu_block.c
> index 34fdec2c4b..4e532d29c0 100644
> --- a/src/qemu/qemu_block.c
> +++ b/src/qemu/qemu_block.c
> @@ -3592,28 +3592,21 @@ qemuBlockExportAddNBD(virDomainObj *vm,
>                        const char *bitmap)
>  {
>      qemuDomainObjPrivate *priv = vm->privateData;
> +    g_autoptr(virJSONValue) nbdprops = NULL;
> +    const char *bitmaps[2] = { bitmap, NULL };
>  
> -    if (virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_BLOCKDEV)) {
> -        if (virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_BLOCK_EXPORT_ADD)) {
> -            g_autoptr(virJSONValue) nbdprops = NULL;
> -            const char *bitmaps[2] = { bitmap, NULL };
> +    /* older qemu versions didn't support configuring the exportname and
> +     * took the 'drivealias' as the export name */
> +    if (!virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_BLOCKDEV))
> +        return qemuMonitorNBDServerAdd(priv->mon, drivealias, NULL, writable, NULL);
>  
> -            if (!(nbdprops = qemuBlockExportGetNBDProps(src->nodeformat,
> -                                                        exportname,
> -                                                        writable,
> -                                                        bitmaps)))
> -                return -1;
> +    if (!virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_BLOCK_EXPORT_ADD))
> +        return qemuMonitorNBDServerAdd(priv->mon, src->nodeformat,
> +                                       exportname, writable, bitmap);

These two are okay, they invoke a different code path when features are
not supported ...

It will indeed help as we can simply delete them when the caps become
obsolete ...

>  
> -            return qemuMonitorBlockExportAdd(priv->mon, &nbdprops);
> -        } else {
> -            return qemuMonitorNBDServerAdd(priv->mon, src->nodeformat,
> -                                           exportname, writable, bitmap);
> -        }
> -    } else {
> -        /* older qemu versions didn't support configuring the exportname and
> -         * took the 'drivealias' as the export name */
> -        return qemuMonitorNBDServerAdd(priv->mon, drivealias, NULL, writable, NULL);
> -    }
> +    if ((nbdprops = qemuBlockExportGetNBDProps(src->nodeformat, exportname,
> +                                               writable, bitmaps)))
> +        return qemuMonitorBlockExportAdd(priv->mon, &nbdprops);

but this is weird and doesn't conform to what we usually do. Write it
as:

    if (!(nbdprops = qemuBlockExportGetNBDProps(src->nodeformat, exportname,
                                                writable, bitmaps)))
        return -1;

    return qemuMonitorBlockExportAdd(priv->mon, &nbdprops);


>  
> -    return 0;
> +    return -1;

And get rid of the above.

>  }
> -- 
> 2.31.1
>