From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ian Jackson Subject: [PATCH 18/23] libxl: suspend: domain_suspend_callback_common xs errs Date: Tue, 17 Dec 2013 18:35:32 +0000 Message-ID: <1387305337-15355-19-git-send-email-ian.jackson@eu.citrix.com> References: <1387305337-15355-1-git-send-email-ian.jackson@eu.citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <1387305337-15355-1-git-send-email-ian.jackson@eu.citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: xen-devel@lists.xensource.com Cc: Shriram Rajagopalan , George Dunlap , Ian Jackson , Ian Campbell , Stefano Stabellini List-Id: xen-devel@lists.xenproject.org In domain_suspend_callback_common, use libxl__xs_transaction_start in a loop, rather than xs_transaction_start and a goto label. This will improve the error handling, but have no other semantic effect. Signed-off-by: Ian Jackson CC: Stefano Stabellini CC: Ian Campbell --- tools/libxl/libxl_dom.c | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/tools/libxl/libxl_dom.c b/tools/libxl/libxl_dom.c index a0b3a57..8aceba9 100644 --- a/tools/libxl/libxl_dom.c +++ b/tools/libxl/libxl_dom.c @@ -1050,6 +1050,7 @@ static void domain_suspend_callback_common(libxl__egc *egc, char *state = "suspend"; int watchdog; xs_transaction_t t; + int rc; /* Convenience aliases */ const uint32_t domid = dss->domid; @@ -1116,17 +1117,19 @@ static void domain_suspend_callback_common(libxl__egc *egc, */ if (!domain_suspend_pvcontrol_acked(state)) { LOG(ERROR, "guest didn't acknowledge suspend, cancelling request"); - retry_transaction: - t = xs_transaction_start(CTX->xsh); + for (;;) { + rc = libxl__xs_transaction_start(gc, &t); + if (rc) goto err; - state = libxl__domain_pvcontrol_read(gc, t, domid); + state = libxl__domain_pvcontrol_read(gc, t, domid); - if (!domain_suspend_pvcontrol_acked(state)) - libxl__domain_pvcontrol_write(gc, t, domid, ""); + if (!domain_suspend_pvcontrol_acked(state)) + libxl__domain_pvcontrol_write(gc, t, domid, ""); - if (!xs_transaction_end(CTX->xsh, t, 0)) - if (errno == EAGAIN) - goto retry_transaction; + rc = libxl__xs_transaction_commit(gc, &t); + if (!rc) break; + if (rc<0) goto err; + } } /* -- 1.7.10.4