Lines Matching refs:crs

26     libxl__colo_restore_state *crs;  member
51 static void colo_enable_logdirty(libxl__colo_restore_state *crs, libxl__egc *egc) in colo_enable_logdirty() argument
53 libxl__domain_create_state *dcs = CONTAINER_OF(crs, *dcs, crs); in colo_enable_logdirty()
54 libxl__colo_restore_checkpoint_state *crcs = crs->crcs; in colo_enable_logdirty()
57 const uint32_t domid = crs->domid; in colo_enable_logdirty()
71 if (crs->hvm) { in colo_enable_logdirty()
79 static void colo_disable_logdirty(libxl__colo_restore_state *crs, in colo_disable_logdirty() argument
82 libxl__domain_create_state *dcs = CONTAINER_OF(crs, *dcs, crs); in colo_disable_logdirty()
83 libxl__colo_restore_checkpoint_state *crcs = crs->crcs; in colo_disable_logdirty()
86 const uint32_t domid = crs->domid; in colo_disable_logdirty()
96 if (crs->hvm) { in colo_disable_logdirty()
108 libxl__domain_create_state *dcs = CONTAINER_OF(crcs->crs, *dcs, crs); in colo_resume_vm()
112 libxl__colo_restore_state *const crs = crcs->crs; in colo_resume_vm() local
116 if (!crs->saved_cb) { in colo_resume_vm()
119 rc = libxl__qmp_restore(gc, crs->domid, crcs->state_file); in colo_resume_vm()
121 LOGD(ERROR, crs->domid, in colo_resume_vm()
127 rc = libxl__domain_resume(gc, crs->domid, 0); in colo_resume_vm()
129 LOGD(ERROR, crs->domid, "cannot resume secondary vm"); in colo_resume_vm()
219 libxl__colo_restore_state *crs) in libxl__colo_restore_setup() argument
221 libxl__domain_create_state *dcs = CONTAINER_OF(crs, *dcs, crs); in libxl__colo_restore_setup()
228 const int domid = crs->domid; in libxl__colo_restore_setup()
230 STATE_AO_GC(crs->ao); in libxl__colo_restore_setup()
233 crs->crcs = crcs; in libxl__colo_restore_setup()
234 crcs->crs = crs; in libxl__colo_restore_setup()
235 crs->qdisk_setuped = false; in libxl__colo_restore_setup()
236 crs->qdisk_used = false; in libxl__colo_restore_setup()
238 crs->colo_proxy_script = libxl__strdup(gc, dcs->colo_proxy_script); in libxl__colo_restore_setup()
240 crs->colo_proxy_script = GCSPRINTF("%s/colo-proxy-setup", in libxl__colo_restore_setup()
260 crs->saved_cb = dcs->callback; in libxl__colo_restore_setup()
268 crcs->sws.fd = crs->send_back_fd; in libxl__colo_restore_setup()
272 dcs->cds.concrete_data = crs; in libxl__colo_restore_setup()
279 crs->callback(egc, crs, rc); in libxl__colo_restore_setup()
287 libxl__colo_restore_checkpoint_state *crcs = dcs->crs.crcs; in libxl__colo_domain_create_cb()
296 static void do_failover(libxl__egc *egc, libxl__colo_restore_state *crs);
304 libxl__colo_restore_state *crs,
311 libxl__colo_restore_checkpoint_state *crcs = dcs->crs.crcs; in libxl__colo_restore_teardown()
315 libxl__colo_restore_state *const crs = &dcs->crs; in libxl__colo_restore_teardown() local
321 LOGD(INFO, crs->domid, "%s", rc ? "colo fails" : "failover"); in libxl__colo_restore_teardown()
324 if (crs->saved_cb) { in libxl__colo_restore_teardown()
330 if (crs->qdisk_setuped) { in libxl__colo_restore_teardown()
331 libxl__qmp_stop_replication(gc, crs->domid, false); in libxl__colo_restore_teardown()
332 crs->qdisk_setuped = false; in libxl__colo_restore_teardown()
348 libxl__colo_restore_state *crs = cds->concrete_data; in colo_restore_teardown_devices_done() local
349 libxl__colo_restore_checkpoint_state *crcs = crs->crcs; in colo_restore_teardown_devices_done()
350 libxl__domain_create_state *dcs = CONTAINER_OF(crs, *dcs, crs); in colo_restore_teardown_devices_done()
361 colo_proxy_teardown(&crs->cps); in colo_restore_teardown_devices_done()
366 do_failover(egc, crs); in colo_restore_teardown_devices_done()
370 libxl__colo_restore_teardown_done(egc, crs, rc); in colo_restore_teardown_devices_done()
373 static void do_failover(libxl__egc *egc, libxl__colo_restore_state *crs) in do_failover() argument
375 libxl__colo_restore_checkpoint_state *crcs = crs->crcs; in do_failover()
391 LOGD(ERROR, crs->domid, "migration fails"); in do_failover()
398 colo_disable_logdirty(crs, egc); in do_failover()
401 LOGD(ERROR, crs->domid, "invalid status: %d", status); in do_failover()
410 libxl__domain_create_state *dcs = CONTAINER_OF(crcs->crs, *dcs, crs); in do_failover_done()
413 libxl__colo_restore_state *const crs = crcs->crs; in do_failover_done() local
418 LOGD(ERROR, crs->domid, "cannot do failover"); in do_failover_done()
420 libxl__colo_restore_teardown_done(egc, crs, rc); in do_failover_done()
432 LOGD(WARN, crcs->crs->domid, "cannot disable logdirty"); in colo_disable_logdirty_done()
448 libxl__colo_restore_state *crs, in libxl__colo_restore_teardown_done() argument
451 libxl__domain_create_state *dcs = CONTAINER_OF(crs, *dcs, crs); in libxl__colo_restore_teardown_done()
455 const int domid = crs->domid; in libxl__colo_restore_teardown_done()
466 if (crs->saved_cb) { in libxl__colo_restore_teardown_done()
467 dcs->callback = crs->saved_cb; in libxl__colo_restore_teardown_done()
468 crs->saved_cb = NULL; in libxl__colo_restore_teardown_done()
471 dcs->callback(egc, dcs, rc, crs->domid); in libxl__colo_restore_teardown_done()
494 libxl__colo_restore_checkpoint_state *crcs = dcs->crs.crcs; in libxl__colo_restore_domain_checkpoint_callback()
542 libxl__colo_restore_state *crs);
554 libxl__colo_restore_checkpoint_state *crcs = dcs->crs.crcs; in libxl__colo_restore_domain_resume_callback()
576 libxl__domain_create_state *dcs = CONTAINER_OF(crcs->crs, *dcs, crs); in colo_send_svm_ready_done()
595 libxl__colo_restore_state *crs = cds->concrete_data; in colo_restore_preresume_cb() local
596 libxl__domain_create_state *dcs = CONTAINER_OF(crs, *dcs, crs); in colo_restore_preresume_cb()
597 libxl__colo_restore_checkpoint_state *crcs = crs->crcs; in colo_restore_preresume_cb()
605 LOGD(ERROR, crs->domid, "preresume fails"); in colo_restore_preresume_cb()
609 if (crs->qdisk_setuped) { in colo_restore_preresume_cb()
610 if (libxl__qmp_colo_do_checkpoint(gc, crs->domid)) { in colo_restore_preresume_cb()
611 LOGD(ERROR, crs->domid, "doing checkpoint fails"); in colo_restore_preresume_cb()
616 if (!crs->cps.is_userspace_proxy) in colo_restore_preresume_cb()
617 colo_proxy_preresume(&crs->cps); in colo_restore_preresume_cb()
639 libxl__domain_create_state *dcs = CONTAINER_OF(crcs->crs, *dcs, crs); in colo_resume_vm_done()
642 libxl__colo_restore_state *const crs = crcs->crs; in colo_resume_vm_done() local
649 LOGD(ERROR, crs->domid, "cannot resume secondary vm"); in colo_resume_vm_done()
655 colo_proxy_postresume(&crs->cps); in colo_resume_vm_done()
658 if (crs->saved_cb) { in colo_resume_vm_done()
659 dcs->callback = crs->saved_cb; in colo_resume_vm_done()
660 crs->saved_cb = NULL; in colo_resume_vm_done()
665 colo_enable_logdirty(crs, egc); in colo_resume_vm_done()
693 libxl__colo_restore_state *const crs = crcs->crs; in colo_enable_logdirty_done() local
703 colo_disable_logdirty(crs, egc); in colo_enable_logdirty_done()
707 colo_setup_checkpoint_devices(egc, crs); in colo_enable_logdirty_done()
715 libxl__domain_create_state *dcs = CONTAINER_OF(crcs->crs, *dcs, crs); in colo_reenable_logdirty()
718 libxl__colo_restore_state *const crs = crcs->crs; in colo_reenable_logdirty() local
724 LOGD(ERROR, crs->domid, "cannot enable logdirty"); in colo_reenable_logdirty()
729 colo_enable_logdirty(crs, egc); in colo_reenable_logdirty()
742 libxl__domain_create_state *dcs = CONTAINER_OF(crcs->crs, *dcs, crs); in colo_reenable_logdirty_done()
750 LOGD(ERROR, crcs->crs->domid, "cannot enable logdirty"); in colo_reenable_logdirty_done()
754 colo_setup_checkpoint_devices(egc, crcs->crs); in colo_reenable_logdirty_done()
767 libxl__colo_restore_state *crs) in colo_setup_checkpoint_devices() argument
769 libxl__domain_create_state *dcs = CONTAINER_OF(crs, *dcs, crs); in colo_setup_checkpoint_devices()
770 libxl__colo_restore_checkpoint_state *crcs = crs->crcs; in colo_setup_checkpoint_devices()
776 STATE_AO_GC(crs->ao); in colo_setup_checkpoint_devices()
778 if (crs->cps.is_userspace_proxy) in colo_setup_checkpoint_devices()
786 cds->domid = crs->domid; in colo_setup_checkpoint_devices()
789 crs->cps.ao = ao; in colo_setup_checkpoint_devices()
790 if (!crs->cps.is_userspace_proxy) { in colo_setup_checkpoint_devices()
791 if (colo_proxy_setup(&crs->cps)) { in colo_setup_checkpoint_devices()
813 libxl__colo_restore_state *crs = cds->concrete_data; in colo_restore_setup_cds_done() local
814 libxl__domain_create_state *dcs = CONTAINER_OF(crs, *dcs, crs); in colo_restore_setup_cds_done()
815 libxl__colo_restore_checkpoint_state *crcs = crs->crcs; in colo_restore_setup_cds_done()
827 if (crs->qdisk_used && !crs->qdisk_setuped) { in colo_restore_setup_cds_done()
828 if (libxl__qmp_start_replication(gc, crs->domid, false)) { in colo_restore_setup_cds_done()
832 crs->qdisk_setuped = true; in colo_restore_setup_cds_done()
846 libxl__domain_create_state *dcs = CONTAINER_OF(crcs->crs, *dcs, crs); in colo_unpause_svm()
850 const uint32_t domid = crcs->crs->domid; in colo_unpause_svm()
896 libxl__colo_restore_state *crs = cds->concrete_data; in colo_restore_commit_cb() local
897 libxl__domain_create_state *dcs = CONTAINER_OF(crs, *dcs, crs); in colo_restore_commit_cb()
898 libxl__colo_restore_checkpoint_state *crcs = crs->crcs; in colo_restore_commit_cb()
903 LOGD(ERROR, crs->domid, "commit fails"); in colo_restore_commit_cb()
921 libxl__domain_create_state *dcs = CONTAINER_OF(crcs->crs, *dcs, crs); in colo_stream_read_done()
927 LOGD(ERROR, crcs->crs->domid, "invalid section: %d", id); in colo_stream_read_done()
956 libxl__colo_restore_checkpoint_state *crcs = dcs->crs.crcs; in libxl__colo_restore_domain_suspend_callback()
974 libxl__colo_restore_state *crs = crcs->crs; in colo_suspend_vm_done() local
975 libxl__domain_create_state *dcs = CONTAINER_OF(crs, *dcs, crs); in colo_suspend_vm_done()
983 LOGD(ERROR, crs->domid, "cannot suspend secondary vm"); in colo_suspend_vm_done()
989 if (libxl__qmp_query_xen_replication_status(gc, crs->domid)) { in colo_suspend_vm_done()
990 LOGD(ERROR, crs->domid, "replication error occurs when secondary vm is running"); in colo_suspend_vm_done()
1007 libxl__colo_restore_state *crs = cds->concrete_data; in colo_restore_postsuspend_cb() local
1008 libxl__domain_create_state *dcs = CONTAINER_OF(crs, *dcs, crs); in colo_restore_postsuspend_cb()
1009 libxl__colo_restore_checkpoint_state *crcs = crs->crcs; in colo_restore_postsuspend_cb()
1015 LOGD(ERROR, crs->domid, "postsuspend fails"); in colo_restore_postsuspend_cb()
1037 libxl__domain_create_state *dcs = CONTAINER_OF(crcs->crs, *dcs, crs); in colo_common_write_stream_done()
1044 LOGD(ERROR, crcs->crs->domid, "sending data fails"); in colo_common_write_stream_done()
1068 libxl__colo_restore_checkpoint_state *crcs = dcs->crs.crcs; in colo_common_read_stream_done()
1075 LOGD(ERROR, crcs->crs->domid, "reading data fails"); in colo_common_read_stream_done()