[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [xen staging] tools/xl: add suspend and resume subcommands
commit dc8e1b33a525d31989c0d1ffe6ae7794484e1d99 Author: zithro / Cyril Rébert <slack@xxxxxxxxx> AuthorDate: Tue Dec 3 17:06:41 2024 -0500 Commit: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> CommitDate: Thu Dec 5 19:28:44 2024 +0000 tools/xl: add suspend and resume subcommands The xl command doesn't provide suspend/resume, so add them : xl suspend <Domain> xl resume <Domain> This patch follows a discussion on XenDevel: when you want the virtualized equivalent of "sleep"-ing a host, it's better to suspend/resume than to pause/unpause a domain. Suggested-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> Suggested-by: Marek Marczykowski-Górecki <marmarek@xxxxxxxxxxxxxxxxxxxxxx> Signed-off-by: Cyril Rébert (zithro) <slack@xxxxxxxxx> Signed-off-by: Jason Andryuk <jason.andryuk@xxxxxxx> Reviewed-by: Anthony PERARD <anthony.perard@xxxxxxxxxx> --- docs/man/xl.1.pod.in | 12 ++++++++++++ tools/xl/xl.h | 2 ++ tools/xl/xl_cmdtable.c | 10 ++++++++++ tools/xl/xl_vmcontrol.c | 38 ++++++++++++++++++++++++++++++++++++++ 4 files changed, 62 insertions(+) diff --git a/docs/man/xl.1.pod.in b/docs/man/xl.1.pod.in index bed8393473..fe38724b2b 100644 --- a/docs/man/xl.1.pod.in +++ b/docs/man/xl.1.pod.in @@ -682,6 +682,10 @@ Pass the VNC password to vncviewer via stdin. =back +=item B<resume> I<domain-id> + +Resume a domain, after having been suspended. + =item B<save> [I<OPTIONS>] I<domain-id> I<checkpointfile> [I<configfile>] Saves a running domain to a state file so that it can be restored @@ -760,6 +764,14 @@ in response to this event. =back +=item B<suspend> I<domain-id> + +Suspend a domain. This is a cooperative operation where the domain must +respond to the xenstore trigger. When in a suspended state the domain +still consumes allocated resources (such as memory), but is not eligible +for scheduling by the Xen hypervisor. It is in a shutdown state, but +not dying. + =item B<sysrq> I<domain-id> I<letter> Send a <Magic System Request> to the domain, each type of request is diff --git a/tools/xl/xl.h b/tools/xl/xl.h index 967d034cfe..45745f0dbb 100644 --- a/tools/xl/xl.h +++ b/tools/xl/xl.h @@ -129,6 +129,8 @@ int main_restore(int argc, char **argv); int main_migrate_receive(int argc, char **argv); int main_save(int argc, char **argv); int main_migrate(int argc, char **argv); +int main_suspend(int argc, char **argv); +int main_resume(int argc, char **argv); #endif int main_dump_core(int argc, char **argv); int main_pause(int argc, char **argv); diff --git a/tools/xl/xl_cmdtable.c b/tools/xl/xl_cmdtable.c index 53fc22d344..06a0039718 100644 --- a/tools/xl/xl_cmdtable.c +++ b/tools/xl/xl_cmdtable.c @@ -193,6 +193,16 @@ const struct cmd_spec cmd_table[] = { "Restore a domain from a saved state", "- for internal use only", }, + { "suspend", + &main_suspend, 0, 1, + "Suspend a domain to RAM", + "<Domain>", + }, + { "resume", + &main_resume, 0, 1, + "Resume a domain from RAM", + "<Domain>", + }, #endif { "dump-core", &main_dump_core, 0, 1, diff --git a/tools/xl/xl_vmcontrol.c b/tools/xl/xl_vmcontrol.c index c45d497c28..c813732838 100644 --- a/tools/xl/xl_vmcontrol.c +++ b/tools/xl/xl_vmcontrol.c @@ -32,6 +32,44 @@ static int fd_lock = -1; +#ifndef LIBXL_HAVE_NO_SUSPEND_RESUME +static void suspend_domain(uint32_t domid) +{ + libxl_domain_suspend_only(ctx, domid, NULL); +} + +static void resume_domain(uint32_t domid) +{ + libxl_domain_resume(ctx, domid, 1, NULL); +} + +int main_suspend(int argc, char **argv) +{ + int opt; + + SWITCH_FOREACH_OPT(opt, "", NULL, "suspend", 1) { + /* No options */ + } + + suspend_domain(find_domain(argv[optind])); + + return EXIT_SUCCESS; +} + +int main_resume(int argc, char **argv) +{ + int opt; + + SWITCH_FOREACH_OPT(opt, "", NULL, "resume", 1) { + /* No options */ + } + + resume_domain(find_domain(argv[optind])); + + return EXIT_SUCCESS; +} +#endif + static void pause_domain(uint32_t domid) { libxl_domain_pause(ctx, domid, NULL); -- generated by git-patchbot for /home/xen/git/xen.git#staging
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |