| 1 | === Launch VM === |
| 2 | Enabling migration QMP events on VM... |
| 3 | {"return": {}} |
| 4 | |
| 5 | === Migrate to file === |
| 6 | {"execute": "migrate", "arguments": {"uri": "exec:cat > /dev/null"}} |
| 7 | {"return": {}} |
| 8 | {"data": {"status": "setup"}, "event": "MIGRATION", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}} |
| 9 | {"data": {"status": "active"}, "event": "MIGRATION", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}} |
| 10 | {"data": {"status": "device"}, "event": "MIGRATION", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}} |
| 11 | {"data": {"status": "completed"}, "event": "MIGRATION", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}} |
| 12 | |
| 13 | VM is now stopped: |
| 14 | completed |
| 15 | {"execute": "query-status", "arguments": {}} |
| 16 | {"return": {"running": false, "status": "postmigrate"}} |
| 17 | |
| 18 | === Create a snapshot of the disk image === |
| 19 | {"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "file", "filename": "TEST_DIR/PID-top", "size": 0}}} |
| 20 | {"return": {}} |
| 21 | {"execute": "job-dismiss", "arguments": {"id": "job0"}} |
| 22 | {"return": {}} |
| 23 | |
| 24 | {"execute": "blockdev-add", "arguments": {"driver": "file", "filename": "TEST_DIR/PID-top", "node-name": "top-file"}} |
| 25 | {"return": {}} |
| 26 | {"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "qcow2", "file": "top-file", "size": 1048576}}} |
| 27 | {"return": {}} |
| 28 | {"execute": "job-dismiss", "arguments": {"id": "job0"}} |
| 29 | {"return": {}} |
| 30 | |
| 31 | {"execute": "blockdev-add", "arguments": {"driver": "qcow2", "file": "top-file", "node-name": "top-fmt"}} |
| 32 | {"return": {}} |
| 33 | {"execute": "blockdev-snapshot", "arguments": {"node": "base-fmt", "overlay": "top-fmt"}} |
| 34 | {"return": {}} |
| 35 | |
| 36 | === Resume the VM and simulate a write request === |
| 37 | {"execute": "cont", "arguments": {}} |
| 38 | {"return": {}} |
| 39 | {"return": ""} |
| 40 | |
| 41 | === Commit it to the backing file === |
| 42 | {"execute": "block-commit", "arguments": {"auto-dismiss": false, "device": "top-fmt", "job-id": "job0", "top-node": "top-fmt"}} |
| 43 | {"return": {}} |
| 44 | {"execute": "job-complete", "arguments": {"id": "job0"}} |
| 45 | {"return": {}} |
| 46 | {"data": {"device": "job0", "len": 65536, "offset": 65536, "speed": 0, "type": "commit"}, "event": "BLOCK_JOB_READY", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}} |
| 47 | {"data": {"device": "job0", "len": 65536, "offset": 65536, "speed": 0, "type": "commit"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}} |
| 48 | {"execute": "job-dismiss", "arguments": {"id": "job0"}} |
| 49 | {"return": {}} |