[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH 5 of 5] tools/xl: Remus - Network buffering cmdline switch
# HG changeset patch # User Shriram Rajagopalan <rshriram@xxxxxxxxx> # Date 1377473613 25200 # Node ID 496b22ccf0e2b7e48388b5a76298e76a911ba193 # Parent c6804ccfe660cb9c373c5f53a8996d0443316684 tools/xl: Remus - Network buffering cmdline switch Command line switch to 'xl remus' command, to enable network buffering. Pass on this flag to libxl so that it can act accordingly. Also update man pages to reflect the addition of a new option to 'xl remus' command. Signed-off-by: Shriram Rajagopalan <rshriram@xxxxxxxxx> diff -r c6804ccfe660 -r 496b22ccf0e2 docs/man/xl.pod.1 --- a/docs/man/xl.pod.1 Sun Aug 25 16:33:31 2013 -0700 +++ b/docs/man/xl.pod.1 Sun Aug 25 16:33:33 2013 -0700 @@ -398,8 +398,7 @@ Print huge (!) amount of debug during th 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 network or disk buffering at the moment. +N.B: There is no support for disk buffering at the moment. B<OPTIONS> @@ -418,6 +417,13 @@ Generally useful for debugging. Disable memory checkpoint compression. +=item B<-n> + +Enable network output buffering. The default script used to configure +network buffering is /etc/xen/scripts/remus-netbuf-setup. If you wish to +use a custom script, set the global variable "remus.default.netbufscript" +in /etc/xen/xl.conf to point to your script. + =item B<-s> I<sshcommand> Use <sshcommand> instead of ssh. String will be passed to sh. diff -r c6804ccfe660 -r 496b22ccf0e2 tools/libxl/xl.c --- a/tools/libxl/xl.c Sun Aug 25 16:33:31 2013 -0700 +++ b/tools/libxl/xl.c Sun Aug 25 16:33:33 2013 -0700 @@ -46,6 +46,7 @@ char *default_vifscript = NULL; char *default_bridge = NULL; char *default_gatewaydev = NULL; char *default_vifbackend = NULL; +char *default_remus_netbufscript = NULL; enum output_format default_output_format = OUTPUT_FORMAT_JSON; int claim_mode = 1; @@ -177,6 +178,11 @@ static void parse_global_config(const ch if (!xlu_cfg_get_long (config, "claim_mode", &l, 0)) claim_mode = l; + if (!xlu_cfg_get_string (config, "remus.default.netbufscript", &buf, 0)) { + free(default_remus_netbufscript); + default_remus_netbufscript = strdup(buf); + } + xlu_cfg_destroy(config); } diff -r c6804ccfe660 -r 496b22ccf0e2 tools/libxl/xl.h --- a/tools/libxl/xl.h Sun Aug 25 16:33:31 2013 -0700 +++ b/tools/libxl/xl.h Sun Aug 25 16:33:33 2013 -0700 @@ -152,6 +152,7 @@ extern char *default_vifscript; extern char *default_bridge; extern char *default_gatewaydev; extern char *default_vifbackend; +extern char *default_remus_netbufscript; extern char *blkdev_start; enum output_format { diff -r c6804ccfe660 -r 496b22ccf0e2 tools/libxl/xl_cmdimpl.c --- a/tools/libxl/xl_cmdimpl.c Sun Aug 25 16:33:31 2013 -0700 +++ b/tools/libxl/xl_cmdimpl.c Sun Aug 25 16:33:33 2013 -0700 @@ -7070,8 +7070,9 @@ int main_remus(int argc, char **argv) r_info.interval = 200; r_info.blackhole = 0; r_info.compression = 1; - - SWITCH_FOREACH_OPT(opt, "bui:s:e", NULL, "remus", 2) { + r_info.netbuf = 0; + + SWITCH_FOREACH_OPT(opt, "buni:s:e", NULL, "remus", 2) { case 'i': r_info.interval = atoi(optarg); break; @@ -7081,6 +7082,9 @@ int main_remus(int argc, char **argv) case 'u': r_info.compression = 0; break; + case 'n': + r_info.netbuf = 1; + break; case 's': ssh_command = optarg; break; @@ -7092,6 +7096,11 @@ int main_remus(int argc, char **argv) domid = find_domain(argv[optind]); host = argv[optind + 1]; + if (r_info.netbuf) { + if (default_remus_netbufscript) + r_info.netbufscript = strdup(default_remus_netbufscript); + } + if (r_info.blackhole) { send_fd = open("/dev/null", O_RDWR, 0644); if (send_fd < 0) { @@ -7126,13 +7135,10 @@ int main_remus(int argc, char **argv) /* Point of no return */ rc = libxl_domain_remus_start(ctx, &r_info, domid, send_fd, recv_fd, 0); - /* If we are here, it means backup has failed/domain suspend failed. - * Try to resume the domain and exit gracefully. + /* If we are here, it means remus setup/domain susppend/backup has + * failed. Try to resume the domain and exit gracefully. * TODO: Split-Brain check. */ - fprintf(stderr, "remus sender: libxl_domain_suspend failed" - " (rc=%d)\n", rc); - if (rc == ERROR_GUEST_TIMEDOUT) fprintf(stderr, "Failed to suspend domain at primary.\n"); else { diff -r c6804ccfe660 -r 496b22ccf0e2 tools/libxl/xl_cmdtable.c --- a/tools/libxl/xl_cmdtable.c Sun Aug 25 16:33:31 2013 -0700 +++ b/tools/libxl/xl_cmdtable.c Sun Aug 25 16:33:33 2013 -0700 @@ -481,6 +481,7 @@ struct cmd_spec cmd_table[] = { "-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" + "-n Enable network output buffering.\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" _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |