dump-guest-memory: add "detach" flag for QMP/HMP interfaces.
This patch only adds the interfaces, but does not implement them. "detach" parameter is made optional, to make sure that all the old dump-guest-memory requests will still be able to work. Signed-off-by: Peter Xu <peterx@redhat.com> Reviewed-by: Fam Zheng <famz@redhat.com> Message-Id: <1455772616-8668-3-git-send-email-peterx@redhat.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
e3517a5299
commit
228de9cf1d
5
dump.c
5
dump.c
@ -1609,8 +1609,9 @@ cleanup:
|
||||
dump_cleanup(s);
|
||||
}
|
||||
|
||||
void qmp_dump_guest_memory(bool paging, const char *file, bool has_begin,
|
||||
int64_t begin, bool has_length,
|
||||
void qmp_dump_guest_memory(bool paging, const char *file,
|
||||
bool has_detach, bool detach,
|
||||
bool has_begin, int64_t begin, bool has_length,
|
||||
int64_t length, bool has_format,
|
||||
DumpGuestMemoryFormat format, Error **errp)
|
||||
{
|
||||
|
@ -1056,10 +1056,11 @@ ETEXI
|
||||
|
||||
{
|
||||
.name = "dump-guest-memory",
|
||||
.args_type = "paging:-p,zlib:-z,lzo:-l,snappy:-s,filename:F,begin:i?,length:i?",
|
||||
.params = "[-p] [-z|-l|-s] filename [begin length]",
|
||||
.args_type = "paging:-p,detach:-d,zlib:-z,lzo:-l,snappy:-s,filename:F,begin:i?,length:i?",
|
||||
.params = "[-p] [-d] [-z|-l|-s] filename [begin length]",
|
||||
.help = "dump guest memory into file 'filename'.\n\t\t\t"
|
||||
"-p: do paging to get guest's memory mapping.\n\t\t\t"
|
||||
"-d: return immediately (do not wait for completion).\n\t\t\t"
|
||||
"-z: dump in kdump-compressed format, with zlib compression.\n\t\t\t"
|
||||
"-l: dump in kdump-compressed format, with lzo compression.\n\t\t\t"
|
||||
"-s: dump in kdump-compressed format, with snappy compression.\n\t\t\t"
|
||||
|
9
hmp.c
9
hmp.c
@ -1587,8 +1587,10 @@ void hmp_dump_guest_memory(Monitor *mon, const QDict *qdict)
|
||||
const char *file = qdict_get_str(qdict, "filename");
|
||||
bool has_begin = qdict_haskey(qdict, "begin");
|
||||
bool has_length = qdict_haskey(qdict, "length");
|
||||
bool has_detach = qdict_haskey(qdict, "detach");
|
||||
int64_t begin = 0;
|
||||
int64_t length = 0;
|
||||
bool detach = false;
|
||||
enum DumpGuestMemoryFormat dump_format = DUMP_GUEST_MEMORY_FORMAT_ELF;
|
||||
char *prot;
|
||||
|
||||
@ -1616,11 +1618,14 @@ void hmp_dump_guest_memory(Monitor *mon, const QDict *qdict)
|
||||
if (has_length) {
|
||||
length = qdict_get_int(qdict, "length");
|
||||
}
|
||||
if (has_detach) {
|
||||
detach = qdict_get_bool(qdict, "detach");
|
||||
}
|
||||
|
||||
prot = g_strconcat("file:", file, NULL);
|
||||
|
||||
qmp_dump_guest_memory(paging, prot, has_begin, begin, has_length, length,
|
||||
true, dump_format, &err);
|
||||
qmp_dump_guest_memory(paging, prot, true, detach, has_begin, begin,
|
||||
has_length, length, true, dump_format, &err);
|
||||
hmp_handle_error(mon, &err);
|
||||
g_free(prot);
|
||||
}
|
||||
|
@ -2195,6 +2195,9 @@
|
||||
# 2. fd: the protocol starts with "fd:", and the following string
|
||||
# is the fd's name.
|
||||
#
|
||||
# @detach: #optional if true, QMP will return immediately rather than
|
||||
# waiting for the dump to finish. (since 2.6).
|
||||
#
|
||||
# @begin: #optional if specified, the starting physical address.
|
||||
#
|
||||
# @length: #optional if specified, the memory size, in bytes. If you don't
|
||||
@ -2211,8 +2214,9 @@
|
||||
# Since: 1.2
|
||||
##
|
||||
{ 'command': 'dump-guest-memory',
|
||||
'data': { 'paging': 'bool', 'protocol': 'str', '*begin': 'int',
|
||||
'*length': 'int', '*format': 'DumpGuestMemoryFormat' } }
|
||||
'data': { 'paging': 'bool', 'protocol': 'str', '*detach': 'bool',
|
||||
'*begin': 'int', '*length': 'int',
|
||||
'*format': 'DumpGuestMemoryFormat'} }
|
||||
|
||||
##
|
||||
# @DumpGuestMemoryCapability:
|
||||
|
@ -838,8 +838,8 @@ EQMP
|
||||
|
||||
{
|
||||
.name = "dump-guest-memory",
|
||||
.args_type = "paging:b,protocol:s,begin:i?,end:i?,format:s?",
|
||||
.params = "-p protocol [begin] [length] [format]",
|
||||
.args_type = "paging:b,protocol:s,detach:b?,begin:i?,end:i?,format:s?",
|
||||
.params = "-p protocol [-d] [begin] [length] [format]",
|
||||
.help = "dump guest memory to file",
|
||||
.mhandler.cmd_new = qmp_marshal_dump_guest_memory,
|
||||
},
|
||||
@ -855,6 +855,8 @@ Arguments:
|
||||
- "paging": do paging to get guest's memory mapping (json-bool)
|
||||
- "protocol": destination file(started with "file:") or destination file
|
||||
descriptor (started with "fd:") (json-string)
|
||||
- "detach": if specified, command will return immediately, without waiting
|
||||
for the dump to finish (json-bool)
|
||||
- "begin": the starting physical address. It's optional, and should be specified
|
||||
with length together (json-int)
|
||||
- "length": the memory size, in bytes. It's optional, and should be specified
|
||||
|
Loading…
Reference in New Issue
Block a user