From: Ian Jackson Date: Tue, 10 Feb 2015 19:03:16 +0000 (+0000) Subject: libxl: ao abort: Preparations for save/restore abort X-Git-Tag: archive/raspbian/4.8.0-1+rpi1~1^2~2992 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=60d6c96bd93b074bc346dc15ab27bd59907d1667;p=xen.git libxl: ao abort: Preparations for save/restore abort Two unrelated non-functional changes, broken out into a pre-patch for easier review: Break out a function sendsig() in libxl_save_callout.c. Move io_fd to be a global variable in libxl_save_helper.c. Signed-off-by: Ian Jackson Acked-by: Ian Campbell --- v2: New in this version of the series. --- diff --git a/tools/libxl/libxl_save_callout.c b/tools/libxl/libxl_save_callout.c index 40b25e4bed..1d584f10d1 100644 --- a/tools/libxl/libxl_save_callout.c +++ b/tools/libxl/libxl_save_callout.c @@ -237,6 +237,12 @@ static void run_helper(libxl__egc *egc, libxl__save_helper_state *shs, libxl__carefd_close(childs_pipes[1]); helper_failed(egc, shs, rc);; } +static void sendsig(libxl__gc *gc, libxl__save_helper_state *shs, int sig) +{ + int r = kill(shs->child.pid, sig); + if (r) LOGE(WARN, "failed to kill save/restore helper [%lu] (signal %d)", + (unsigned long)shs->child.pid, sig); +} static void helper_failed(libxl__egc *egc, libxl__save_helper_state *shs, int rc) @@ -253,9 +259,7 @@ static void helper_failed(libxl__egc *egc, libxl__save_helper_state *shs, return; } - int r = kill(shs->child.pid, SIGKILL); - if (r) LOGE(WARN, "failed to kill save/restore helper [%lu]", - (unsigned long)shs->child.pid); + sendsig(gc, shs, SIGKILL); } static void helper_stdout_readable(libxl__egc *egc, libxl__ev_fd *ev, diff --git a/tools/libxl/libxl_save_helper.c b/tools/libxl/libxl_save_helper.c index 74826a123b..7514b2eca4 100644 --- a/tools/libxl/libxl_save_helper.c +++ b/tools/libxl/libxl_save_helper.c @@ -85,6 +85,7 @@ static xentoollog_logger logger = { tellparent_destroy, }; static xc_interface *xch; +static int io_fd; /*----- error handling -----*/ @@ -211,7 +212,7 @@ int main(int argc, char **argv) if (!strcmp(mode,"--save-domain")) { - int io_fd = atoi(NEXTARG); + io_fd = atoi(NEXTARG); uint32_t dom = strtoul(NEXTARG,0,10); uint32_t max_iters = strtoul(NEXTARG,0,10); uint32_t max_factor = strtoul(NEXTARG,0,10); @@ -234,7 +235,7 @@ int main(int argc, char **argv) } else if (!strcmp(mode,"--restore-domain")) { - int io_fd = atoi(NEXTARG); + io_fd = atoi(NEXTARG); uint32_t dom = strtoul(NEXTARG,0,10); unsigned store_evtchn = strtoul(NEXTARG,0,10); domid_t store_domid = strtoul(NEXTARG,0,10);