From: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
To: Vitaly Kuznetsov <vkuznets@redhat.com>
Cc: Wei Liu <wei.liu2@citrix.com>, Andrew Jones <drjones@redhat.com>,
Keir Fraser <keir@xen.org>,
Ian Campbell <ian.campbell@citrix.com>,
Stefano Stabellini <stefano.stabellini@eu.citrix.com>,
Andrew Cooper <andrew.cooper3@citrix.com>,
Julien Grall <julien.grall@linaro.org>,
Ian Jackson <ian.jackson@eu.citrix.com>,
Olaf Hering <olaf@aepfle.de>, Tim Deegan <tim@xen.org>,
David Vrabel <david.vrabel@citrix.com>,
Jan Beulich <jbeulich@suse.com>,
xen-devel@lists.xenproject.org,
Daniel De Graaf <dgdegra@tycho.nsa.gov>
Subject: Re: [PATCH v8 11/11] (lib)xl: soft reset support
Date: Fri, 10 Jul 2015 12:59:55 -0400 [thread overview]
Message-ID: <20150710165955.GF24518@l.oracle.com> (raw)
In-Reply-To: <1435075913-335-12-git-send-email-vkuznets@redhat.com>
On Tue, Jun 23, 2015 at 06:11:53PM +0200, Vitaly Kuznetsov wrote:
> Use existing create/restore path to perform 'soft reset' for HVM domains.
> Tear everything down, e.g. destroy domain's device model, remove the domain
> from xenstore, save toolstack record and start over.
>
> Signed-off-by: Vitaly Kuznetsov <vkuznets@redhat.com>
> ---
> Changes since 'v7'
> - 'Reset everything approach': XEN_DOMCTL_soft_reset doesn't destroy the
> original domain any more.
> - libxl__domain_soft_reset_state introduced [Ian Campbell]
> - Separate do_domain_soft_reset to not intertwine with do_domain_create
> [Ian Campbell]
>
> Signed-off-by: Vitaly Kuznetsov <vkuznets@redhat.com>
> ---
> docs/man/xl.cfg.pod.5 | 10 +++
> tools/libxl/libxl.c | 16 +++-
> tools/libxl/libxl.h | 12 +++
> tools/libxl/libxl_create.c | 181 +++++++++++++++++++++++++++++++++++++------
> tools/libxl/libxl_internal.h | 4 +
> tools/libxl/libxl_types.idl | 3 +
> tools/libxl/xl.h | 1 +
> tools/libxl/xl_cmdimpl.c | 33 +++++++-
> 8 files changed, 232 insertions(+), 28 deletions(-)
>
> diff --git a/docs/man/xl.cfg.pod.5 b/docs/man/xl.cfg.pod.5
> index a3e0e2e..27f4c2a 100644
> --- a/docs/man/xl.cfg.pod.5
> +++ b/docs/man/xl.cfg.pod.5
> @@ -368,6 +368,11 @@ destroy the domain.
> write a "coredump" of the domain to F</var/lib/xen/dump/NAME> and then
> restart the domain.
>
> +=item B<soft-reset>
> +
> +cleanup the domain without destroying it, restart the device model. This action
> +is supported for HVM guests only.
> +
> =back
>
> The default for C<on_poweroff> is C<destroy>.
> @@ -386,6 +391,11 @@ Default is C<destroy>.
>
> Action to take if the domain crashes. Default is C<destroy>.
>
> +=item B<on_soft_reset="ACTION">
> +
> +Action to take if the domain performs 'soft reset' (e.g. does kexec).
> +Default is C<soft-reset>.
> +
> =back
>
> =head3 Direct Kernel Boot
> diff --git a/tools/libxl/libxl.c b/tools/libxl/libxl.c
> index d86ea62..a6743a7 100644
> --- a/tools/libxl/libxl.c
> +++ b/tools/libxl/libxl.c
> @@ -1492,6 +1492,7 @@ void libxl__domain_destroy(libxl__egc *egc, libxl__domain_destroy_state *dds)
> dds->stubdom.ao = ao;
> dds->stubdom.domid = stubdomid;
> dds->stubdom.callback = stubdom_destroy_callback;
> + dds->stubdom.soft_reset = false;
> libxl__destroy_domid(egc, &dds->stubdom);
> } else {
> dds->stubdom_finished = 1;
> @@ -1500,6 +1501,7 @@ void libxl__domain_destroy(libxl__egc *egc, libxl__domain_destroy_state *dds)
> dds->domain.ao = ao;
> dds->domain.domid = dds->domid;
> dds->domain.callback = domain_destroy_callback;
> + dds->domain.soft_reset = dds->soft_reset;
> libxl__destroy_domid(egc, &dds->domain);
> }
>
> @@ -1680,10 +1682,13 @@ static void devices_destroy_cb(libxl__egc *egc,
>
> /* Clean up qemu-save and qemu-resume files. They are
> * intermediate files created by libxc. Unfortunately they
> - * don't fit in existing userdata scheme very well.
> + * don't fit in existing userdata scheme very well. In soft reset
> + * case we need to keep the file.
> */
> - rc = libxl__remove_file(gc, libxl__device_model_savefile(gc, domid));
> - if (rc < 0) goto out;
> + if (!dis->soft_reset) {
> + rc = libxl__remove_file(gc, libxl__device_model_savefile(gc, domid));
> + if (rc < 0) goto out;
> + }
> rc = libxl__remove_file(gc,
> GCSPRINTF(XC_DEVICE_MODEL_RESTORE_FILE".%u", domid));
> if (rc < 0) goto out;
> @@ -1694,7 +1699,10 @@ static void devices_destroy_cb(libxl__egc *egc,
> ctx->xch = xc_interface_open(ctx->lg,0,0);
> if (!ctx->xch) goto badchild;
>
> - rc = xc_domain_destroy(ctx->xch, domid);
> + if (!dis->soft_reset)
> + rc = xc_domain_destroy(ctx->xch, domid);
> + else
I would also pause the guest before doing this.
I didn't look at the rest very much, sorry to say.
next prev parent reply other threads:[~2015-07-10 17:01 UTC|newest]
Thread overview: 42+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-06-23 16:11 [PATCH v8 00/11] toolstack-assisted approach to PVHVM guest kexec Vitaly Kuznetsov
2015-06-23 16:11 ` [PATCH v8 01/11] xen: introduce SHUTDOWN_soft_reset shutdown reason Vitaly Kuznetsov
2015-07-07 20:44 ` Konrad Rzeszutek Wilk
2015-07-14 16:10 ` Ian Jackson
2015-07-15 8:42 ` Vitaly Kuznetsov
2015-06-23 16:11 ` [PATCH v8 02/11] libxl: support " Vitaly Kuznetsov
2015-07-07 20:47 ` Konrad Rzeszutek Wilk
2015-07-14 16:15 ` Ian Jackson
2015-07-15 8:43 ` Vitaly Kuznetsov
2015-06-23 16:11 ` [PATCH v8 03/11] xl: introduce enum domain_restart_type Vitaly Kuznetsov
2015-07-07 20:48 ` Konrad Rzeszutek Wilk
2015-06-23 16:11 ` [PATCH v8 04/11] xen: evtchn: make evtchn_reset() ready for soft reset Vitaly Kuznetsov
2015-07-10 16:20 ` Konrad Rzeszutek Wilk
2015-06-23 16:11 ` [PATCH v8 05/11] xen: grant_table: implement grant_table_warn_active_grants() Vitaly Kuznetsov
2015-07-10 16:24 ` Konrad Rzeszutek Wilk
2015-07-13 8:45 ` Jan Beulich
2015-07-13 9:08 ` Ian Campbell
2015-07-13 9:30 ` Jan Beulich
2015-07-13 9:35 ` Vitaly Kuznetsov
2015-07-13 13:44 ` Vitaly Kuznetsov
2015-07-13 14:24 ` Konrad Rzeszutek Wilk
2015-06-23 16:11 ` [PATCH v8 06/11] xen: Introduce XEN_DOMCTL_soft_reset Vitaly Kuznetsov
2015-07-10 16:30 ` Konrad Rzeszutek Wilk
2015-06-23 16:11 ` [PATCH v8 07/11] flask: DOMCTL_soft_reset support Vitaly Kuznetsov
2015-07-13 19:43 ` Daniel De Graaf
2015-06-23 16:11 ` [PATCH v8 08/11] xen: arch-specific hooks for domain_soft_reset() Vitaly Kuznetsov
2015-07-10 16:54 ` Konrad Rzeszutek Wilk
2015-07-14 15:52 ` Vitaly Kuznetsov
2015-07-14 15:57 ` Konrad Rzeszutek Wilk
2015-07-14 16:07 ` Vitaly Kuznetsov
2015-07-15 20:19 ` Julien Grall
2015-07-16 11:36 ` Vitaly Kuznetsov
2015-07-16 11:57 ` Julien Grall
2015-06-23 16:11 ` [PATCH v8 09/11] libxc: support XEN_DOMCTL_soft_reset operation Vitaly Kuznetsov
2015-06-25 13:52 ` Wei Liu
2015-07-10 16:55 ` Konrad Rzeszutek Wilk
2015-07-14 16:17 ` Ian Jackson
2015-06-23 16:11 ` [PATCH v8 10/11] libxc: add XC_DEVICE_MODEL_SAVE_FILE Vitaly Kuznetsov
2015-06-23 16:11 ` [PATCH v8 11/11] (lib)xl: soft reset support Vitaly Kuznetsov
2015-07-10 16:59 ` Konrad Rzeszutek Wilk [this message]
2015-07-14 16:19 ` Ian Jackson
2015-07-15 8:50 ` Vitaly Kuznetsov
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20150710165955.GF24518@l.oracle.com \
--to=konrad.wilk@oracle.com \
--cc=andrew.cooper3@citrix.com \
--cc=david.vrabel@citrix.com \
--cc=dgdegra@tycho.nsa.gov \
--cc=drjones@redhat.com \
--cc=ian.campbell@citrix.com \
--cc=ian.jackson@eu.citrix.com \
--cc=jbeulich@suse.com \
--cc=julien.grall@linaro.org \
--cc=keir@xen.org \
--cc=olaf@aepfle.de \
--cc=stefano.stabellini@eu.citrix.com \
--cc=tim@xen.org \
--cc=vkuznets@redhat.com \
--cc=wei.liu2@citrix.com \
--cc=xen-devel@lists.xenproject.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.