From: Yang Hongyang <yanghy@cn.fujitsu.com>
To: xen-devel@lists.xen.org
Cc: ian.campbell@citrix.com, wency@cn.fujitsu.com,
andrew.cooper3@citrix.com, yunhong.jiang@intel.com,
ian.jackson@eu.citrix.com, eddie.dong@intel.com,
rshriram@cs.ubc.ca, laijs@cn.fujitsu.com
Subject: [PATCH v18 09/11] xl/remus: add a cmdline switch to disable disk replication
Date: Mon, 28 Jul 2014 17:24:03 +0800 [thread overview]
Message-ID: <1406539445-12708-10-git-send-email-yanghy@cn.fujitsu.com> (raw)
In-Reply-To: <1406539445-12708-1-git-send-email-yanghy@cn.fujitsu.com>
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@cn.fujitsu.com>
Signed-off-by: Shriram Rajagopalan <rshriram@cs.ubc.ca>
---
docs/man/xl.pod.1 | 6 +++++-
tools/libxl/libxl.c | 9 +++++----
tools/libxl/libxl_types.idl | 1 +
tools/libxl/xl_cmdimpl.c | 13 +++++++++----
tools/libxl/xl_cmdtable.c | 5 +++--
5 files changed, 23 insertions(+), 11 deletions(-)
diff --git a/docs/man/xl.pod.1 b/docs/man/xl.pod.1
index 2e5c36a..f544945 100644
--- a/docs/man/xl.pod.1
+++ b/docs/man/xl.pod.1
@@ -431,7 +431,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>
@@ -474,6 +474,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 b329a04..8182966 100644
--- a/tools/libxl/libxl.c
+++ b/tools/libxl/libxl.c
@@ -797,9 +797,9 @@ int libxl_domain_remus_start(libxl_ctx *ctx, libxl_domain_remus_info *info,
libxl__domain_suspend_state *dss;
int rc;
- if (!info->unsafe && (info->blackhole || !info->netbuf)) {
- LOG(ERROR, "Unsafe mode must be enabled to replicate to /dev/null and "
- "disable network buffering");
+ if (!info->unsafe && (info->blackhole || !info->netbuf || !info->diskbuf)) {
+ LOG(ERROR, "Unsafe mode must be enabled to replicate to /dev/null,"
+ "disable network buffering and disk replication");
goto out;
}
@@ -833,7 +833,8 @@ int libxl_domain_remus_start(libxl_ctx *ctx, libxl_domain_remus_info *info,
rds->device_kind_flags |= LIBXL__REMUS_DEVICE_NIC;
}
- rds->device_kind_flags |= LIBXL__REMUS_DEVICE_DISK;
+ if (info->diskbuf)
+ rds->device_kind_flags |= LIBXL__REMUS_DEVICE_DISK;
rds->ao = ao;
rds->egc = egc;
diff --git a/tools/libxl/libxl_types.idl b/tools/libxl/libxl_types.idl
index 78dcee6..542dad3 100644
--- a/tools/libxl/libxl_types.idl
+++ b/tools/libxl/libxl_types.idl
@@ -593,6 +593,7 @@ libxl_domain_remus_info = Struct("domain_remus_info",[
("compression", bool),
("netbuf", bool),
("netbufscript", string),
+ ("diskbuf", bool),
])
libxl_event_type = Enumeration("event_type", [
diff --git a/tools/libxl/xl_cmdimpl.c b/tools/libxl/xl_cmdimpl.c
index ea77116..6ea7894 100644
--- a/tools/libxl/xl_cmdimpl.c
+++ b/tools/libxl/xl_cmdimpl.c
@@ -7179,8 +7179,9 @@ int main_remus(int argc, char **argv)
r_info.blackhole = 0;
r_info.compression = 1;
r_info.netbuf = 1;
+ r_info.diskbuf = 1;
- 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;
@@ -7199,6 +7200,9 @@ int main_remus(int argc, char **argv)
case 'N':
r_info.netbufscript = optarg;
break;
+ case 'd':
+ r_info.diskbuf = 0;
+ break;
case 's':
ssh_command = optarg;
break;
@@ -7207,9 +7211,10 @@ int main_remus(int argc, char **argv)
break;
}
- if (!r_info.unsafe && (r_info.blackhole || !r_info.netbuf)) {
- perror("Unsafe mode must be enabled to replicate to /dev/null and "
- "disable network buffering");
+ if (!r_info.unsafe &&
+ (r_info.blackhole || !r_info.netbuf || !r_info.diskbuf)) {
+ perror("Unsafe mode must be enabled to replicate to /dev/null,"
+ "disable network buffering and disk replication");
exit(-1);
}
diff --git a/tools/libxl/xl_cmdtable.c b/tools/libxl/xl_cmdtable.c
index 808f400..3b33b05 100644
--- a/tools/libxl/xl_cmdtable.c
+++ b/tools/libxl/xl_cmdtable.c
@@ -493,11 +493,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
next prev parent reply other threads:[~2014-07-28 9:24 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-07-28 9:23 [PATCH v18 00/11] Remus/Libxl: Remus network buffering and drbd disk Yang Hongyang
2014-07-28 9:23 ` [PATCH v18 01/11] libxl: introduce libxl__multidev_prepare_with_aodev Yang Hongyang
2014-07-29 17:21 ` Ian Jackson
2014-07-28 9:23 ` [PATCH v18 02/11] libxl: add support for async. function calls when using libxl__ao_device Yang Hongyang
2014-07-29 17:24 ` Ian Jackson
2014-07-30 8:45 ` Hongyang Yang
2014-07-28 9:23 ` [PATCH v18 03/11] autoconf: add libnl3 dependency for Remus network buffering support Yang Hongyang
2014-07-28 9:23 ` [PATCH v18 04/11] libxl/remus: introduce an abstract Remus device layer Yang Hongyang
2014-08-07 18:30 ` Ian Jackson
2014-08-27 1:46 ` Hongyang Yang
2014-08-27 2:21 ` Ian Jackson
2014-08-27 2:27 ` Hongyang Yang
2014-07-28 9:23 ` [PATCH v18 05/11] libxl/remus: setup and control network output buffering Yang Hongyang
2014-07-28 9:24 ` [PATCH v18 06/11] libxl/remus: setup and control disk replication for DRBD backends Yang Hongyang
2014-07-28 9:24 ` [PATCH v18 07/11] xl/remus: cmdline switch to explicitly enable unsafe configurations Yang Hongyang
2014-07-28 9:24 ` [PATCH v18 08/11] xl/remus: cmdline switches and config vars to control network buffering Yang Hongyang
2014-07-28 9:24 ` Yang Hongyang [this message]
2014-07-28 9:24 ` [PATCH v18 10/11] libxl/remus: add LIBXL_HAVE_REMUS to indicate Remus support in libxl Yang Hongyang
2014-07-28 9:24 ` [PATCH v18 11/11] MAINTAINERS: update maintained files of Remus Yang Hongyang
2014-08-07 1:17 ` [PATCH v18 00/11] Remus/Libxl: Remus network buffering and drbd disk Hongyang Yang
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=1406539445-12708-10-git-send-email-yanghy@cn.fujitsu.com \
--to=yanghy@cn.fujitsu.com \
--cc=andrew.cooper3@citrix.com \
--cc=eddie.dong@intel.com \
--cc=ian.campbell@citrix.com \
--cc=ian.jackson@eu.citrix.com \
--cc=laijs@cn.fujitsu.com \
--cc=rshriram@cs.ubc.ca \
--cc=wency@cn.fujitsu.com \
--cc=xen-devel@lists.xen.org \
--cc=yunhong.jiang@intel.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).