mirror of
https://gitlab.com/qemu-project/qemu
synced 2024-09-06 01:43:39 +00:00
![John Snow](/assets/img/avatar_default.png)
Test that we can actually resize qcow2 images with persistent bitmaps correctly. Throw some other goofy stuff at the test while we're at it, like adding bitmaps of different granularities and at different times. Signed-off-by: John Snow <jsnow@redhat.com> Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com> Tested-by: Eric Blake <eblake@redhat.com> Message-id: 20190311185147.52309-5-vsementsov@virtuozzo.com [vsmentsov: drop \n from the end of test output, test output changed a bit: some bitmaps goes in other order int the output] Signed-off-by: John Snow <jsnow@redhat.com>
296 lines
7 KiB
Plaintext
296 lines
7 KiB
Plaintext
--- Preparing image & VM ---
|
|
|
|
--- 1st Boot (Establish Baseline Image) ---
|
|
|
|
|
|
--- Adding bitmaps Small, Medium, Large, and Transient ---
|
|
|
|
{"execute": "block-dirty-bitmap-add", "arguments": {"granularity": 32768, "name": "Small", "node": "drive0", "persistent": true}}
|
|
{"return": {}}
|
|
{"execute": "block-dirty-bitmap-add", "arguments": {"name": "Medium", "node": "drive0", "persistent": true}}
|
|
{"return": {}}
|
|
{"execute": "block-dirty-bitmap-add", "arguments": {"granularity": 131072, "name": "Large", "node": "drive0", "persistent": true}}
|
|
{"return": {}}
|
|
{"execute": "block-dirty-bitmap-add", "arguments": {"name": "Transient", "node": "drive0", "persistent": false}}
|
|
{"return": {}}
|
|
--- Forcing flush of bitmaps to disk ---
|
|
|
|
{
|
|
"bitmaps": {
|
|
"drive0": [
|
|
{
|
|
"busy": false,
|
|
"count": 0,
|
|
"granularity": 65536,
|
|
"name": "Transient",
|
|
"persistent": false,
|
|
"recording": true,
|
|
"status": "active"
|
|
},
|
|
{
|
|
"busy": false,
|
|
"count": 0,
|
|
"granularity": 131072,
|
|
"name": "Large",
|
|
"persistent": true,
|
|
"recording": true,
|
|
"status": "active"
|
|
},
|
|
{
|
|
"busy": false,
|
|
"count": 0,
|
|
"granularity": 65536,
|
|
"name": "Medium",
|
|
"persistent": true,
|
|
"recording": true,
|
|
"status": "active"
|
|
},
|
|
{
|
|
"busy": false,
|
|
"count": 0,
|
|
"granularity": 32768,
|
|
"name": "Small",
|
|
"persistent": true,
|
|
"recording": true,
|
|
"status": "active"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
--- 2nd Boot (Grow Image) ---
|
|
|
|
{
|
|
"bitmaps": {
|
|
"drive0": [
|
|
{
|
|
"busy": false,
|
|
"count": 0,
|
|
"granularity": 32768,
|
|
"name": "Small",
|
|
"persistent": true,
|
|
"recording": true,
|
|
"status": "active"
|
|
},
|
|
{
|
|
"busy": false,
|
|
"count": 0,
|
|
"granularity": 65536,
|
|
"name": "Medium",
|
|
"persistent": true,
|
|
"recording": true,
|
|
"status": "active"
|
|
},
|
|
{
|
|
"busy": false,
|
|
"count": 0,
|
|
"granularity": 131072,
|
|
"name": "Large",
|
|
"persistent": true,
|
|
"recording": true,
|
|
"status": "active"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
--- Adding new bitmap, growing image, and adding 2nd new bitmap ---
|
|
{"execute": "block-dirty-bitmap-add", "arguments": {"name": "New", "node": "drive0", "persistent": true}}
|
|
{"return": {}}
|
|
{"execute": "human-monitor-command", "arguments": {"command-line": "block_resize drive0 70G"}}
|
|
{"return": ""}
|
|
{"execute": "block-dirty-bitmap-add", "arguments": {"name": "Newtwo", "node": "drive0", "persistent": true}}
|
|
{"return": {}}
|
|
{
|
|
"bitmaps": {
|
|
"drive0": [
|
|
{
|
|
"busy": false,
|
|
"count": 0,
|
|
"granularity": 65536,
|
|
"name": "Newtwo",
|
|
"persistent": true,
|
|
"recording": true,
|
|
"status": "active"
|
|
},
|
|
{
|
|
"busy": false,
|
|
"count": 0,
|
|
"granularity": 65536,
|
|
"name": "New",
|
|
"persistent": true,
|
|
"recording": true,
|
|
"status": "active"
|
|
},
|
|
{
|
|
"busy": false,
|
|
"count": 0,
|
|
"granularity": 32768,
|
|
"name": "Small",
|
|
"persistent": true,
|
|
"recording": true,
|
|
"status": "active"
|
|
},
|
|
{
|
|
"busy": false,
|
|
"count": 0,
|
|
"granularity": 65536,
|
|
"name": "Medium",
|
|
"persistent": true,
|
|
"recording": true,
|
|
"status": "active"
|
|
},
|
|
{
|
|
"busy": false,
|
|
"count": 0,
|
|
"granularity": 131072,
|
|
"name": "Large",
|
|
"persistent": true,
|
|
"recording": true,
|
|
"status": "active"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
--- Forcing flush of bitmaps to disk ---
|
|
|
|
--- 3rd Boot (Shrink Image) ---
|
|
|
|
{
|
|
"bitmaps": {
|
|
"drive0": [
|
|
{
|
|
"busy": false,
|
|
"count": 0,
|
|
"granularity": 65536,
|
|
"name": "New",
|
|
"persistent": true,
|
|
"recording": true,
|
|
"status": "active"
|
|
},
|
|
{
|
|
"busy": false,
|
|
"count": 0,
|
|
"granularity": 65536,
|
|
"name": "Newtwo",
|
|
"persistent": true,
|
|
"recording": true,
|
|
"status": "active"
|
|
},
|
|
{
|
|
"busy": false,
|
|
"count": 0,
|
|
"granularity": 32768,
|
|
"name": "Small",
|
|
"persistent": true,
|
|
"recording": true,
|
|
"status": "active"
|
|
},
|
|
{
|
|
"busy": false,
|
|
"count": 0,
|
|
"granularity": 65536,
|
|
"name": "Medium",
|
|
"persistent": true,
|
|
"recording": true,
|
|
"status": "active"
|
|
},
|
|
{
|
|
"busy": false,
|
|
"count": 0,
|
|
"granularity": 131072,
|
|
"name": "Large",
|
|
"persistent": true,
|
|
"recording": true,
|
|
"status": "active"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
--- Adding "NewB" bitmap, removing "New" bitmap ---
|
|
{"execute": "block-dirty-bitmap-add", "arguments": {"name": "NewB", "node": "drive0", "persistent": true}}
|
|
{"return": {}}
|
|
{"execute": "block-dirty-bitmap-remove", "arguments": {"name": "New", "node": "drive0"}}
|
|
{"return": {}}
|
|
--- Truncating image ---
|
|
|
|
{"execute": "human-monitor-command", "arguments": {"command-line": "block_resize drive0 50G"}}
|
|
{"return": ""}
|
|
--- Adding "NewC" bitmap, removing "NewTwo" bitmap ---
|
|
{"execute": "block-dirty-bitmap-add", "arguments": {"name": "NewC", "node": "drive0", "persistent": true}}
|
|
{"return": {}}
|
|
{"execute": "block-dirty-bitmap-remove", "arguments": {"name": "Newtwo", "node": "drive0"}}
|
|
{"return": {}}
|
|
--- Forcing flush of bitmaps to disk ---
|
|
|
|
--- 4th Boot (Verification and Cleanup) ---
|
|
|
|
{
|
|
"bitmaps": {
|
|
"drive0": [
|
|
{
|
|
"busy": false,
|
|
"count": 0,
|
|
"granularity": 65536,
|
|
"name": "NewB",
|
|
"persistent": true,
|
|
"recording": true,
|
|
"status": "active"
|
|
},
|
|
{
|
|
"busy": false,
|
|
"count": 0,
|
|
"granularity": 65536,
|
|
"name": "NewC",
|
|
"persistent": true,
|
|
"recording": true,
|
|
"status": "active"
|
|
},
|
|
{
|
|
"busy": false,
|
|
"count": 0,
|
|
"granularity": 32768,
|
|
"name": "Small",
|
|
"persistent": true,
|
|
"recording": true,
|
|
"status": "active"
|
|
},
|
|
{
|
|
"busy": false,
|
|
"count": 0,
|
|
"granularity": 65536,
|
|
"name": "Medium",
|
|
"persistent": true,
|
|
"recording": true,
|
|
"status": "active"
|
|
},
|
|
{
|
|
"busy": false,
|
|
"count": 0,
|
|
"granularity": 131072,
|
|
"name": "Large",
|
|
"persistent": true,
|
|
"recording": true,
|
|
"status": "active"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
--- Removing all Bitmaps ---
|
|
|
|
{"execute": "block-dirty-bitmap-remove", "arguments": {"name": "Small", "node": "drive0"}}
|
|
{"return": {}}
|
|
{"execute": "block-dirty-bitmap-remove", "arguments": {"name": "Medium", "node": "drive0"}}
|
|
{"return": {}}
|
|
{"execute": "block-dirty-bitmap-remove", "arguments": {"name": "Large", "node": "drive0"}}
|
|
{"return": {}}
|
|
{"execute": "block-dirty-bitmap-remove", "arguments": {"name": "NewB", "node": "drive0"}}
|
|
{"return": {}}
|
|
{"execute": "block-dirty-bitmap-remove", "arguments": {"name": "NewC", "node": "drive0"}}
|
|
{"return": {}}
|
|
{
|
|
"bitmaps": {
|
|
"drive0": []
|
|
}
|
|
}
|
|
|
|
--- Done ---
|