X-Git-Url: https://git.proxmox.com/?a=blobdiff_plain;f=dump.c;h=f7b80d856b3b1342ed43a510fd744f0507d079a8;hb=5b2ecabaeabc17f032197246c4846b9ba95ba8a6;hp=9dc494619da03f6154331d60e2b3ccfa2dedc407;hpb=39ba2ea61f510512764e6f9063a8396d05fe57fe;p=mirror_qemu.git diff --git a/dump.c b/dump.c index 9dc494619d..f7b80d856b 100644 --- a/dump.c +++ b/dump.c @@ -12,7 +12,7 @@ */ #include "qemu/osdep.h" -#include "qemu-common.h" +#include "qemu/cutils.h" #include "elf.h" #include "cpu.h" #include "exec/cpu-all.h" @@ -25,6 +25,7 @@ #include "sysemu/cpus.h" #include "qapi/qmp/qerror.h" #include "qmp-commands.h" +#include "qapi-event.h" #include #ifdef CONFIG_LZO @@ -917,9 +918,7 @@ static void write_dump_header(DumpState *s, Error **errp) } else { create_header64(s, &local_err); } - if (local_err) { - error_propagate(errp, local_err); - } + error_propagate(errp, local_err); } static size_t dump_bitmap_get_bufsize(DumpState *s) @@ -1662,6 +1661,7 @@ cleanup: static void dump_process(DumpState *s, Error **errp) { Error *local_err = NULL; + DumpQueryResult *result = NULL; if (s->has_format && s->format != DUMP_GUEST_MEMORY_FORMAT_ELF) { create_kdump_vmcore(s, &local_err); @@ -1674,6 +1674,15 @@ static void dump_process(DumpState *s, Error **errp) atomic_set(&s->status, (local_err ? DUMP_STATUS_FAILED : DUMP_STATUS_COMPLETED)); + /* send DUMP_COMPLETED message (unconditionally) */ + result = qmp_query_dump(NULL); + /* should never fail */ + assert(result); + qapi_event_send_dump_completed(result, !!local_err, (local_err ? \ + error_get_pretty(local_err) : NULL), + &error_abort); + qapi_free_DumpQueryResult(result); + error_propagate(errp, local_err); dump_cleanup(s); } @@ -1682,13 +1691,8 @@ static void *dump_thread(void *data) { Error *err = NULL; DumpState *s = (DumpState *)data; - dump_process(s, &err); - - if (err) { - /* TODO: notify user the error */ - error_free(err); - } + error_free(err); return NULL; }