|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH for-4.5 v20 08/12] xl/remus: cmdline switch to explicitly enable unsafe configurations
On Thu, Sep 25, 2014 at 02:16:20PM +0800, Yang Hongyang wrote:
> By default, network buffering and disk replication are enabled;
> checkpoints are replicated to another standby VM.
>
> This patch allows the user to disable any of these features by
> explicitly specifying a 'run in unsafe mode' switch when invoking
> the 'xl remus' command. While running Remus in an unsafe mode
> makes little sense under normal circumstances, it is useful to be
> able to disable one or more features mentioned above for
> testing/debugging/profiling purposes.
>
> Unless this option is enabled, it will not be possible to
> replicate memory checkpoints to /dev/null (blackhole replication),
> disable network buffering or disk replication.
>
> As a starter, the use of blackhole replication now requires that
> the unsafe mode be enabled. Subsequent patches will add support
> for disabling network buffering and disk replication in a similar
> manner.
>
> Signed-off-by: Yang Hongyang <yanghy@xxxxxxxxxxxxxx>
> Signed-off-by: Shriram Rajagopalan <rshriram@xxxxxxxxx>
Reviewed-by: Konrad Rzeszutek Wilk <konrad.wilk@xxxxxxxxxx>
> ---
> docs/man/xl.pod.1 | 15 ++++++++++-----
> tools/libxl/libxl.c | 7 +++++++
> tools/libxl/libxl_types.idl | 1 +
> tools/libxl/xl_cmdimpl.c | 5 ++++-
> tools/libxl/xl_cmdtable.c | 7 +++++--
> 5 files changed, 27 insertions(+), 8 deletions(-)
>
> diff --git a/docs/man/xl.pod.1 b/docs/man/xl.pod.1
> index f9bc812..2ae3007 100644
> --- a/docs/man/xl.pod.1
> +++ b/docs/man/xl.pod.1
> @@ -446,11 +446,6 @@ B<OPTIONS>
>
> Checkpoint domain memory every MS milliseconds (default 200ms).
>
> -=item B<-b>
> -
> -Replicate memory checkpoints to /dev/null (blackhole).
> -Generally useful for debugging.
> -
> =item B<-u>
>
> Disable memory checkpoint compression.
> @@ -465,6 +460,16 @@ If empty, run <host> instead of ssh <host> xl
> migrate-receive -r [-e].
> On the new host, do not wait in the background (on <host>) for the death
> of the domain. See the corresponding option of the I<create> subcommand.
>
> +=item B<-F>
> +
> +Run Remus in unsafe mode. Use this option with caution as failover may
> +not work as intended.
> +
> +=item B<-b>
> +
> +Replicate memory checkpoints to /dev/null (blackhole).
> +Generally useful for debugging. Requires enabling unsafe mode.
> +
> =back
>
> =item B<pause> I<domain-id>
> diff --git a/tools/libxl/libxl.c b/tools/libxl/libxl.c
> index 9e0a800..cc5c3ac 100644
> --- a/tools/libxl/libxl.c
> +++ b/tools/libxl/libxl.c
> @@ -804,9 +804,16 @@ int libxl_domain_remus_start(libxl_ctx *ctx,
> libxl_domain_remus_info *info,
> goto out;
> }
>
> + libxl_defbool_setdefault(&info->unsafe, false);
> libxl_defbool_setdefault(&info->blackhole, false);
> libxl_defbool_setdefault(&info->compression, true);
>
> + if (!libxl_defbool_val(info->unsafe) &&
> + libxl_defbool_val(info->blackhole)) {
> + LOG(ERROR, "Unsafe mode must be enabled to replicate to /dev/null");
> + goto out;
> + }
> +
> GCNEW(dss);
> dss->ao = ao;
> dss->callback = remus_failover_cb;
> diff --git a/tools/libxl/libxl_types.idl b/tools/libxl/libxl_types.idl
> index 16e374f..348f794 100644
> --- a/tools/libxl/libxl_types.idl
> +++ b/tools/libxl/libxl_types.idl
> @@ -611,6 +611,7 @@ libxl_sched_credit_params = Struct("sched_credit_params",
> [
>
> libxl_domain_remus_info = Struct("domain_remus_info",[
> ("interval", integer),
> + ("unsafe", libxl_defbool),
> ("blackhole", libxl_defbool),
> ("compression", libxl_defbool),
> ])
> diff --git a/tools/libxl/xl_cmdimpl.c b/tools/libxl/xl_cmdimpl.c
> index e9e8900..3463d45 100644
> --- a/tools/libxl/xl_cmdimpl.c
> +++ b/tools/libxl/xl_cmdimpl.c
> @@ -7497,10 +7497,13 @@ int main_remus(int argc, char **argv)
> r_info.interval = 200;
> libxl_defbool_setdefault(&r_info.blackhole, false);
>
> - SWITCH_FOREACH_OPT(opt, "bui:s:e", NULL, "remus", 2) {
> + SWITCH_FOREACH_OPT(opt, "Fbui:s:e", NULL, "remus", 2) {
> case 'i':
> r_info.interval = atoi(optarg);
> break;
> + case 'F':
> + libxl_defbool_set(&r_info.unsafe, true);
> + break;
> case 'b':
> libxl_defbool_set(&r_info.blackhole, true);
> break;
> diff --git a/tools/libxl/xl_cmdtable.c b/tools/libxl/xl_cmdtable.c
> index dd15947..08f3c90 100644
> --- a/tools/libxl/xl_cmdtable.c
> +++ b/tools/libxl/xl_cmdtable.c
> @@ -495,13 +495,16 @@ struct cmd_spec cmd_table[] = {
> "Enable Remus HA for domain",
> "[options] <Domain> [<host>]",
> "-i MS Checkpoint domain memory every MS
> milliseconds (def. 200ms).\n"
> - "-b Replicate memory checkpoints to /dev/null
> (blackhole)\n"
> "-u Disable memory checkpoint compression.\n"
> "-s <sshcommand> Use <sshcommand> instead of ssh. String will
> be passed\n"
> " to sh. If empty, run <host> instead of \n"
> " ssh <host> xl migrate-receive -r [-e]\n"
> "-e Do not wait in the background (on <host>) for
> the death\n"
> - " of the domain."
> + " of the domain.\n"
> + "-F Enable unsafe configurations [-b flags]. Use
> this option\n"
> + " with caution as failover may not work as
> intended.\n"
> + "-b Replicate memory checkpoints to /dev/null
> (blackhole).\n"
> + " Works only in unsafe mode."
> },
> #endif
> { "devd",
> --
> 1.9.1
>
>
> _______________________________________________
> Xen-devel mailing list
> Xen-devel@xxxxxxxxxxxxx
> http://lists.xen.org/xen-devel
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |