[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH for-4.5 v20 10/12] xl/remus: add a cmdline switch to disable disk replication
Disk replication is enabled by default. This patch adds a cmdline switch to 'xl remus' command to explicitly disable disk replication. A new boolean field 'diskbuf' is added to the libxl_domain_remus_info structure to represent this configuration option inside libxl. Note: Disabling disk replication requires enabling unsafe mode. Signed-off-by: Yang Hongyang <yanghy@xxxxxxxxxxxxxx> Signed-off-by: Shriram Rajagopalan <rshriram@xxxxxxxxx> Acked-by: Ian Jackson <ian.jackson@xxxxxxxxxxxxx> --- docs/man/xl.pod.1 | 6 +++++- tools/libxl/libxl.c | 12 ++++++++---- tools/libxl/libxl_types.idl | 1 + tools/libxl/xl_cmdimpl.c | 5 ++++- tools/libxl/xl_cmdtable.c | 5 +++-- 5 files changed, 21 insertions(+), 8 deletions(-) diff --git a/docs/man/xl.pod.1 b/docs/man/xl.pod.1 index 1f165ad..362e92f 100644 --- a/docs/man/xl.pod.1 +++ b/docs/man/xl.pod.1 @@ -436,7 +436,7 @@ Enable Remus HA for domain. By default B<xl> relies on ssh as a transport mechanism between the two hosts. N.B: Remus support in xl is still in experimental (proof-of-concept) phase. - There is no support for disk buffering at the moment. + Disk replication support is limited to DRBD disks. B<OPTIONS> @@ -479,6 +479,10 @@ Generally useful for debugging. Requires enabling unsafe mode. Disable network output buffering. Requires enabling unsafe mode. +=item B<-d> + +Disable disk replication. Requires enabling unsafe mode. + =back =item B<pause> I<domain-id> diff --git a/tools/libxl/libxl.c b/tools/libxl/libxl.c index fa757c4..f72c79b 100644 --- a/tools/libxl/libxl.c +++ b/tools/libxl/libxl.c @@ -808,12 +808,14 @@ int libxl_domain_remus_start(libxl_ctx *ctx, libxl_domain_remus_info *info, libxl_defbool_setdefault(&info->blackhole, false); libxl_defbool_setdefault(&info->compression, true); libxl_defbool_setdefault(&info->netbuf, true); + libxl_defbool_setdefault(&info->diskbuf, true); if (!libxl_defbool_val(info->unsafe) && (libxl_defbool_val(info->blackhole) || - !libxl_defbool_val(info->netbuf))) { - LOG(ERROR, "Unsafe mode must be enabled to replicate to /dev/null and " - "disable network buffering"); + !libxl_defbool_val(info->netbuf) || + !libxl_defbool_val(info->diskbuf))) { + LOG(ERROR, "Unsafe mode must be enabled to replicate to /dev/null," + "disable network buffering and disk replication"); goto out; } @@ -841,7 +843,9 @@ int libxl_domain_remus_start(libxl_ctx *ctx, libxl_domain_remus_info *info, } rds->device_kind_flags |= (1 << LIBXL__DEVICE_KIND_REMUS_NIC); } - rds->device_kind_flags |= (1 << LIBXL__DEVICE_KIND_REMUS_DISK); + + if (libxl_defbool_val(info->diskbuf)) + rds->device_kind_flags |= (1 << LIBXL__DEVICE_KIND_REMUS_DISK); rds->ao = ao; rds->egc = egc; diff --git a/tools/libxl/libxl_types.idl b/tools/libxl/libxl_types.idl index 53f7daa..36ebfa5 100644 --- a/tools/libxl/libxl_types.idl +++ b/tools/libxl/libxl_types.idl @@ -616,6 +616,7 @@ libxl_domain_remus_info = Struct("domain_remus_info",[ ("compression", libxl_defbool), ("netbuf", libxl_defbool), ("netbufscript", string), + ("diskbuf", libxl_defbool), ]) libxl_event_type = Enumeration("event_type", [ diff --git a/tools/libxl/xl_cmdimpl.c b/tools/libxl/xl_cmdimpl.c index 2b61f16..abc8887 100644 --- a/tools/libxl/xl_cmdimpl.c +++ b/tools/libxl/xl_cmdimpl.c @@ -7497,7 +7497,7 @@ int main_remus(int argc, char **argv) r_info.interval = 200; libxl_defbool_setdefault(&r_info.blackhole, false); - SWITCH_FOREACH_OPT(opt, "Fbuni:s:N:e", NULL, "remus", 2) { + SWITCH_FOREACH_OPT(opt, "Fbundi:s:N:e", NULL, "remus", 2) { case 'i': r_info.interval = atoi(optarg); break; @@ -7516,6 +7516,9 @@ int main_remus(int argc, char **argv) case 'N': r_info.netbufscript = optarg; break; + case 'd': + libxl_defbool_set(&r_info.diskbuf, false); + break; case 's': ssh_command = optarg; break; diff --git a/tools/libxl/xl_cmdtable.c b/tools/libxl/xl_cmdtable.c index cd1b612..f93ee4f 100644 --- a/tools/libxl/xl_cmdtable.c +++ b/tools/libxl/xl_cmdtable.c @@ -503,11 +503,12 @@ struct cmd_spec cmd_table[] = { " of the domain.\n" "-N <netbufscript> Use netbufscript to setup network buffering instead of the\n" " default script (/etc/xen/scripts/remus-netbuf-setup).\n" - "-F Enable unsafe configurations [-b|-n flags]. Use this option\n" + "-F Enable unsafe configurations [-b|-n|-d 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.\n" - "-n Disable network output buffering. Works only in unsafe mode." + "-n Disable network output buffering. Works only in unsafe mode.\n" + "-d Disable disk replication. Works only in unsafe mode." }, #endif { "devd", -- 1.9.1 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |