[RFC PATCH v1 17/17] vmstate: Reduce indentation levels

Fabiano Rosas posted 17 patches 1 week, 2 days ago
[RFC PATCH v1 17/17] vmstate: Reduce indentation levels
Posted by Fabiano Rosas 1 week, 2 days ago
Simply move the code out of the else branch.

Signed-off-by: Fabiano Rosas <farosas@suse.de>
---
 migration/vmstate.c | 193 ++++++++++++++++++++++----------------------
 1 file changed, 96 insertions(+), 97 deletions(-)

diff --git a/migration/vmstate.c b/migration/vmstate.c
index 054e642ec9..22f8758960 100644
--- a/migration/vmstate.c
+++ b/migration/vmstate.c
@@ -306,46 +306,46 @@ bool vmstate_load_vmsd(QEMUFile *f, const VMStateDescription *vmsd,
         if (!exists) {
             field++;
             continue;
-        } else {
-            n_elems = vmstate_n_elems(opaque, field);
-            size = vmstate_size(opaque, field);
+        }
 
-            head = vmstate_first(opaque, field, size, n_elems,
-                                 !(field->flags & VMS_ARRAY_OF_POINTER));
+        n_elems = vmstate_n_elems(opaque, field);
+        size = vmstate_size(opaque, field);
 
-            for (i = 0; i < n_elems; i++) {
-                /* If we will process the load of field? */
-                bool load_field = true;
-                void *curr_elem;
+        head = vmstate_first(opaque, field, size, n_elems,
+                             !(field->flags & VMS_ARRAY_OF_POINTER));
 
-                if (field->flags & VMS_ARRAY_OF_POINTER) {
-                    /* Peek a possible pointer marker instead of VMSD first */
-                    ok = vmstate_ptr_marker_load(f, &load_field);
-                }
+        for (i = 0; i < n_elems; i++) {
+            /* If we will process the load of field? */
+            bool load_field = true;
+            void *curr_elem;
 
-                curr_elem = vmstate_next(head, field, size, i,
-                                         load_field && ok);
+            if (field->flags & VMS_ARRAY_OF_POINTER) {
+                /* Peek a possible pointer marker instead of VMSD first */
+                ok = vmstate_ptr_marker_load(f, &load_field);
+            }
 
-                if (load_field) {
-                    ok = vmstate_load_field(f, curr_elem, size, field, errp);
-                }
+            curr_elem = vmstate_next(head, field, size, i, load_field && ok);
 
-                if (ok) {
-                    int ret = qemu_file_get_error(f);
-                    if (ret < 0) {
-                        error_setg(errp,
-                                   "Failed to load %s state: stream error: %d",
-                                   vmsd->name, ret);
-                        trace_vmstate_load_field_error(field->name, ret);
-                        return false;
-                    }
-                } else {
-                    qemu_file_set_error(f, -EINVAL);
-                    trace_vmstate_load_field_error(field->name, -EINVAL);
+            if (load_field) {
+                ok = vmstate_load_field(f, curr_elem, size, field, errp);
+            }
+
+            if (ok) {
+                int ret = qemu_file_get_error(f);
+                if (ret < 0) {
+                    error_setg(errp,
+                               "Failed to load %s state: stream error: %d",
+                               vmsd->name, ret);
+                    trace_vmstate_load_field_error(field->name, ret);
                     return false;
                 }
+            } else {
+                qemu_file_set_error(f, -EINVAL);
+                trace_vmstate_load_field_error(field->name, -EINVAL);
+                return false;
             }
         }
+
         field++;
     }
     assert(field->flags == VMS_END);
@@ -663,93 +663,92 @@ static bool vmstate_save_vmsd_v(QEMUFile *f, const VMStateDescription *vmsd,
         if (!exists) {
             field++;
             continue;
-        } else {
-            n_elems = vmstate_n_elems(opaque, field);
-            size = vmstate_size(opaque, field);
+        }
 
-            trace_vmstate_save_state_loop(vmsd->name, field->name, n_elems);
-            head = vmstate_first(opaque, field, size, n_elems, false);
+        n_elems = vmstate_n_elems(opaque, field);
+        size = vmstate_size(opaque, field);
 
-            for (i = 0; i < n_elems; i++) {
-                bool save_field = true;
-                void *curr_elem = vmstate_next(head, field, size, i, false);
-                int max_elems = n_elems - i;
+        trace_vmstate_save_state_loop(vmsd->name, field->name, n_elems);
+        head = vmstate_first(opaque, field, size, n_elems, false);
 
-                if (field->flags & VMS_ARRAY_OF_POINTER) {
-                    bool use_marker_field, is_null, use_dynamic_array;
+        for (i = 0; i < n_elems; i++) {
+            bool save_field = true;
+            void *curr_elem = vmstate_next(head, field, size, i, false);
+            int max_elems = n_elems - i;
 
-                    is_null = !curr_elem;
+            if (field->flags & VMS_ARRAY_OF_POINTER) {
+                bool use_marker_field, is_null, use_dynamic_array;
 
+                is_null = !curr_elem;
+
+                /*
+                 * When this is enabled, it means we will always push a ptr
+                 * marker first for each element saying if it's populated.
+                 */
+                use_dynamic_array =
+                    field->flags & VMS_ARRAY_OF_POINTER &&
+                    field->flags & VMS_ALLOC;
+
+                use_marker_field = use_dynamic_array || is_null;
+
+                if (vmdesc && vmsd_can_compress(field)) {
                     /*
-                     * When this is enabled, it means we will always push a ptr
-                     * marker first for each element saying if it's populated.
+                     * This logic only matters when dumping VM
+                     * Desc, and only when the VMSD field can be
+                     * compressed.
+                     *
+                     * Due to the fake nullptr handling above, if
+                     * there's mixed null/non-null data, it
+                     * doesn't make sense to emit a compressed
+                     * array representation spanning the entire
+                     * array because the field types will be
+                     * different (e.g. struct vs. nullptr). Search
+                     * ahead for the next null/non-null element
+                     * and start a new compressed array if found.
                      */
-                    use_dynamic_array =
-                        field->flags & VMS_ARRAY_OF_POINTER &&
-                        field->flags & VMS_ALLOC;
-
-                    use_marker_field = use_dynamic_array || is_null;
-
-                    if (vmdesc && vmsd_can_compress(field)) {
-                        /*
-                         * This logic only matters when dumping VM
-                         * Desc, and only when the VMSD field can be
-                         * compressed.
-                         *
-                         * Due to the fake nullptr handling above, if
-                         * there's mixed null/non-null data, it
-                         * doesn't make sense to emit a compressed
-                         * array representation spanning the entire
-                         * array because the field types will be
-                         * different (e.g. struct vs. nullptr). Search
-                         * ahead for the next null/non-null element
-                         * and start a new compressed array if found.
-                         */
-                        if (is_null != is_null_prev) {
-                            is_null_prev = is_null;
-                            use_vmdesc = true;
-
-                            for (int j = i + 1; j < n_elems; j++) {
-                                void *elem = vmstate_next(head, field, size, j,
-                                                          false);
-                                bool elem_is_null = !elem;
-
-                                if (is_null != elem_is_null) {
-                                    max_elems = j - i;
-                                    break;
-                                }
-                            }
-                        }
-                    }
-
-                    if (use_dynamic_array) {
+                    if (is_null != is_null_prev) {
+                        is_null_prev = is_null;
                         use_vmdesc = true;
-                    }
 
-                    if (use_marker_field) {
-                        ok = vmstate_ptr_marker_save(f, curr_elem, vmsd, field,
-                                                     use_vmdesc ? vmdesc : NULL,
-                                                     i, max_elems, errp);
-                        if (!ok) {
-                            goto out;
+                        for (int j = i + 1; j < n_elems; j++) {
+                            void *elem = vmstate_next(head, field, size, j,
+                                                      false);
+                            bool elem_is_null = !elem;
+
+                            if (is_null != elem_is_null) {
+                                max_elems = j - i;
+                                break;
+                            }
                         }
-
-                        save_field = !!curr_elem;
                     }
                 }
 
-                if (save_field) {
-                    ok = vmstate_save_field_with_vmdesc(
-                        f, curr_elem, size, vmsd, field,
-                        use_vmdesc ? vmdesc : NULL, i, max_elems, errp);
+                if (use_dynamic_array) {
+                    use_vmdesc = true;
+                }
 
+                if (use_marker_field) {
+                    ok = vmstate_ptr_marker_save(f, curr_elem, vmsd, field,
+                                                 use_vmdesc ? vmdesc : NULL,
+                                                 i, max_elems, errp);
                     if (!ok) {
                         goto out;
                     }
+
+                    save_field = !!curr_elem;
                 }
+            }
 
-                use_vmdesc = false;
+            if (save_field) {
+                ok = vmstate_save_field_with_vmdesc(f, curr_elem, size, vmsd,
+                                                    field,
+                                                    use_vmdesc ? vmdesc : NULL,
+                                                    i, max_elems, errp);
+                if (!ok) {
+                    goto out;
+                }
             }
+            use_vmdesc = false;
         }
         field++;
     }
-- 
2.51.0