 81cbfd5088
			
		
	
	
		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 ---
 | |
| 
 |