At 01/20/2012 12:32 AM, Eric Blake Wrote: > On 01/18/2012 08:07 PM, Wen Congyang wrote: >> Signed-off-by: Wen Congyang <we...@cn.fujitsu.com> >> --- >> Makefile.target | 8 +- >> dump.c | 590 >> ++++++++++++++++++++++++++++++++++++++++++++++++++++++ >> dump.h | 3 + >> hmp-commands.hx | 16 ++ >> hmp.c | 9 + >> hmp.h | 1 + >> monitor.c | 3 + >> qapi-schema.json | 13 ++ >> qmp-commands.hx | 26 +++ >> 9 files changed, 665 insertions(+), 4 deletions(-) >> create mode 100644 dump.c >> > >> +void qmp_dump(const char *file, Error **errp) >> +{ >> + const char *p; >> + int fd = -1; >> + DumpState *s; >> + >> +#if !defined(WIN32) >> + if (strstart(file, "fd:", &p)) { >> + fd = qemu_get_fd(p); >> + if (fd == -1) { >> + error_set(errp, QERR_FD_NOT_FOUND, p); >> + return; >> + } >> + } >> +#endif > > Thanks for implementing fd support off the bat. > >> + >> + if (strstart(file, "file:", &p)) { >> + fd = open(p, O_WRONLY | O_CREAT | O_TRUNC | O_BINARY); > > Use of O_CREAT requires that you pass a third argument to open() > specifying the mode_t to use.
Yes, I forgot it, and will fix it. > >> +++ b/hmp-commands.hx >> @@ -828,6 +828,22 @@ new parameters (if specified) once the vm migration >> finished successfully. >> ETEXI >> >> { >> + .name = "dump", >> + .args_type = "file:s", >> + .params = "file", >> + .help = "dump to file", >> + .user_print = monitor_user_noop, >> + .mhandler.cmd = hmp_dump, >> + }, > > What if I want to dump only a fraction of the memory? I think you need > optional start and length parameters, to limit how much memory to be > dumped, rather than forcing me to dump all memory at once. > It is OK to support it, but I do not know why do you want it? The purpose of this command is dumping the memory when the guest is paniced. And then we can use crash/gdb(or other application) to investigate why the guest is paniced. So we should dump the whole memory. Thanks Wen Congyang