xen-devel.lists.xenproject.org archive mirror
 help / color / mirror / Atom feed
From: "Luis R. Rodriguez" <mcgrof@do-not-panic.com>
To: xen-devel@lists.xenproject.org
Cc: "Ian Campbell" <ian.campbell@citrix.com>,
	"Stefano Stabellini" <stefano.stabellini@eu.citrix.com>,
	"Luis R. Rodriguez" <mcgrof@suse.com>,
	"Jan Rękorajski" <baggins@pld-linux.org>,
	"Ian Jackson" <ian.jackson@eu.citrix.com>,
	"Jacek Konieczny" <jajcus@jajcus.net>,
	"M A Young" <m.a.young@durham.ac.uk>
Subject: [PATCH v2 1/7] xenstore-read: add support for a retry open limit on xenstored
Date: Wed, 19 Mar 2014 13:58:47 -0700	[thread overview]
Message-ID: <1395262733-11885-2-git-send-email-mcgrof@do-not-panic.com> (raw)
In-Reply-To: <1395262733-11885-1-git-send-email-mcgrof@do-not-panic.com>

From: "Luis R. Rodriguez" <mcgrof@suse.com>

This adds support for a customizable retry limit on trying to open
the xenstored, each retry is separated by 1 second. This should allow
us to simplify both our LSB init scripts and eventually our systemd
service files for starting the xenstored.

Cc: Ian Jackson <ian.jackson@eu.citrix.com>
Cc: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
Cc: Ian Campbell <ian.campbell@citrix.com>
Cc: Jan Rękorajski <baggins@pld-linux.org>
Cc: M A Young <m.a.young@durham.ac.uk>
Cc: Jacek Konieczny <jajcus@jajcus.net>
Cc: xen-devel@lists.xenproject.org
Signed-off-by: Luis R. Rodriguez <mcgrof@suse.com>
---
 tools/xenstore/xenstore_client.c | 31 +++++++++++++++++++++++++------
 1 file changed, 25 insertions(+), 6 deletions(-)

diff --git a/tools/xenstore/xenstore_client.c b/tools/xenstore/xenstore_client.c
index 0ec103f..87972b7 100644
--- a/tools/xenstore/xenstore_client.c
+++ b/tools/xenstore/xenstore_client.c
@@ -77,7 +77,8 @@ usage(enum mode mode, int incl_mode, const char *progname)
 	errx(1, "Usage: %s <mode> [-h] [...]", progname);
     case MODE_read:
 	mstr = incl_mode ? "read " : "";
-	errx(1, "Usage: %s %s[-h] [-p] [-s] key [...]", progname, mstr);
+	errx(1, "Usage: %s %s[-h] [-p] [-s] [ -l <num_open_tries> ] key [...]",
+	     progname, mstr);
     case MODE_write:
 	mstr = incl_mode ? "write " : "";
 	errx(1, "Usage: %s %s[-h] [-s] key value [...]", progname, mstr);
@@ -493,9 +494,9 @@ static enum mode lookup_mode(const char *m)
 int
 main(int argc, char **argv)
 {
-    struct xs_handle *xsh;
+    struct xs_handle *xsh = NULL;
     xs_transaction_t xth = XBT_NULL;
-    int ret = 0, socket = 0;
+    int ret = 0, socket = 0, limit = 1, open_tries;
     int prefix = 0;
     int tidy = 0;
     int upto = 0;
@@ -535,10 +536,11 @@ main(int argc, char **argv)
 	    {"upto",    0, 0, 'u'}, /* MODE_chmod */
 	    {"recurse", 0, 0, 'r'}, /* MODE_chmod */
 	    {"number",  1, 0, 'n'}, /* MODE_watch */
+	    {"limit",   1, 0, 'l'}, /* MODE_read */
 	    {0, 0, 0, 0}
 	};
 
-	c = getopt_long(argc - switch_argv, argv + switch_argv, "hfspturn:",
+	c = getopt_long(argc - switch_argv, argv + switch_argv, "hfspturn:l:",
 			long_options, &index);
 	if (c == -1)
 	    break;
@@ -589,6 +591,16 @@ main(int argc, char **argv)
 	    else
 		usage(mode, switch_argv, argv[0]);
 	    break;
+	case 'l':
+	    if (mode == MODE_read)
+		limit = atoi(optarg);
+	    else
+		usage(mode, switch_argv, argv[0]);
+	    if (limit < 0) {
+		limit = 1;
+		usage(mode, switch_argv, argv[0]);
+	    }
+	    break;
 	}
     }
 
@@ -632,8 +644,15 @@ main(int argc, char **argv)
 	    max_width = ws.ws_col - 2;
     }
 
-    xsh = xs_open(socket ? XS_OPEN_SOCKETONLY : 0);
-    if (xsh == NULL) err(1, "xs_open");
+    for (open_tries = 0; open_tries < limit; open_tries++) {
+	    xsh = xs_open(socket ? XS_OPEN_SOCKETONLY : 0);
+	    if (xsh)
+		    break;
+	    if (limit > 1)
+		    sleep(1);
+    }
+    if (!xsh)
+	    err(1, "xs_open");
 
 again:
     if (transaction) {
-- 
1.9.0


_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel

  reply	other threads:[~2014-03-19 20:59 UTC|newest]

Thread overview: 37+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-03-19 20:58 [PATCH v2 0/7] xen: add systemd files Luis R. Rodriguez
2014-03-19 20:58 ` Luis R. Rodriguez [this message]
2014-03-21 15:21   ` [PATCH v2 1/7] xenstore-read: add support for a retry open limit on xenstored Ian Campbell
2014-03-21 15:22     ` Ian Jackson
2014-03-22  1:36       ` Luis R. Rodriguez
2014-03-22  1:33     ` Luis R. Rodriguez
2014-03-24  9:57       ` Ian Campbell
2014-03-21 15:40   ` David Vrabel
2014-03-21 16:01     ` Ian Campbell
2014-03-22  1:43       ` Luis R. Rodriguez
2014-03-24 10:01         ` Ian Campbell
2014-03-22  1:41     ` Luis R. Rodriguez
2014-03-19 20:58 ` [PATCH v2 2/7] xencommons: use the retry limit instead of implementing our own timeout Luis R. Rodriguez
2014-03-21 15:24   ` Ian Campbell
2014-03-19 20:58 ` [PATCH v2 3/7] tools/xendomains: make xl the default Luis R. Rodriguez
2014-03-21 15:26   ` Ian Campbell
2014-03-19 20:58 ` [PATCH v2 4/7] tools/xendomains: remove old redhat check Luis R. Rodriguez
2014-03-21 15:28   ` Ian Campbell
2014-03-22  1:56     ` Luis R. Rodriguez
2014-03-19 20:58 ` [PATCH v2 5/7] tools/xendomains: do space cleanups Luis R. Rodriguez
2014-03-21 15:29   ` Ian Campbell
2014-03-19 20:58 ` [PATCH v2 6/7] tools/xendomains: move to sbin and use init helper Luis R. Rodriguez
2014-03-19 22:03   ` Olaf Hering
2014-03-22  2:00     ` Luis R. Rodriguez
2014-03-21 15:34   ` Ian Campbell
2014-03-22  2:17     ` Luis R. Rodriguez
2014-03-24 10:09       ` Ian Campbell
2014-04-28  5:11         ` Luis R. Rodriguez
2014-04-28  9:15           ` Ian Campbell
2014-04-28 10:47             ` Luis R. Rodriguez
2014-03-19 20:58 ` [PATCH v2 7/7] systemd: add support initial xen systemd service files Luis R. Rodriguez
2014-03-19 21:05   ` Luis R. Rodriguez
2014-03-21 10:08   ` Ian Campbell
2014-03-22  2:26     ` Luis R. Rodriguez
2014-03-24 10:11       ` Ian Campbell
2014-03-24 16:36         ` Luis R. Rodriguez
2014-04-28  5:12         ` Luis R. Rodriguez

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=1395262733-11885-2-git-send-email-mcgrof@do-not-panic.com \
    --to=mcgrof@do-not-panic.com \
    --cc=baggins@pld-linux.org \
    --cc=ian.campbell@citrix.com \
    --cc=ian.jackson@eu.citrix.com \
    --cc=jajcus@jajcus.net \
    --cc=m.a.young@durham.ac.uk \
    --cc=mcgrof@suse.com \
    --cc=stefano.stabellini@eu.citrix.com \
    --cc=xen-devel@lists.xenproject.org \
    /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).