From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ian Jackson Subject: [PATCH 03/29] libxl: suspend: switch_logdirty_done takes rc Date: Tue, 10 Feb 2015 20:09:50 +0000 Message-ID: <1423599016-32639-4-git-send-email-ian.jackson@eu.citrix.com> References: <1423599016-32639-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: <1423599016-32639-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: Ian Jackson , Euan Harris List-Id: xen-devel@lists.xenproject.org switch_logdirty_done used to take the value to pass to libxl__xc_domain_saverestore_async_callback_done (ie, the return value from the callback). (This was mistakenly described as "ok" in the prototype, but in the definition it is "broke" and all the call sites passed 0 for success or -1 for error.) Instead, make it take a libxl error code (rc). Convert this to the suspend callback value at the end. No functional change in this patch. Signed-off-by: Ian Jackson --- tools/libxl/libxl_dom.c | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/tools/libxl/libxl_dom.c b/tools/libxl/libxl_dom.c index 48d661a..010061e 100644 --- a/tools/libxl/libxl_dom.c +++ b/tools/libxl/libxl_dom.c @@ -947,7 +947,7 @@ static void switch_logdirty_timeout(libxl__egc *egc, libxl__ev_time *ev, static void switch_logdirty_xswatch(libxl__egc *egc, libxl__ev_xswatch*, const char *watch_path, const char *event_path); static void switch_logdirty_done(libxl__egc *egc, - libxl__domain_suspend_state *dss, int ok); + libxl__domain_suspend_state *dss, int rc); static void logdirty_init(libxl__logdirty_switch *lds) { @@ -1024,7 +1024,7 @@ static void domain_suspend_switch_qemu_xen_traditional_logdirty out: LOG(ERROR,"logdirty switch failed (rc=%d), aborting suspend",rc); libxl__xs_transaction_abort(gc, &t); - switch_logdirty_done(egc,dss,-1); + switch_logdirty_done(egc,dss,rc); } static void domain_suspend_switch_qemu_xen_logdirty @@ -1072,7 +1072,7 @@ static void switch_logdirty_timeout(libxl__egc *egc, libxl__ev_time *ev, libxl__domain_suspend_state *dss = CONTAINER_OF(ev, *dss, logdirty.timeout); STATE_AO_GC(dss->ao); LOG(ERROR,"logdirty switch: wait for device model timed out"); - switch_logdirty_done(egc,dss,-1); + switch_logdirty_done(egc,dss,ERROR_FAIL); } static void switch_logdirty_xswatch(libxl__egc *egc, libxl__ev_xswatch *watch, @@ -1124,17 +1124,16 @@ static void switch_logdirty_xswatch(libxl__egc *egc, libxl__ev_xswatch *watch, */ libxl__xs_transaction_abort(gc, &t); - if (!rc) { - switch_logdirty_done(egc,dss,0); - } else if (rc < 0) { - LOG(ERROR,"logdirty switch: failed (rc=%d)",rc); - switch_logdirty_done(egc,dss,-1); + if (rc <= 0) { + if (rc < 0) + LOG(ERROR,"logdirty switch: failed (rc=%d)",rc); + switch_logdirty_done(egc,dss,rc); } } static void switch_logdirty_done(libxl__egc *egc, libxl__domain_suspend_state *dss, - int broke) + int rc) { STATE_AO_GC(dss->ao); libxl__logdirty_switch *lds = &dss->logdirty; @@ -1142,6 +1141,12 @@ static void switch_logdirty_done(libxl__egc *egc, libxl__ev_xswatch_deregister(gc, &lds->watch); libxl__ev_time_deregister(gc, &lds->timeout); + int broke; + if (rc) { + broke = -1; + } else { + broke = 0; + } libxl__xc_domain_saverestore_async_callback_done(egc, &dss->shs, broke); } -- 1.7.10.4