[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH 17/22] libxl: suspend: domain_suspend_callback_common xs errs
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 <Ian.Jackson@xxxxxxxxxxxxx> CC: Stefano Stabellini <stefano.stabellini@xxxxxxxxxxxxx> Acked-by: Ian Campbell <ian.campbell@xxxxxxxxxx> --- 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 78f1de7..9fec4e7 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 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |