 effd60c878
			
		
	
	
		effd60c878
		
	
	
	
	
		
			
			monitor_qmp_dispatcher_co() runs in the iohandler AioContext that is not polled during nested event loops. The coroutine currently reschedules itself in the main loop's qemu_aio_context AioContext, which is polled during nested event loops. One known problem is that QMP device-add calls drain_call_rcu(), which temporarily drops the BQL, leading to all sorts of havoc like other vCPU threads re-entering device emulation code while another vCPU thread is waiting in device emulation code with aio_poll(). Paolo Bonzini suggested running non-coroutine QMP handlers in the iohandler AioContext. This avoids trouble with nested event loops. His original idea was to move coroutine rescheduling to monitor_qmp_dispatch(), but I resorted to moving it to qmp_dispatch() because we don't know if the QMP handler needs to run in coroutine context in monitor_qmp_dispatch(). monitor_qmp_dispatch() would have been nicer since it's associated with the monitor implementation and not as general as qmp_dispatch(), which is also used by qemu-ga. A number of qemu-iotests need updated .out files because the order of QMP events vs QMP responses has changed. Solves Issue #1933. Cc: qemu-stable@nongnu.org Fixes: 7bed89958bfbf40df9ca681cefbdca63abdde39d ("device_core: use drain_call_rcu in in qmp_device_add") Buglink: https://bugzilla.redhat.com/show_bug.cgi?id=2215192 Buglink: https://bugzilla.redhat.com/show_bug.cgi?id=2214985 Buglink: https://issues.redhat.com/browse/RHEL-17369 Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com> Message-ID: <20240118144823.1497953-4-stefanha@redhat.com> Reviewed-by: Kevin Wolf <kwolf@redhat.com> Tested-by: Fiona Ebner <f.ebner@proxmox.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
		
			
				
	
	
		
			440 lines
		
	
	
		
			18 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			440 lines
		
	
	
		
			18 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| QA output created by 060
 | |
| 
 | |
| === Testing L2 reference into L1 ===
 | |
| 
 | |
| Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864
 | |
| ERROR cluster 3 refcount=1 reference=3
 | |
| 
 | |
| 1 errors were found on the image.
 | |
| Data may be corrupted, or further writes to the image may corrupt it.
 | |
| incompatible_features     []
 | |
| qcow2: Marking image as corrupt: Preventing invalid write on metadata (overlaps with active L1 table); further corruption events will be suppressed
 | |
| write failed: Input/output error
 | |
| incompatible_features     [1]
 | |
| image: TEST_DIR/t.IMGFMT
 | |
| file format: IMGFMT
 | |
| virtual size: 64 MiB (67108864 bytes)
 | |
| cluster_size: 65536
 | |
| Format specific information:
 | |
|     compat: 1.1
 | |
|     compression type: COMPRESSION_TYPE
 | |
|     lazy refcounts: false
 | |
|     refcount bits: 16
 | |
|     corrupt: true
 | |
|     extended l2: false
 | |
| qemu-io: can't open device TEST_DIR/t.IMGFMT: IMGFMT: Image is corrupt; cannot be opened read/write
 | |
| no file open, try 'help open'
 | |
| read 512/512 bytes at offset 0
 | |
| 512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
 | |
| 
 | |
| === Testing cluster data reference into refcount block ===
 | |
| 
 | |
| Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864
 | |
| ERROR refcount block 0 refcount=2
 | |
| ERROR cluster 2 refcount=1 reference=2
 | |
| 
 | |
| 2 errors were found on the image.
 | |
| Data may be corrupted, or further writes to the image may corrupt it.
 | |
| incompatible_features     []
 | |
| qcow2: Marking image as corrupt: Preventing invalid write on metadata (overlaps with refcount block); further corruption events will be suppressed
 | |
| write failed: Input/output error
 | |
| incompatible_features     [1]
 | |
| ERROR refcount block 0 refcount=2
 | |
| ERROR cluster 2 refcount=1 reference=2
 | |
| Rebuilding refcount structure
 | |
| Repairing cluster 1 refcount=1 reference=0
 | |
| Repairing cluster 2 refcount=2 reference=1
 | |
| The following inconsistencies were found and repaired:
 | |
| 
 | |
|     0 leaked clusters
 | |
|     2 corruptions
 | |
| 
 | |
| Double checking the fixed image now...
 | |
| No errors were found on the image.
 | |
| incompatible_features     []
 | |
| wrote 512/512 bytes at offset 0
 | |
| 512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
 | |
| incompatible_features     []
 | |
| 
 | |
| === Testing cluster data reference into inactive L2 table ===
 | |
| 
 | |
| Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864
 | |
| wrote 512/512 bytes at offset 0
 | |
| 512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
 | |
| wrote 512/512 bytes at offset 0
 | |
| 512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
 | |
| ERROR cluster 4 refcount=1 reference=2
 | |
| Leaked cluster 9 refcount=1 reference=0
 | |
| 
 | |
| 1 errors were found on the image.
 | |
| Data may be corrupted, or further writes to the image may corrupt it.
 | |
| 
 | |
| 1 leaked clusters were found on the image.
 | |
| This means waste of disk space, but no harm to data.
 | |
| incompatible_features     []
 | |
| qcow2: Marking image as corrupt: Preventing invalid write on metadata (overlaps with inactive L2 table); further corruption events will be suppressed
 | |
| write failed: Input/output error
 | |
| incompatible_features     [1]
 | |
| ERROR cluster 4 refcount=1 reference=2
 | |
| Leaked cluster 9 refcount=1 reference=0
 | |
| Repairing cluster 4 refcount=1 reference=2
 | |
| Repairing cluster 9 refcount=1 reference=0
 | |
| Repairing OFLAG_COPIED data cluster: l2_entry=8000000000040000 refcount=2
 | |
| The following inconsistencies were found and repaired:
 | |
| 
 | |
|     1 leaked clusters
 | |
|     2 corruptions
 | |
| 
 | |
| Double checking the fixed image now...
 | |
| No errors were found on the image.
 | |
| incompatible_features     []
 | |
| wrote 512/512 bytes at offset 0
 | |
| 512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
 | |
| incompatible_features     []
 | |
| read 512/512 bytes at offset 0
 | |
| 512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
 | |
| No errors were found on the image.
 | |
| read 512/512 bytes at offset 0
 | |
| 512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
 | |
| 
 | |
| === Testing overlap while COW is in flight ===
 | |
| 
 | |
| Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=1073741824
 | |
| wrote 65536/65536 bytes at offset 0
 | |
| 64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
 | |
| Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=1073741824 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
 | |
| wrote 65536/65536 bytes at offset 0
 | |
| 64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
 | |
| wrote 65536/65536 bytes at offset 536870912
 | |
| 64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
 | |
| qcow2: Marking image as corrupt: Preventing invalid write on metadata (overlaps with active L2 table); further corruption events will be suppressed
 | |
| blkdebug: Suspended request '0'
 | |
| write failed: Input/output error
 | |
| blkdebug: Resuming request '0'
 | |
| aio_write failed: No medium found
 | |
| 
 | |
| === Testing unallocated image header ===
 | |
| 
 | |
| Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864
 | |
| wrote 65536/65536 bytes at offset 0
 | |
| 64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
 | |
| qcow2: Marking image as corrupt: Preventing invalid write on metadata (overlaps with qcow2_header); further corruption events will be suppressed
 | |
| write failed: Input/output error
 | |
| 
 | |
| === Testing unaligned L1 entry ===
 | |
| 
 | |
| Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864
 | |
| wrote 65536/65536 bytes at offset 0
 | |
| 64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
 | |
| qcow2: Marking image as corrupt: L2 table offset 0x42a00 unaligned (L1 index: 0); further corruption events will be suppressed
 | |
| read failed: Input/output error
 | |
| Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864
 | |
| wrote 65536/65536 bytes at offset 0
 | |
| 64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
 | |
| qcow2: Marking image as corrupt: L2 table offset 0x42a00 unaligned (L1 index: 0); further corruption events will be suppressed
 | |
| qemu-img: Failed to turn zero into data clusters: Input/output error
 | |
| 
 | |
| === Testing unaligned L2 entry ===
 | |
| 
 | |
| Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864
 | |
| wrote 65536/65536 bytes at offset 0
 | |
| 64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
 | |
| qcow2: Marking image as corrupt: Cluster allocation offset 0x52a00 unaligned (L2 offset: 0x40000, L2 index: 0); further corruption events will be suppressed
 | |
| read failed: Input/output error
 | |
| 
 | |
| === Testing unaligned pre-allocated zero cluster ===
 | |
| 
 | |
| Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864
 | |
| wrote 65536/65536 bytes at offset 0
 | |
| 64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
 | |
| qcow2: Marking image as corrupt: Cluster allocation offset 0x52a00 unaligned (L2 offset: 0x40000, L2 index: 0); further corruption events will be suppressed
 | |
| qemu-img: Failed to turn zero into data clusters: Input/output error
 | |
| 
 | |
| === Testing unaligned reftable entry ===
 | |
| 
 | |
| Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864
 | |
| qcow2: Marking image as corrupt: Refblock offset 0x22a00 unaligned (reftable index: 0); further corruption events will be suppressed
 | |
| write failed: Input/output error
 | |
| 
 | |
| === Testing non-fatal corruption on freeing ===
 | |
| 
 | |
| Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864
 | |
| wrote 65536/65536 bytes at offset 0
 | |
| 64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
 | |
| qcow2: Image is corrupt: Cannot free unaligned cluster 0x52a00; further non-fatal corruption events will be suppressed
 | |
| discard 65536/65536 bytes at offset 0
 | |
| 64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
 | |
| 
 | |
| === Testing read-only corruption report ===
 | |
| 
 | |
| Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864
 | |
| wrote 65536/65536 bytes at offset 0
 | |
| 64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
 | |
| qcow2: Image is corrupt: Cluster allocation offset 0x52a00 unaligned (L2 offset: 0x40000, L2 index: 0); further non-fatal corruption events will be suppressed
 | |
| read failed: Input/output error
 | |
| read failed: Input/output error
 | |
| 
 | |
| === Testing non-fatal and then fatal corruption report ===
 | |
| 
 | |
| Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864
 | |
| wrote 131072/131072 bytes at offset 0
 | |
| 128 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
 | |
| qcow2: Image is corrupt: Cannot free unaligned cluster 0x52a00; further non-fatal corruption events will be suppressed
 | |
| qcow2: Marking image as corrupt: Cluster allocation offset 0x62a00 unaligned (L2 offset: 0x40000, L2 index: 0x1); further corruption events will be suppressed
 | |
| discard 65536/65536 bytes at offset 0
 | |
| 64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
 | |
| read failed: Input/output error
 | |
| 
 | |
| === Testing empty refcount table ===
 | |
| 
 | |
| Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864
 | |
| qcow2: Marking image as corrupt: Preventing invalid write on metadata (overlaps with refcount table); further corruption events will be suppressed
 | |
| write failed: Input/output error
 | |
| ERROR cluster 0 refcount=0 reference=1
 | |
| ERROR cluster 1 refcount=0 reference=1
 | |
| ERROR cluster 3 refcount=0 reference=1
 | |
| Rebuilding refcount structure
 | |
| Repairing cluster 1 refcount=1 reference=0
 | |
| The following inconsistencies were found and repaired:
 | |
| 
 | |
|     0 leaked clusters
 | |
|     3 corruptions
 | |
| 
 | |
| Double checking the fixed image now...
 | |
| No errors were found on the image.
 | |
| 
 | |
| === Testing empty refcount table with valid L1 and L2 tables ===
 | |
| 
 | |
| Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864
 | |
| wrote 65536/65536 bytes at offset 0
 | |
| 64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
 | |
| qcow2: Marking image as corrupt: Preventing invalid allocation of refcount block at offset 0; further corruption events will be suppressed
 | |
| write failed: Input/output error
 | |
| ERROR cluster 0 refcount=0 reference=1
 | |
| ERROR cluster 1 refcount=0 reference=1
 | |
| ERROR cluster 3 refcount=0 reference=1
 | |
| ERROR cluster 4 refcount=0 reference=1
 | |
| ERROR cluster 5 refcount=0 reference=1
 | |
| Rebuilding refcount structure
 | |
| Repairing cluster 1 refcount=1 reference=0
 | |
| The following inconsistencies were found and repaired:
 | |
| 
 | |
|     0 leaked clusters
 | |
|     5 corruptions
 | |
| 
 | |
| Double checking the fixed image now...
 | |
| No errors were found on the image.
 | |
| 
 | |
| === Testing empty refcount block ===
 | |
| 
 | |
| Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864
 | |
| qcow2: Marking image as corrupt: Preventing invalid allocation of L2 table at offset 0; further corruption events will be suppressed
 | |
| write failed: Input/output error
 | |
| ERROR cluster 0 refcount=0 reference=1
 | |
| ERROR cluster 1 refcount=0 reference=1
 | |
| ERROR cluster 2 refcount=0 reference=1
 | |
| ERROR cluster 3 refcount=0 reference=1
 | |
| Rebuilding refcount structure
 | |
| Repairing cluster 1 refcount=1 reference=0
 | |
| Repairing cluster 2 refcount=1 reference=0
 | |
| The following inconsistencies were found and repaired:
 | |
| 
 | |
|     0 leaked clusters
 | |
|     4 corruptions
 | |
| 
 | |
| Double checking the fixed image now...
 | |
| No errors were found on the image.
 | |
| 
 | |
| === Testing empty refcount block with compressed write ===
 | |
| 
 | |
| Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864
 | |
| wrote 65536/65536 bytes at offset 65536
 | |
| 64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
 | |
| qcow2: Marking image as corrupt: Preventing invalid allocation of compressed cluster at offset 0; further corruption events will be suppressed
 | |
| write failed: Input/output error
 | |
| ERROR cluster 0 refcount=0 reference=1
 | |
| ERROR cluster 1 refcount=0 reference=1
 | |
| ERROR cluster 2 refcount=0 reference=1
 | |
| ERROR cluster 3 refcount=0 reference=1
 | |
| Rebuilding refcount structure
 | |
| Repairing cluster 1 refcount=1 reference=0
 | |
| Repairing cluster 2 refcount=1 reference=0
 | |
| The following inconsistencies were found and repaired:
 | |
| 
 | |
|     0 leaked clusters
 | |
|     4 corruptions
 | |
| 
 | |
| Double checking the fixed image now...
 | |
| No errors were found on the image.
 | |
| 
 | |
| === Testing zero refcount table size ===
 | |
| 
 | |
| Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864
 | |
| qemu-io: can't open device TEST_DIR/t.IMGFMT: Image does not contain a reference count table
 | |
| ERROR cluster 0 refcount=0 reference=1
 | |
| ERROR cluster 3 refcount=0 reference=1
 | |
| Rebuilding refcount structure
 | |
| The following inconsistencies were found and repaired:
 | |
| 
 | |
|     0 leaked clusters
 | |
|     2 corruptions
 | |
| 
 | |
| Double checking the fixed image now...
 | |
| No errors were found on the image.
 | |
| 
 | |
| === Testing incorrect refcount table offset ===
 | |
| 
 | |
| Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864
 | |
| qcow2: Marking image as corrupt: Preventing invalid allocation of L2 table at offset 0; further corruption events will be suppressed
 | |
| write failed: Input/output error
 | |
| 
 | |
| === Testing dirty corrupt image ===
 | |
| 
 | |
| Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864
 | |
| ERROR refcount block 0 is not cluster aligned; refcount table entry corrupted
 | |
| IMGFMT: Marking image as corrupt: Refblock offset 0xffff2a00 unaligned (reftable index: 0); further corruption events will be suppressed
 | |
| Can't get refcount for cluster 0: Input/output error
 | |
| Can't get refcount for cluster 1: Input/output error
 | |
| Can't get refcount for cluster 2: Input/output error
 | |
| Can't get refcount for cluster 3: Input/output error
 | |
| Rebuilding refcount structure
 | |
| Repairing cluster 1 refcount=1 reference=0
 | |
| qemu-io: can't open device TEST_DIR/t.IMGFMT: Could not repair dirty image: Input/output error
 | |
| --- Repairing ---
 | |
| Leaked cluster 1 refcount=1 reference=0
 | |
| Repairing cluster 1 refcount=1 reference=0
 | |
| The following inconsistencies were found and repaired:
 | |
| 
 | |
|     1 leaked clusters
 | |
|     0 corruptions
 | |
| 
 | |
| Double checking the fixed image now...
 | |
| No errors were found on the image.
 | |
| 
 | |
| === Writing to an unaligned preallocated zero cluster ===
 | |
| 
 | |
| Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864
 | |
| wrote 65536/65536 bytes at offset 0
 | |
| 64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
 | |
| discard 65536/65536 bytes at offset 0
 | |
| 64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
 | |
| qcow2: Marking image as corrupt: Preallocated zero cluster offset 0x2a00 unaligned (guest offset: 0); further corruption events will be suppressed
 | |
| write failed: Input/output error
 | |
| --- Repairing ---
 | |
| Repairing offset=2a00: Preallocated cluster is not properly aligned; L2 entry corrupted.
 | |
| The following inconsistencies were found and repaired:
 | |
| 
 | |
|     0 leaked clusters
 | |
|     1 corruptions
 | |
| 
 | |
| Double checking the fixed image now...
 | |
| No errors were found on the image.
 | |
| 
 | |
| === Discarding with an unaligned refblock ===
 | |
| 
 | |
| Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864
 | |
| wrote 131072/131072 bytes at offset 0
 | |
| 128 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
 | |
| qcow2: Marking image as corrupt: Refblock offset 0x2a00 unaligned (reftable index: 0); further corruption events will be suppressed
 | |
| qcow2_free_clusters failed: Input/output error
 | |
| discard failed: No medium found
 | |
| --- Repairing ---
 | |
| ERROR refcount block 0 is not cluster aligned; refcount table entry corrupted
 | |
| qcow2: Marking image as corrupt: Refblock offset 0x2a00 unaligned (reftable index: 0); further corruption events will be suppressed
 | |
| Can't get refcount for cluster 0: Input/output error
 | |
| Can't get refcount for cluster 1: Input/output error
 | |
| Can't get refcount for cluster 2: Input/output error
 | |
| Can't get refcount for cluster 3: Input/output error
 | |
| Can't get refcount for cluster 4: Input/output error
 | |
| Can't get refcount for cluster 5: Input/output error
 | |
| Can't get refcount for cluster 6: Input/output error
 | |
| Rebuilding refcount structure
 | |
| Repairing cluster 1 refcount=1 reference=0
 | |
| qemu-img: Check failed: No medium found
 | |
| Leaked cluster 1 refcount=1 reference=0
 | |
| Repairing cluster 1 refcount=1 reference=0
 | |
| The following inconsistencies were found and repaired:
 | |
| 
 | |
|     1 leaked clusters
 | |
|     0 corruptions
 | |
| 
 | |
| Double checking the fixed image now...
 | |
| No errors were found on the image.
 | |
| 
 | |
| === Discarding an out-of-bounds refblock ===
 | |
| 
 | |
| Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864
 | |
| qcow2: Marking image as corrupt: Refblock at 0xffffff00000000 is not covered by the refcount structures; further corruption events will be suppressed
 | |
| qemu-img: Failed to discard unused refblocks: Input/output error
 | |
| --- Checking and retrying ---
 | |
| virtual size: 64 MiB (67108864 bytes)
 | |
| No errors were found on the image.
 | |
| Image resized.
 | |
| virtual size: 32 MiB (33554432 bytes)
 | |
| 
 | |
| === Discarding a non-covered in-bounds refblock ===
 | |
| 
 | |
| Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864
 | |
| qcow2: Marking image as corrupt: Refblock at 0x1000000000 is not covered by the refcount structures; further corruption events will be suppressed
 | |
| qemu-img: Failed to discard unused refblocks: Input/output error
 | |
| --- Checking and retrying ---
 | |
| virtual size: 64 MiB (67108864 bytes)
 | |
| No errors were found on the image.
 | |
| Image resized.
 | |
| virtual size: 32 MiB (33554432 bytes)
 | |
| 
 | |
| === Discarding a refblock covered by an unaligned refblock ===
 | |
| 
 | |
| Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864
 | |
| qcow2: Marking image as corrupt: Cannot get entry from refcount block cache: Offset 0x200 is unaligned; further corruption events will be suppressed
 | |
| qemu-img: Failed to discard unused refblocks: Input/output error
 | |
| --- Repairing ---
 | |
| Repairing refcount block 1 is outside image
 | |
| ERROR refcount block 2 is not cluster aligned; refcount table entry corrupted
 | |
| qcow2: Marking image as corrupt: Refblock offset 0x200 unaligned (reftable index: 0x2); further corruption events will be suppressed
 | |
| Can't get refcount for cluster 1048576: Input/output error
 | |
| Rebuilding refcount structure
 | |
| Repairing cluster 1 refcount=1 reference=0
 | |
| Repairing cluster 2 refcount=1 reference=0
 | |
| Repairing cluster 1048576 refcount=1 reference=0
 | |
| qemu-img: Check failed: No medium found
 | |
| Leaked cluster 1 refcount=1 reference=0
 | |
| Leaked cluster 2 refcount=1 reference=0
 | |
| Leaked cluster 1048576 refcount=1 reference=0
 | |
| Repairing cluster 1 refcount=1 reference=0
 | |
| Repairing cluster 2 refcount=1 reference=0
 | |
| Repairing cluster 1048576 refcount=1 reference=0
 | |
| The following inconsistencies were found and repaired:
 | |
| 
 | |
|     3 leaked clusters
 | |
|     0 corruptions
 | |
| 
 | |
| Double checking the fixed image now...
 | |
| No errors were found on the image.
 | |
| 
 | |
| === Testing the QEMU shutdown with a corrupted image ===
 | |
| 
 | |
| Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864
 | |
| qcow2: Marking image as corrupt: Preventing invalid write on metadata (overlaps with refcount table); further corruption events will be suppressed
 | |
| QMP_VERSION
 | |
| {"return": {}}
 | |
| {"timestamp": {"seconds":  TIMESTAMP, "microseconds":  TIMESTAMP}, "event": "BLOCK_IMAGE_CORRUPTED", "data": {"device": "none0", "msg": "Preventing invalid write on metadata (overlaps with refcount table)", "offset": 65536, "node-name": "drive", "fatal": true, "size": 65536}}
 | |
| write failed: Input/output error
 | |
| {"return": ""}
 | |
| {"timestamp": {"seconds":  TIMESTAMP, "microseconds":  TIMESTAMP}, "event": "SHUTDOWN", "data": {"guest": false, "reason": "host-qmp-quit"}}
 | |
| {"return": {}}
 | |
| 
 | |
| === Testing incoming inactive corrupted image ===
 | |
| 
 | |
| Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864
 | |
| QMP_VERSION
 | |
| {"return": {}}
 | |
| qcow2: Image is corrupt: L2 table offset 0x2a2a2a00 unaligned (L1 index: 0); further non-fatal corruption events will be suppressed
 | |
| {"timestamp": {"seconds":  TIMESTAMP, "microseconds":  TIMESTAMP}, "event": "BLOCK_IMAGE_CORRUPTED", "data": {"device": "", "msg": "L2 table offset 0x2a2a2a00 unaligned (L1 index: 0)", "node-name": "drive", "fatal": false}}
 | |
| {"return": ""}
 | |
| {"timestamp": {"seconds":  TIMESTAMP, "microseconds":  TIMESTAMP}, "event": "SHUTDOWN", "data": {"guest": false, "reason": "host-qmp-quit"}}
 | |
| {"return": {}}
 | |
| 
 | |
|     corrupt: false
 | |
| *** done
 |