[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH v1] libxl/save: Refactor libxl__domain_suspend_state
Currently struct libxl__domain_suspend_state contains 2 type of states, one is save state, another is suspend state. This patch separate it out. Also rename libxl__domain_suspend() to libxl__domain_save() since it actually do the save domain work. Signed-off-by: Yang Hongyang <yanghy@xxxxxxxxxxxxxx> CC: Ian Campbell <Ian.Campbell@xxxxxxxxxx> CC: Ian Jackson <Ian.Jackson@xxxxxxxxxxxxx> CC: Wei Liu <wei.liu2@xxxxxxxxxx> CC: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> --- tools/libxl/libxl.c | 18 +++--- tools/libxl/libxl_dom.c | 126 +++++++++++++++++++++------------------ tools/libxl/libxl_internal.h | 45 ++++++++------ tools/libxl/libxl_netbuffer.c | 2 +- tools/libxl/libxl_save_callout.c | 2 +- 5 files changed, 108 insertions(+), 85 deletions(-) diff --git a/tools/libxl/libxl.c b/tools/libxl/libxl.c index a6eb2df..7259061 100644 --- a/tools/libxl/libxl.c +++ b/tools/libxl/libxl.c @@ -830,7 +830,7 @@ static void libxl__remus_setup_done(libxl__egc *egc, static void libxl__remus_setup_failed(libxl__egc *egc, libxl__remus_devices_state *rds, int rc); static void remus_failover_cb(libxl__egc *egc, - libxl__domain_suspend_state *dss, int rc); + libxl__domain_save_state *dss, int rc); /* TODO: Explicit Checkpoint acknowledgements via recv_fd. */ int libxl_domain_remus_start(libxl_ctx *ctx, libxl_domain_remus_info *info, @@ -838,7 +838,7 @@ int libxl_domain_remus_start(libxl_ctx *ctx, libxl_domain_remus_info *info, const libxl_asyncop_how *ao_how) { AO_CREATE(ctx, domid, ao_how); - libxl__domain_suspend_state *dss; + libxl__domain_save_state *dss; int rc; libxl_domain_type type = libxl__domain_type(gc, domid); @@ -907,11 +907,11 @@ int libxl_domain_remus_start(libxl_ctx *ctx, libxl_domain_remus_info *info, static void libxl__remus_setup_done(libxl__egc *egc, libxl__remus_devices_state *rds, int rc) { - libxl__domain_suspend_state *dss = CONTAINER_OF(rds, *dss, rds); + libxl__domain_save_state *dss = CONTAINER_OF(rds, *dss, rds); STATE_AO_GC(dss->ao); if (!rc) { - libxl__domain_suspend(egc, dss); + libxl__domain_save(egc, dss); return; } @@ -924,7 +924,7 @@ static void libxl__remus_setup_done(libxl__egc *egc, static void libxl__remus_setup_failed(libxl__egc *egc, libxl__remus_devices_state *rds, int rc) { - libxl__domain_suspend_state *dss = CONTAINER_OF(rds, *dss, rds); + libxl__domain_save_state *dss = CONTAINER_OF(rds, *dss, rds); STATE_AO_GC(dss->ao); if (rc) @@ -935,7 +935,7 @@ static void libxl__remus_setup_failed(libxl__egc *egc, } static void remus_failover_cb(libxl__egc *egc, - libxl__domain_suspend_state *dss, int rc) + libxl__domain_save_state *dss, int rc) { STATE_AO_GC(dss->ao); /* @@ -947,7 +947,7 @@ static void remus_failover_cb(libxl__egc *egc, } static void domain_suspend_cb(libxl__egc *egc, - libxl__domain_suspend_state *dss, int rc) + libxl__domain_save_state *dss, int rc) { STATE_AO_GC(dss->ao); libxl__ao_complete(egc,ao,rc); @@ -966,7 +966,7 @@ int libxl_domain_suspend(libxl_ctx *ctx, uint32_t domid, int fd, int flags, goto out_err; } - libxl__domain_suspend_state *dss; + libxl__domain_save_state *dss; GCNEW(dss); dss->ao = ao; @@ -978,7 +978,7 @@ int libxl_domain_suspend(libxl_ctx *ctx, uint32_t domid, int fd, int flags, dss->live = flags & LIBXL_SUSPEND_LIVE; dss->debug = flags & LIBXL_SUSPEND_DEBUG; - libxl__domain_suspend(egc, dss); + libxl__domain_save(egc, dss); return AO_INPROGRESS; out_err: diff --git a/tools/libxl/libxl_dom.c b/tools/libxl/libxl_dom.c index a0c9850..1f64285 100644 --- a/tools/libxl/libxl_dom.c +++ b/tools/libxl/libxl_dom.c @@ -1103,8 +1103,8 @@ int libxl__toolstack_restore(uint32_t domid, const uint8_t *buf, /*==================== Domain suspend (save) ====================*/ -static void domain_suspend_done(libxl__egc *egc, - libxl__domain_suspend_state *dss, int rc); +static void domain_save_done(libxl__egc *egc, + libxl__domain_save_state *dss, int rc); static void domain_suspend_callback_common_done(libxl__egc *egc, libxl__domain_suspend_state *dss, int ok); @@ -1123,7 +1123,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_save_state *dss, int ok); static void logdirty_init(libxl__logdirty_switch *lds) { @@ -1137,7 +1137,7 @@ static void domain_suspend_switch_qemu_xen_traditional_logdirty libxl__save_helper_state *shs) { libxl__egc *egc = shs->egc; - libxl__domain_suspend_state *dss = CONTAINER_OF(shs, *dss, shs); + libxl__domain_save_state *dss = CONTAINER_OF(shs, *dss, shs); libxl__logdirty_switch *lds = &dss->logdirty; STATE_AO_GC(dss->ao); int rc; @@ -1209,7 +1209,7 @@ static void domain_suspend_switch_qemu_xen_logdirty libxl__save_helper_state *shs) { libxl__egc *egc = shs->egc; - libxl__domain_suspend_state *dss = CONTAINER_OF(shs, *dss, shs); + libxl__domain_save_state *dss = CONTAINER_OF(shs, *dss, shs); STATE_AO_GC(dss->ao); int rc; @@ -1227,7 +1227,7 @@ void libxl__domain_suspend_common_switch_qemu_logdirty { libxl__save_helper_state *shs = user; libxl__egc *egc = shs->egc; - libxl__domain_suspend_state *dss = CONTAINER_OF(shs, *dss, shs); + libxl__domain_save_state *dss = CONTAINER_OF(shs, *dss, shs); STATE_AO_GC(dss->ao); switch (libxl__device_model_version_running(gc, domid)) { @@ -1246,7 +1246,7 @@ void libxl__domain_suspend_common_switch_qemu_logdirty static void switch_logdirty_timeout(libxl__egc *egc, libxl__ev_time *ev, const struct timeval *requested_abs) { - libxl__domain_suspend_state *dss = CONTAINER_OF(ev, *dss, logdirty.timeout); + libxl__domain_save_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); @@ -1255,7 +1255,7 @@ static void switch_logdirty_timeout(libxl__egc *egc, libxl__ev_time *ev, static void switch_logdirty_xswatch(libxl__egc *egc, libxl__ev_xswatch *watch, const char *watch_path, const char *event_path) { - libxl__domain_suspend_state *dss = + libxl__domain_save_state *dss = CONTAINER_OF(watch, *dss, logdirty.watch); libxl__logdirty_switch *lds = &dss->logdirty; STATE_AO_GC(dss->ao); @@ -1310,7 +1310,7 @@ static void switch_logdirty_xswatch(libxl__egc *egc, libxl__ev_xswatch *watch, } static void switch_logdirty_done(libxl__egc *egc, - libxl__domain_suspend_state *dss, + libxl__domain_save_state *dss, int broke) { STATE_AO_GC(dss->ao); @@ -1762,16 +1762,18 @@ static void libxl__domain_suspend_callback(void *data) { libxl__save_helper_state *shs = data; libxl__egc *egc = shs->egc; - libxl__domain_suspend_state *dss = CONTAINER_OF(shs, *dss, shs); + libxl__domain_save_state *dss = CONTAINER_OF(shs, *dss, shs); + libxl__domain_suspend_state *dss2 = &dss->dss; - dss->callback_common_done = domain_suspend_callback_common_done; - domain_suspend_callback_common(egc, dss); + dss2->callback_common_done = domain_suspend_callback_common_done; + domain_suspend_callback_common(egc, dss2); } static void domain_suspend_callback_common_done(libxl__egc *egc, libxl__domain_suspend_state *dss, int ok) { - libxl__xc_domain_saverestore_async_callback_done(egc, &dss->shs, ok); + libxl__domain_save_state *dsvs = CONTAINER_OF(dss, *dsvs, dss); + libxl__xc_domain_saverestore_async_callback_done(egc, &dsvs->shs, ok); } /*----- remus callbacks -----*/ @@ -1788,25 +1790,28 @@ static void libxl__remus_domain_suspend_callback(void *data) { libxl__save_helper_state *shs = data; libxl__egc *egc = shs->egc; - libxl__domain_suspend_state *dss = CONTAINER_OF(shs, *dss, shs); + libxl__domain_save_state *dss = CONTAINER_OF(shs, *dss, shs); + libxl__domain_suspend_state *dss2 = &dss->dss; - dss->callback_common_done = remus_domain_suspend_callback_common_done; - domain_suspend_callback_common(egc, dss); + dss2->callback_common_done = remus_domain_suspend_callback_common_done; + domain_suspend_callback_common(egc, dss2); } static void remus_domain_suspend_callback_common_done(libxl__egc *egc, libxl__domain_suspend_state *dss, int ok) { + libxl__domain_save_state *dsvs = CONTAINER_OF(dss, *dsvs, dss); + if (!ok) goto out; - libxl__remus_devices_state *const rds = &dss->rds; + libxl__remus_devices_state *const rds = &dsvs->rds; rds->callback = remus_devices_postsuspend_cb; libxl__remus_devices_postsuspend(egc, rds); return; out: - libxl__xc_domain_saverestore_async_callback_done(egc, &dss->shs, ok); + libxl__xc_domain_saverestore_async_callback_done(egc, &dsvs->shs, ok); } static void remus_devices_postsuspend_cb(libxl__egc *egc, @@ -1814,7 +1819,7 @@ static void remus_devices_postsuspend_cb(libxl__egc *egc, int rc) { int ok = 0; - libxl__domain_suspend_state *dss = CONTAINER_OF(rds, *dss, rds); + libxl__domain_save_state *dss = CONTAINER_OF(rds, *dss, rds); if (rc) goto out; @@ -1829,7 +1834,7 @@ static void libxl__remus_domain_resume_callback(void *data) { libxl__save_helper_state *shs = data; libxl__egc *egc = shs->egc; - libxl__domain_suspend_state *dss = CONTAINER_OF(shs, *dss, shs); + libxl__domain_save_state *dss = CONTAINER_OF(shs, *dss, shs); STATE_AO_GC(dss->ao); libxl__remus_devices_state *const rds = &dss->rds; @@ -1842,7 +1847,7 @@ static void remus_devices_preresume_cb(libxl__egc *egc, int rc) { int ok = 0; - libxl__domain_suspend_state *dss = CONTAINER_OF(rds, *dss, rds); + libxl__domain_save_state *dss = CONTAINER_OF(rds, *dss, rds); STATE_AO_GC(dss->ao); if (rc) @@ -1862,7 +1867,7 @@ out: /*----- remus asynchronous checkpoint callback -----*/ static void remus_checkpoint_dm_saved(libxl__egc *egc, - libxl__domain_suspend_state *dss, int rc); + libxl__domain_save_state *dss, int rc); static void remus_devices_commit_cb(libxl__egc *egc, libxl__remus_devices_state *rds, int rc); @@ -1872,7 +1877,7 @@ static void remus_next_checkpoint(libxl__egc *egc, libxl__ev_time *ev, static void libxl__remus_domain_checkpoint_callback(void *data) { libxl__save_helper_state *shs = data; - libxl__domain_suspend_state *dss = CONTAINER_OF(shs, *dss, shs); + libxl__domain_save_state *dss = CONTAINER_OF(shs, *dss, shs); libxl__egc *egc = dss->shs.egc; STATE_AO_GC(dss->ao); @@ -1885,7 +1890,7 @@ static void libxl__remus_domain_checkpoint_callback(void *data) } static void remus_checkpoint_dm_saved(libxl__egc *egc, - libxl__domain_suspend_state *dss, int rc) + libxl__domain_save_state *dss, int rc) { /* Convenience aliases */ libxl__remus_devices_state *const rds = &dss->rds; @@ -1910,7 +1915,7 @@ static void remus_devices_commit_cb(libxl__egc *egc, libxl__remus_devices_state *rds, int rc) { - libxl__domain_suspend_state *dss = CONTAINER_OF(rds, *dss, rds); + libxl__domain_save_state *dss = CONTAINER_OF(rds, *dss, rds); STATE_AO_GC(dss->ao); @@ -1944,7 +1949,7 @@ out: static void remus_next_checkpoint(libxl__egc *egc, libxl__ev_time *ev, const struct timeval *requested_abs) { - libxl__domain_suspend_state *dss = + libxl__domain_save_state *dss = CONTAINER_OF(ev, *dss, checkpoint_timeout); STATE_AO_GC(dss->ao); @@ -1957,9 +1962,9 @@ static void remus_next_checkpoint(libxl__egc *egc, libxl__ev_time *ev, libxl__xc_domain_saverestore_async_callback_done(egc, &dss->shs, 1); } -/*----- main code for suspending, in order of execution -----*/ +/*----- main code for saving, in order of execution -----*/ -void libxl__domain_suspend(libxl__egc *egc, libxl__domain_suspend_state *dss) +void libxl__domain_save(libxl__egc *egc, libxl__domain_save_state *dss) { STATE_AO_GC(dss->ao); int port; @@ -1973,20 +1978,23 @@ void libxl__domain_suspend(libxl__egc *egc, libxl__domain_suspend_state *dss) const libxl_domain_remus_info *const r_info = dss->remus; libxl__srm_save_autogen_callbacks *const callbacks = &dss->shs.callbacks.save.a; + libxl__domain_suspend_state *dss2 = &dss->dss; logdirty_init(&dss->logdirty); - libxl__xswait_init(&dss->pvcontrol); - libxl__ev_evtchn_init(&dss->guest_evtchn); - libxl__ev_xswatch_init(&dss->guest_watch); - libxl__ev_time_init(&dss->guest_timeout); + libxl__xswait_init(&dss2->pvcontrol); + libxl__ev_evtchn_init(&dss2->guest_evtchn); + libxl__ev_xswatch_init(&dss2->guest_watch); + libxl__ev_time_init(&dss2->guest_timeout); switch (type) { case LIBXL_DOMAIN_TYPE_HVM: { dss->hvm = 1; + dss2->hvm = 1; break; } case LIBXL_DOMAIN_TYPE_PV: dss->hvm = 0; + dss2->hvm = 0; break; default: abort(); @@ -1996,10 +2004,12 @@ void libxl__domain_suspend(libxl__egc *egc, libxl__domain_suspend_state *dss) | (debug ? XCFLAGS_DEBUG : 0) | (dss->hvm ? XCFLAGS_HVM : 0); - dss->guest_evtchn.port = -1; - dss->guest_evtchn_lockfd = -1; - dss->guest_responded = 0; - dss->dm_savefile = libxl__device_model_savefile(gc, domid); + dss2->guest_evtchn.port = -1; + dss2->guest_evtchn_lockfd = -1; + dss2->guest_responded = 0; + dss2->dm_savefile = libxl__device_model_savefile(gc, domid); + dss2->domid = domid; + dss2->ao = ao; if (r_info != NULL) { dss->interval = r_info->interval; @@ -2008,17 +2018,17 @@ void libxl__domain_suspend(libxl__egc *egc, libxl__domain_suspend_state *dss) dss->xcflags |= XCFLAGS_CHECKPOINT_COMPRESS; } - port = xs_suspend_evtchn_port(dss->domid); + port = xs_suspend_evtchn_port(dss2->domid); if (port >= 0) { rc = libxl__ctx_evtchn_init(gc); if (rc) goto out; - dss->guest_evtchn.port = + dss2->guest_evtchn.port = xc_suspend_evtchn_init_exclusive(CTX->xch, CTX->xce, - dss->domid, port, &dss->guest_evtchn_lockfd); + dss2->domid, port, &dss2->guest_evtchn_lockfd); - if (dss->guest_evtchn.port < 0) { + if (dss2->guest_evtchn.port < 0) { LOG(WARN, "Suspend event channel initialization failed"); rc = ERROR_FAIL; goto out; @@ -2040,27 +2050,28 @@ void libxl__domain_suspend(libxl__egc *egc, libxl__domain_suspend_state *dss) return; out: - domain_suspend_done(egc, dss, rc); + domain_save_done(egc, dss, rc); } void libxl__xc_domain_save_done(libxl__egc *egc, void *dss_void, int rc, int retval, int errnoval) { - libxl__domain_suspend_state *dss = dss_void; + libxl__domain_save_state *dss = dss_void; STATE_AO_GC(dss->ao); /* Convenience aliases */ const libxl_domain_type type = dss->type; + libxl__domain_suspend_state *dss2 = &dss->dss; if (rc) goto out; if (retval) { LOGEV(ERROR, errnoval, "saving domain: %s", - dss->guest_responded ? + dss2->guest_responded ? "domain responded to suspend request" : "domain did not respond to suspend request"); - if ( !dss->guest_responded ) + if ( !dss2->guest_responded ) rc = ERROR_GUEST_TIMEDOUT; else rc = ERROR_FAIL; @@ -2068,24 +2079,24 @@ void libxl__xc_domain_save_done(libxl__egc *egc, void *dss_void, } if (type == LIBXL_DOMAIN_TYPE_HVM) { - rc = libxl__domain_suspend_device_model(gc, dss); + rc = libxl__domain_suspend_device_model(gc, dss2); if (rc) goto out; - libxl__domain_save_device_model(egc, dss, domain_suspend_done); + libxl__domain_save_device_model(egc, dss, domain_save_done); return; } rc = 0; out: - domain_suspend_done(egc, dss, rc); + domain_save_done(egc, dss, rc); } static void save_device_model_datacopier_done(libxl__egc *egc, libxl__datacopier_state *dc, int onwrite, int errnoval); void libxl__domain_save_device_model(libxl__egc *egc, - libxl__domain_suspend_state *dss, + libxl__domain_save_state *dss, libxl__save_device_model_cb *callback) { STATE_AO_GC(dss->ao); @@ -2096,7 +2107,7 @@ void libxl__domain_save_device_model(libxl__egc *egc, dss->save_dm_callback = callback; /* Convenience aliases */ - const char *const filename = dss->dm_savefile; + const char *const filename = dss->dss.dm_savefile; const int fd = dss->fd; libxl__datacopier_state *dc = &dss->save_dm_datacopier; @@ -2148,12 +2159,12 @@ void libxl__domain_save_device_model(libxl__egc *egc, static void save_device_model_datacopier_done(libxl__egc *egc, libxl__datacopier_state *dc, int onwrite, int errnoval) { - libxl__domain_suspend_state *dss = + libxl__domain_save_state *dss = CONTAINER_OF(dc, *dss, save_dm_datacopier); STATE_AO_GC(dss->ao); /* Convenience aliases */ - const char *const filename = dss->dm_savefile; + const char *const filename = dss->dss.dm_savefile; int our_rc = 0; int rc; @@ -2177,19 +2188,20 @@ static void remus_teardown_done(libxl__egc *egc, libxl__remus_devices_state *rds, int rc); -static void domain_suspend_done(libxl__egc *egc, - libxl__domain_suspend_state *dss, int rc) +static void domain_save_done(libxl__egc *egc, + libxl__domain_save_state *dss, int rc) { STATE_AO_GC(dss->ao); /* Convenience aliases */ const uint32_t domid = dss->domid; + libxl__domain_suspend_state *dss2 = &dss->dss; - libxl__ev_evtchn_cancel(gc, &dss->guest_evtchn); + libxl__ev_evtchn_cancel(gc, &dss2->guest_evtchn); - if (dss->guest_evtchn.port > 0) + if (dss2->guest_evtchn.port > 0) xc_suspend_evtchn_release(CTX->xch, CTX->xce, domid, - dss->guest_evtchn.port, &dss->guest_evtchn_lockfd); + dss2->guest_evtchn.port, &dss2->guest_evtchn_lockfd); if (!dss->remus) { dss->callback(egc, dss, rc); @@ -2212,7 +2224,7 @@ static void remus_teardown_done(libxl__egc *egc, libxl__remus_devices_state *rds, int rc) { - libxl__domain_suspend_state *dss = CONTAINER_OF(rds, *dss, rds); + libxl__domain_save_state *dss = CONTAINER_OF(rds, *dss, rds); STATE_AO_GC(dss->ao); if (rc) diff --git a/tools/libxl/libxl_internal.h b/tools/libxl/libxl_internal.h index 8aaa1ad..f86fc89 100644 --- a/tools/libxl/libxl_internal.h +++ b/tools/libxl/libxl_internal.h @@ -2818,11 +2818,12 @@ _hidden int libxl__netbuffer_enabled(libxl__gc *gc); /*----- Domain suspend (save) state structure -----*/ typedef struct libxl__domain_suspend_state libxl__domain_suspend_state; +typedef struct libxl__domain_save_state libxl__domain_save_state; -typedef void libxl__domain_suspend_cb(libxl__egc*, - libxl__domain_suspend_state*, int rc); +typedef void libxl__domain_save_cb(libxl__egc*, + libxl__domain_save_state*, int rc); typedef void libxl__save_device_model_cb(libxl__egc*, - libxl__domain_suspend_state*, int rc); + libxl__domain_save_state*, int rc); typedef struct libxl__logdirty_switch { const char *cmd; @@ -2833,9 +2834,27 @@ typedef struct libxl__logdirty_switch { } libxl__logdirty_switch; struct libxl__domain_suspend_state { + /* set by caller of domain_suspend_callback_common */ + libxl__ao *ao; + + uint32_t domid; + int hvm; + /* private */ + libxl__ev_evtchn guest_evtchn; + int guest_evtchn_lockfd; + int guest_responded; + libxl__xswait_state pvcontrol; + libxl__ev_xswatch guest_watch; + libxl__ev_time guest_timeout; + const char *dm_savefile; + void (*callback_common_done)(libxl__egc*, + struct libxl__domain_suspend_state*, int ok); +}; + +struct libxl__domain_save_state { /* set by caller of libxl__domain_suspend */ libxl__ao *ao; - libxl__domain_suspend_cb *callback; + libxl__domain_save_cb *callback; uint32_t domid; int fd; @@ -2844,22 +2863,14 @@ struct libxl__domain_suspend_state { int debug; const libxl_domain_remus_info *remus; /* private */ - libxl__ev_evtchn guest_evtchn; - int guest_evtchn_lockfd; + libxl__domain_suspend_state dss; int hvm; int xcflags; - int guest_responded; - libxl__xswait_state pvcontrol; - libxl__ev_xswatch guest_watch; - libxl__ev_time guest_timeout; - const char *dm_savefile; libxl__remus_devices_state rds; libxl__ev_time checkpoint_timeout; /* used for Remus checkpoint */ int interval; /* checkpoint interval (for Remus) */ libxl__save_helper_state shs; libxl__logdirty_switch logdirty; - void (*callback_common_done)(libxl__egc*, - struct libxl__domain_suspend_state*, int ok); /* private for libxl__domain_save_device_model */ libxl__save_device_model_cb *save_dm_callback; libxl__datacopier_state save_dm_datacopier; @@ -3135,12 +3146,12 @@ struct libxl__domain_create_state { /*----- Domain suspend (save) functions -----*/ /* calls dss->callback when done */ -_hidden void libxl__domain_suspend(libxl__egc *egc, - libxl__domain_suspend_state *dss); +_hidden void libxl__domain_save(libxl__egc *egc, + libxl__domain_save_state *dss); /* calls libxl__xc_domain_suspend_done when done */ -_hidden void libxl__xc_domain_save(libxl__egc*, libxl__domain_suspend_state*); +_hidden void libxl__xc_domain_save(libxl__egc*, libxl__domain_save_state*); /* If rc==0 then retval is the return value from xc_domain_save * and errnoval is the errno value it provided. * If rc!=0, retval and errnoval are undefined. */ @@ -3175,7 +3186,7 @@ _hidden void libxl__xc_domain_restore_done(libxl__egc *egc, void *dcs_void, _hidden int libxl__domain_suspend_device_model(libxl__gc *gc, libxl__domain_suspend_state *dss); _hidden void libxl__domain_save_device_model(libxl__egc *egc, - libxl__domain_suspend_state *dss, + libxl__domain_save_state *dss, libxl__save_device_model_cb *callback); _hidden const char *libxl__device_model_savefile(libxl__gc *gc, uint32_t domid); diff --git a/tools/libxl/libxl_netbuffer.c b/tools/libxl/libxl_netbuffer.c index edc6843..71c6531 100644 --- a/tools/libxl/libxl_netbuffer.c +++ b/tools/libxl/libxl_netbuffer.c @@ -41,7 +41,7 @@ int libxl__netbuffer_enabled(libxl__gc *gc) int init_subkind_nic(libxl__remus_devices_state *rds) { int rc, ret; - libxl__domain_suspend_state *dss = CONTAINER_OF(rds, *dss, rds); + libxl__domain_save_state *dss = CONTAINER_OF(rds, *dss, rds); STATE_AO_GC(rds->ao); diff --git a/tools/libxl/libxl_save_callout.c b/tools/libxl/libxl_save_callout.c index 40b25e4..cd342b9 100644 --- a/tools/libxl/libxl_save_callout.c +++ b/tools/libxl/libxl_save_callout.c @@ -74,7 +74,7 @@ void libxl__xc_domain_restore(libxl__egc *egc, libxl__domain_create_state *dcs, argnums, ARRAY_SIZE(argnums)); } -void libxl__xc_domain_save(libxl__egc *egc, libxl__domain_suspend_state *dss) +void libxl__xc_domain_save(libxl__egc *egc, libxl__domain_save_state *dss) { STATE_AO_GC(dss->ao); int r, rc, toolstack_data_fd = -1; -- 1.9.1 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |