migration: wire vmstate_save_state errors up to vmstate_subsection_save
Route the errors from vmstate_save_state up through vmstate_subsection_save (and back down, all rather recursive). Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com> Message-Id: <20170925112917.21340-5-dgilbert@redhat.com> Reviewed-by: Peter Xu <peterx@redhat.com> Reviewed-by: Cornelia Huck <cohuck@redhat.com> Reviewed-by: Juan Quintela <quintela@redhat.com> Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com> Commit message fixed up as per Peter's review
This commit is contained in:
parent
88b0faf185
commit
f3cadd39c4
@ -21,8 +21,8 @@
|
|||||||
#include "trace.h"
|
#include "trace.h"
|
||||||
#include "qjson.h"
|
#include "qjson.h"
|
||||||
|
|
||||||
static void vmstate_subsection_save(QEMUFile *f, const VMStateDescription *vmsd,
|
static int vmstate_subsection_save(QEMUFile *f, const VMStateDescription *vmsd,
|
||||||
void *opaque, QJSON *vmdesc);
|
void *opaque, QJSON *vmdesc);
|
||||||
static int vmstate_subsection_load(QEMUFile *f, const VMStateDescription *vmsd,
|
static int vmstate_subsection_load(QEMUFile *f, const VMStateDescription *vmsd,
|
||||||
void *opaque);
|
void *opaque);
|
||||||
|
|
||||||
@ -395,9 +395,7 @@ int vmstate_save_state(QEMUFile *f, const VMStateDescription *vmsd,
|
|||||||
json_end_array(vmdesc);
|
json_end_array(vmdesc);
|
||||||
}
|
}
|
||||||
|
|
||||||
vmstate_subsection_save(f, vmsd, opaque, vmdesc);
|
return vmstate_subsection_save(f, vmsd, opaque, vmdesc);
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static const VMStateDescription *
|
static const VMStateDescription *
|
||||||
@ -463,11 +461,12 @@ static int vmstate_subsection_load(QEMUFile *f, const VMStateDescription *vmsd,
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void vmstate_subsection_save(QEMUFile *f, const VMStateDescription *vmsd,
|
static int vmstate_subsection_save(QEMUFile *f, const VMStateDescription *vmsd,
|
||||||
void *opaque, QJSON *vmdesc)
|
void *opaque, QJSON *vmdesc)
|
||||||
{
|
{
|
||||||
const VMStateDescription **sub = vmsd->subsections;
|
const VMStateDescription **sub = vmsd->subsections;
|
||||||
bool subsection_found = false;
|
bool subsection_found = false;
|
||||||
|
int ret = 0;
|
||||||
|
|
||||||
trace_vmstate_subsection_save_top(vmsd->name);
|
trace_vmstate_subsection_save_top(vmsd->name);
|
||||||
while (sub && *sub && (*sub)->needed) {
|
while (sub && *sub && (*sub)->needed) {
|
||||||
@ -491,7 +490,10 @@ static void vmstate_subsection_save(QEMUFile *f, const VMStateDescription *vmsd,
|
|||||||
qemu_put_byte(f, len);
|
qemu_put_byte(f, len);
|
||||||
qemu_put_buffer(f, (uint8_t *)vmsdsub->name, len);
|
qemu_put_buffer(f, (uint8_t *)vmsdsub->name, len);
|
||||||
qemu_put_be32(f, vmsdsub->version_id);
|
qemu_put_be32(f, vmsdsub->version_id);
|
||||||
vmstate_save_state(f, vmsdsub, opaque, vmdesc);
|
ret = vmstate_save_state(f, vmsdsub, opaque, vmdesc);
|
||||||
|
if (ret) {
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
if (vmdesc) {
|
if (vmdesc) {
|
||||||
json_end_object(vmdesc);
|
json_end_object(vmdesc);
|
||||||
@ -503,4 +505,6 @@ static void vmstate_subsection_save(QEMUFile *f, const VMStateDescription *vmsd,
|
|||||||
if (vmdesc && subsection_found) {
|
if (vmdesc && subsection_found) {
|
||||||
json_end_array(vmdesc);
|
json_end_array(vmdesc);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user