hmp_savevm->save_snapshot->if (migration_is_blocked())判断是否不能迁移,有些设备不支持迁移或者全局链表migration_blockers里面有内容,则直接返回
->if (!replay_can_snapshot())也直接返回
->if (!bdrv_all_can_snapshot())也直接返回
-> if (name) { bdrv_all_delete_snapshot }删除块设备的快照。
->...
->global_state_store()将全局变量current_run_state转为字符串保存到global_state.runstate中
->vm_stop(RUN_STATE_SAVE_VM)停止虚拟机运行,并将状态设置为RUN_STATE_SAVE_VM
->...
->if (!nostate) { f = qemu_fopen_bdrv(bs, 1); ret = qemu_savevm_state(f, errp) }
->bdrv_all_create_snapshot()対所有的bdrv调用bdrv_snapshot_create()
->...
->if (saved_vm_running) {vm_start()}
qemu_savevm_stat