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