mirror of
https://github.com/qemu/qemu.git
synced 2024-11-24 11:23:43 +08:00
81cbfd5088
The same information is available via the 'recording' and 'busy' fields. Reviewed-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com> Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
380 lines
7.0 KiB
Plaintext
380 lines
7.0 KiB
Plaintext
--- Preparing image & VM ---
|
|
|
|
|
|
--- Adding preliminary bitmaps A & B ---
|
|
|
|
{"execute": "block-dirty-bitmap-add", "arguments": {"granularity": 65536, "name": "bitmapA", "node": "drive0"}}
|
|
{"return": {}}
|
|
{"execute": "block-dirty-bitmap-add", "arguments": {"granularity": 65536, "name": "bitmapB", "node": "drive0"}}
|
|
{"return": {}}
|
|
|
|
--- Emulating writes ---
|
|
|
|
write -P0x5d 0 64k
|
|
{"return": ""}
|
|
write -P0xd5 1M 64k
|
|
{"return": ""}
|
|
write -P0xdc 32M 64k
|
|
{"return": ""}
|
|
write -P0xcd 0x3ff0000 64k
|
|
{"return": ""}
|
|
{
|
|
"bitmaps": {
|
|
"drive0": [
|
|
{
|
|
"busy": false,
|
|
"count": 262144,
|
|
"granularity": 65536,
|
|
"name": "bitmapB",
|
|
"persistent": false,
|
|
"recording": true
|
|
},
|
|
{
|
|
"busy": false,
|
|
"count": 262144,
|
|
"granularity": 65536,
|
|
"name": "bitmapA",
|
|
"persistent": false,
|
|
"recording": true
|
|
}
|
|
]
|
|
}
|
|
}
|
|
|
|
--- Submitting & Aborting Transaction ---
|
|
|
|
{
|
|
"execute": "transaction",
|
|
"arguments": {
|
|
"actions": [
|
|
{
|
|
"data": {
|
|
"name": "bitmapB",
|
|
"node": "drive0"
|
|
},
|
|
"type": "block-dirty-bitmap-disable"
|
|
},
|
|
{
|
|
"data": {
|
|
"granularity": 65536,
|
|
"name": "bitmapC",
|
|
"node": "drive0"
|
|
},
|
|
"type": "block-dirty-bitmap-add"
|
|
},
|
|
{
|
|
"data": {
|
|
"name": "bitmapA",
|
|
"node": "drive0"
|
|
},
|
|
"type": "block-dirty-bitmap-clear"
|
|
},
|
|
{
|
|
"data": {},
|
|
"type": "abort"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
{
|
|
"error": {
|
|
"class": "GenericError",
|
|
"desc": "Transaction aborted using Abort action"
|
|
}
|
|
}
|
|
{
|
|
"bitmaps": {
|
|
"drive0": [
|
|
{
|
|
"busy": false,
|
|
"count": 262144,
|
|
"granularity": 65536,
|
|
"name": "bitmapB",
|
|
"persistent": false,
|
|
"recording": true
|
|
},
|
|
{
|
|
"busy": false,
|
|
"count": 262144,
|
|
"granularity": 65536,
|
|
"name": "bitmapA",
|
|
"persistent": false,
|
|
"recording": true
|
|
}
|
|
]
|
|
}
|
|
}
|
|
|
|
--- Disabling B & Adding C ---
|
|
|
|
{
|
|
"execute": "transaction",
|
|
"arguments": {
|
|
"actions": [
|
|
{
|
|
"data": {
|
|
"name": "bitmapB",
|
|
"node": "drive0"
|
|
},
|
|
"type": "block-dirty-bitmap-disable"
|
|
},
|
|
{
|
|
"data": {
|
|
"granularity": 65536,
|
|
"name": "bitmapC",
|
|
"node": "drive0"
|
|
},
|
|
"type": "block-dirty-bitmap-add"
|
|
},
|
|
{
|
|
"data": {
|
|
"name": "bitmapC",
|
|
"node": "drive0"
|
|
},
|
|
"type": "block-dirty-bitmap-disable"
|
|
},
|
|
{
|
|
"data": {
|
|
"name": "bitmapC",
|
|
"node": "drive0"
|
|
},
|
|
"type": "block-dirty-bitmap-enable"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
{
|
|
"return": {}
|
|
}
|
|
|
|
--- Emulating further writes ---
|
|
|
|
write -P0xab 0 64k
|
|
{"return": ""}
|
|
write -P0xad 0x00f8000 64k
|
|
{"return": ""}
|
|
write -P0x1d 0x2008000 64k
|
|
{"return": ""}
|
|
write -P0xea 0x3fe0000 64k
|
|
{"return": ""}
|
|
|
|
--- Disabling A & C ---
|
|
|
|
{
|
|
"execute": "transaction",
|
|
"arguments": {
|
|
"actions": [
|
|
{
|
|
"data": {
|
|
"name": "bitmapA",
|
|
"node": "drive0"
|
|
},
|
|
"type": "block-dirty-bitmap-disable"
|
|
},
|
|
{
|
|
"data": {
|
|
"name": "bitmapC",
|
|
"node": "drive0"
|
|
},
|
|
"type": "block-dirty-bitmap-disable"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
{
|
|
"return": {}
|
|
}
|
|
{
|
|
"bitmaps": {
|
|
"drive0": [
|
|
{
|
|
"busy": false,
|
|
"count": 393216,
|
|
"granularity": 65536,
|
|
"name": "bitmapC",
|
|
"persistent": false,
|
|
"recording": false
|
|
},
|
|
{
|
|
"busy": false,
|
|
"count": 262144,
|
|
"granularity": 65536,
|
|
"name": "bitmapB",
|
|
"persistent": false,
|
|
"recording": false
|
|
},
|
|
{
|
|
"busy": false,
|
|
"count": 458752,
|
|
"granularity": 65536,
|
|
"name": "bitmapA",
|
|
"persistent": false,
|
|
"recording": false
|
|
}
|
|
]
|
|
}
|
|
}
|
|
|
|
--- Submitting & Aborting Merge Transaction ---
|
|
|
|
{
|
|
"execute": "transaction",
|
|
"arguments": {
|
|
"actions": [
|
|
{
|
|
"data": {
|
|
"disabled": true,
|
|
"granularity": 65536,
|
|
"name": "bitmapD",
|
|
"node": "drive0"
|
|
},
|
|
"type": "block-dirty-bitmap-add"
|
|
},
|
|
{
|
|
"data": {
|
|
"bitmaps": [
|
|
"bitmapB",
|
|
"bitmapC"
|
|
],
|
|
"node": "drive0",
|
|
"target": "bitmapD"
|
|
},
|
|
"type": "block-dirty-bitmap-merge"
|
|
},
|
|
{
|
|
"data": {},
|
|
"type": "abort"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
{
|
|
"error": {
|
|
"class": "GenericError",
|
|
"desc": "Transaction aborted using Abort action"
|
|
}
|
|
}
|
|
{
|
|
"bitmaps": {
|
|
"drive0": [
|
|
{
|
|
"busy": false,
|
|
"count": 393216,
|
|
"granularity": 65536,
|
|
"name": "bitmapC",
|
|
"persistent": false,
|
|
"recording": false
|
|
},
|
|
{
|
|
"busy": false,
|
|
"count": 262144,
|
|
"granularity": 65536,
|
|
"name": "bitmapB",
|
|
"persistent": false,
|
|
"recording": false
|
|
},
|
|
{
|
|
"busy": false,
|
|
"count": 458752,
|
|
"granularity": 65536,
|
|
"name": "bitmapA",
|
|
"persistent": false,
|
|
"recording": false
|
|
}
|
|
]
|
|
}
|
|
}
|
|
|
|
--- Creating D as a merge of B & C ---
|
|
|
|
{
|
|
"execute": "transaction",
|
|
"arguments": {
|
|
"actions": [
|
|
{
|
|
"data": {
|
|
"disabled": true,
|
|
"granularity": 65536,
|
|
"name": "bitmapD",
|
|
"node": "drive0"
|
|
},
|
|
"type": "block-dirty-bitmap-add"
|
|
},
|
|
{
|
|
"data": {
|
|
"bitmaps": [
|
|
"bitmapB",
|
|
"bitmapC"
|
|
],
|
|
"node": "drive0",
|
|
"target": "bitmapD"
|
|
},
|
|
"type": "block-dirty-bitmap-merge"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
{
|
|
"return": {}
|
|
}
|
|
{
|
|
"bitmaps": {
|
|
"drive0": [
|
|
{
|
|
"busy": false,
|
|
"count": 458752,
|
|
"granularity": 65536,
|
|
"name": "bitmapD",
|
|
"persistent": false,
|
|
"recording": false
|
|
},
|
|
{
|
|
"busy": false,
|
|
"count": 393216,
|
|
"granularity": 65536,
|
|
"name": "bitmapC",
|
|
"persistent": false,
|
|
"recording": false
|
|
},
|
|
{
|
|
"busy": false,
|
|
"count": 262144,
|
|
"granularity": 65536,
|
|
"name": "bitmapB",
|
|
"persistent": false,
|
|
"recording": false
|
|
},
|
|
{
|
|
"busy": false,
|
|
"count": 458752,
|
|
"granularity": 65536,
|
|
"name": "bitmapA",
|
|
"persistent": false,
|
|
"recording": false
|
|
}
|
|
]
|
|
}
|
|
}
|
|
|
|
--- Removing bitmaps A, B, C, and D ---
|
|
|
|
{"execute": "block-dirty-bitmap-remove", "arguments": {"name": "bitmapA", "node": "drive0"}}
|
|
{"return": {}}
|
|
{"execute": "block-dirty-bitmap-remove", "arguments": {"name": "bitmapB", "node": "drive0"}}
|
|
{"return": {}}
|
|
{"execute": "block-dirty-bitmap-remove", "arguments": {"name": "bitmapC", "node": "drive0"}}
|
|
{"return": {}}
|
|
{"execute": "block-dirty-bitmap-remove", "arguments": {"name": "bitmapD", "node": "drive0"}}
|
|
{"return": {}}
|
|
|
|
--- Final Query ---
|
|
|
|
{
|
|
"bitmaps": {
|
|
"drive0": []
|
|
}
|
|
}
|
|
|
|
--- Done ---
|
|
|