diff options
author | Amit Shah <amit.shah@redhat.com> | 2014-06-20 18:56:08 +0530 |
---|---|---|
committer | Juan Quintela <quintela@redhat.com> | 2014-06-23 19:14:50 +0200 |
commit | abfd9ce341ec66eb2e63756b9da43f77c054788e (patch) | |
tree | 025a056ec9e74179c8b4ca4971b30cc06c261281 /vl.c | |
parent | e325b49a320b493cc5d69e263751ff716dc458fe (diff) | |
download | qemu-abfd9ce341ec66eb2e63756b9da43f77c054788e.tar.gz qemu-abfd9ce341ec66eb2e63756b9da43f77c054788e.tar.bz2 qemu-abfd9ce341ec66eb2e63756b9da43f77c054788e.zip |
migration: dump vmstate info as a json file for static analysis
This commit adds a new command, '-dump-vmstate', that takes a filename
as an argument. When executed, QEMU will dump the vmstate information
for the machine type it's invoked with to the file, and quit.
The JSON-format output can then be used to compare the vmstate info for
different QEMU versions, specifically to test whether live migration
would break due to changes in the vmstate data.
A Python script that compares the output of such JSON dumps is included
in the following commit.
Signed-off-by: Amit Shah <amit.shah@redhat.com>
Reviewed-by: Juan Quintela <quintela@redhat.com>
Signed-off-by: Juan Quintela <quintela@redhat.com>
Diffstat (limited to 'vl.c')
-rw-r--r-- | vl.c | 13 |
1 files changed, 13 insertions, 0 deletions
@@ -2935,6 +2935,7 @@ int main(int argc, char **argv, char **envp) 1024 * 1024; ram_addr_t maxram_size = default_ram_size; uint64_t ram_slots = 0; + FILE *vmstate_dump_file = NULL; atexit(qemu_run_exit_notifiers); error_set_progname(argv[0]); @@ -3944,6 +3945,13 @@ int main(int argc, char **argv, char **envp) } configure_msg(opts); break; + case QEMU_OPTION_dump_vmstate: + vmstate_dump_file = fopen(optarg, "w"); + if (vmstate_dump_file == NULL) { + fprintf(stderr, "open %s: %s\n", optarg, strerror(errno)); + exit(1); + } + break; default: os_parse_cmd_args(popt->index, optarg); } @@ -4495,6 +4503,11 @@ int main(int argc, char **argv, char **envp) } qdev_prop_check_global(); + if (vmstate_dump_file) { + /* dump and exit */ + dump_vmstate_json_to_file(vmstate_dump_file); + return 0; + } if (incoming) { Error *local_err = NULL; |