|
[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 |