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 "qjson.h"
|
||||
|
||||
static void vmstate_subsection_save(QEMUFile *f, const VMStateDescription *vmsd,
|
||||
void *opaque, QJSON *vmdesc);
|
||||
static int vmstate_subsection_save(QEMUFile *f, const VMStateDescription *vmsd,
|
||||
void *opaque, QJSON *vmdesc);
|
||||
static int vmstate_subsection_load(QEMUFile *f, const VMStateDescription *vmsd,
|
||||
void *opaque);
|
||||
|
||||
@ -395,9 +395,7 @@ int vmstate_save_state(QEMUFile *f, const VMStateDescription *vmsd,
|
||||
json_end_array(vmdesc);
|
||||
}
|
||||
|
||||
vmstate_subsection_save(f, vmsd, opaque, vmdesc);
|
||||
|
||||
return 0;
|
||||
return vmstate_subsection_save(f, vmsd, opaque, vmdesc);
|
||||
}
|
||||
|
||||
static const VMStateDescription *
|
||||
@ -463,11 +461,12 @@ static int vmstate_subsection_load(QEMUFile *f, const VMStateDescription *vmsd,
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void vmstate_subsection_save(QEMUFile *f, const VMStateDescription *vmsd,
|
||||
void *opaque, QJSON *vmdesc)
|
||||
static int vmstate_subsection_save(QEMUFile *f, const VMStateDescription *vmsd,
|
||||
void *opaque, QJSON *vmdesc)
|
||||
{
|
||||
const VMStateDescription **sub = vmsd->subsections;
|
||||
bool subsection_found = false;
|
||||
int ret = 0;
|
||||
|
||||
trace_vmstate_subsection_save_top(vmsd->name);
|
||||
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_buffer(f, (uint8_t *)vmsdsub->name, len);
|
||||
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) {
|
||||
json_end_object(vmdesc);
|
||||
@ -503,4 +505,6 @@ static void vmstate_subsection_save(QEMUFile *f, const VMStateDescription *vmsd,
|
||||
if (vmdesc && subsection_found) {
|
||||
json_end_array(vmdesc);
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user