mirror of
https://github.com/qemu/qemu.git
synced 2026-07-08 17:46:17 +00:00
Commitb8bfb1478d("qcow2: Fix corruption on discard during write with COW") added a wait_for_dependencies() at the start of qcow2_subcluster_zeroize(). That fixes the inconsistency it set out to fix, but turns the lock-protected pre-check in the caller, qcow2_co_pwrite_zeroes(), into a stale one: the wait yields s->lock, so an in-flight allocating write whose QCowL2Meta is already on s->cluster_allocs (but whose L2 entry is not yet linked) gets to link its entry during the yield. When the zeroize wakes, the cluster is now NORMAL, and with BDRV_REQ_MAY_UNMAP the free path in zero_in_l2_slice() unmaps the just-written cluster, silently dropping the data write's payload. This is reachable with detect-zeroes=unmap (the default for VirtIO disks with discard on in Proxmox VE), under which the block layer auto-promotes all-zero buffers to BDRV_REQ_ZERO_WRITE | BDRV_REQ_MAY_UNMAP. A memory-constrained Debian guest running 'apt full-upgrade' on such a disk reproduces it as random SIGSEGVs: swapped-out code pages come back as zero. Wait for in-flight dependencies before the lock-protected check in qcow2_co_pwrite_zeroes(). If a write linked its L2 entry during the wait, the type check now fails and the block layer falls back to a bounce-buffered zero write that only touches the requested subrange, preserving the racing write's data. Promote wait_for_dependencies() to qcow2_wait_for_dependencies() so qcow2.c can call it. Fixes:b8bfb1478d("qcow2: Fix corruption on discard during write with COW") Cc: qemu-stable@nongnu.org Tested-by: Fiona Ebner <f.ebner@proxmox.com> Reviewed-by: Fiona Ebner <f.ebner@proxmox.com> Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com> Message-ID: <20260522151318.238064-1-t.lamprecht@proxmox.com> [kwolf: Reverted unnecessary change to 'nr' assignment] Reviewed-by: Kevin Wolf <kwolf@redhat.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
290 lines
13 KiB
Plaintext
290 lines
13 KiB
Plaintext
QA output created by 046
|
|
|
|
== creating backing file for COW tests ==
|
|
Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=134217728
|
|
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 65536
|
|
64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
wrote 65536/65536 bytes at offset 131072
|
|
64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
wrote 65536/65536 bytes at offset 196608
|
|
64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
wrote 65536/65536 bytes at offset 262144
|
|
64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
wrote 65536/65536 bytes at offset 327680
|
|
64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
wrote 65536/65536 bytes at offset 393216
|
|
64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
wrote 65536/65536 bytes at offset 458752
|
|
64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
wrote 65536/65536 bytes at offset 524288
|
|
64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
wrote 65536/65536 bytes at offset 589824
|
|
64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
wrote 65536/65536 bytes at offset 655360
|
|
64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
wrote 65536/65536 bytes at offset 720896
|
|
64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
wrote 65536/65536 bytes at offset 786432
|
|
64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
wrote 65536/65536 bytes at offset 851968
|
|
64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
wrote 65536/65536 bytes at offset 917504
|
|
64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
wrote 65536/65536 bytes at offset 983040
|
|
64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
wrote 65536/65536 bytes at offset 1048576
|
|
64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
wrote 65536/65536 bytes at offset 1114112
|
|
64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
wrote 65536/65536 bytes at offset 1179648
|
|
64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
wrote 65536/65536 bytes at offset 1245184
|
|
64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
wrote 65536/65536 bytes at offset 1310720
|
|
64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
wrote 65536/65536 bytes at offset 1376256
|
|
64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
wrote 65536/65536 bytes at offset 1441792
|
|
64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
wrote 65536/65536 bytes at offset 1507328
|
|
64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
wrote 65536/65536 bytes at offset 1572864
|
|
64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
wrote 65536/65536 bytes at offset 1638400
|
|
64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
wrote 65536/65536 bytes at offset 1703936
|
|
64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
wrote 65536/65536 bytes at offset 1769472
|
|
64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
wrote 65536/65536 bytes at offset 1835008
|
|
64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
wrote 65536/65536 bytes at offset 1900544
|
|
64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
wrote 65536/65536 bytes at offset 1966080
|
|
64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
wrote 65536/65536 bytes at offset 2031616
|
|
64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=6442450944 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
|
|
|
|
== Some concurrent requests touching the same cluster ==
|
|
blkdebug: Suspended request 'A'
|
|
blkdebug: Resuming request 'A'
|
|
wrote XXX/XXX bytes at offset XXX
|
|
XXX KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
wrote XXX/XXX bytes at offset XXX
|
|
XXX KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
wrote XXX/XXX bytes at offset XXX
|
|
XXX KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
blkdebug: Suspended request 'A'
|
|
blkdebug: Resuming request 'A'
|
|
wrote XXX/XXX bytes at offset XXX
|
|
XXX KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
wrote XXX/XXX bytes at offset XXX
|
|
XXX KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
blkdebug: Suspended request 'A'
|
|
blkdebug: Resuming request 'A'
|
|
wrote XXX/XXX bytes at offset XXX
|
|
XXX KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
wrote XXX/XXX bytes at offset XXX
|
|
XXX KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
wrote XXX/XXX bytes at offset XXX
|
|
XXX KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
blkdebug: Suspended request 'A'
|
|
blkdebug: Resuming request 'A'
|
|
wrote XXX/XXX bytes at offset XXX
|
|
XXX KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
wrote XXX/XXX bytes at offset XXX
|
|
XXX KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
wrote XXX/XXX bytes at offset XXX
|
|
XXX KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
wrote XXX/XXX bytes at offset XXX
|
|
XXX KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
discard XXX/XXX bytes at offset XXX
|
|
XXX KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
blkdebug: Suspended request 'A'
|
|
blkdebug: Resuming request 'A'
|
|
wrote XXX/XXX bytes at offset XXX
|
|
XXX KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
wrote XXX/XXX bytes at offset XXX
|
|
XXX KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
wrote XXX/XXX bytes at offset XXX
|
|
XXX KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
wrote XXX/XXX bytes at offset XXX
|
|
XXX KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
discard XXX/XXX bytes at offset XXX
|
|
XXX KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
blkdebug: Suspended request 'A'
|
|
blkdebug: Resuming request 'A'
|
|
wrote XXX/XXX bytes at offset XXX
|
|
XXX KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
wrote XXX/XXX bytes at offset XXX
|
|
XXX KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
blkdebug: Suspended request 'A'
|
|
blkdebug: Resuming request 'A'
|
|
wrote XXX/XXX bytes at offset XXX
|
|
XXX KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
wrote XXX/XXX bytes at offset XXX
|
|
XXX KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
blkdebug: Suspended request 'A'
|
|
blkdebug: Resuming request 'A'
|
|
wrote XXX/XXX bytes at offset XXX
|
|
XXX KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
wrote XXX/XXX bytes at offset XXX
|
|
XXX KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
blkdebug: Suspended request 'A'
|
|
blkdebug: Resuming request 'A'
|
|
wrote XXX/XXX bytes at offset XXX
|
|
XXX KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
wrote XXX/XXX bytes at offset XXX
|
|
XXX KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
wrote XXX/XXX bytes at offset XXX
|
|
XXX KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
wrote XXX/XXX bytes at offset XXX
|
|
XXX KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
blkdebug: Suspended request 'A'
|
|
blkdebug: Resuming request 'A'
|
|
wrote XXX/XXX bytes at offset XXX
|
|
XXX KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
discarded XXX/XXX bytes at offset XXX
|
|
XXX KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
wrote XXX/XXX bytes at offset XXX
|
|
XXX KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
wrote XXX/XXX bytes at offset XXX
|
|
XXX KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
blkdebug: Suspended request 'A'
|
|
blkdebug: Resuming request 'A'
|
|
wrote XXX/XXX bytes at offset XXX
|
|
XXX KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
wrote XXX/XXX bytes at offset XXX
|
|
XXX KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
wrote XXX/XXX bytes at offset XXX
|
|
XXX KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
wrote XXX/XXX bytes at offset XXX
|
|
XXX KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
blkdebug: Suspended request 'A'
|
|
blkdebug: Resuming request 'A'
|
|
wrote XXX/XXX bytes at offset XXX
|
|
XXX KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
wrote XXX/XXX bytes at offset XXX
|
|
XXX KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
blkdebug: Suspended request 'A'
|
|
blkdebug: Resuming request 'A'
|
|
wrote XXX/XXX bytes at offset XXX
|
|
XXX KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
wrote XXX/XXX bytes at offset XXX
|
|
XXX KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
|
|
== Verify image content ==
|
|
read 65536/65536 bytes at offset 0
|
|
64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
read 8192/8192 bytes at offset 65536
|
|
8 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
read 8192/8192 bytes at offset 73728
|
|
8 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
read 16384/16384 bytes at offset 81920
|
|
16 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
read 8192/8192 bytes at offset 98304
|
|
8 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
read 8192/8192 bytes at offset 106496
|
|
8 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
read 8192/8192 bytes at offset 114688
|
|
8 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
read 8192/8192 bytes at offset 122880
|
|
8 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
read 32768/32768 bytes at offset 131072
|
|
32 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
read 8192/8192 bytes at offset 163840
|
|
8 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
read 65536/65536 bytes at offset 172032
|
|
64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
read 24576/24576 bytes at offset 237568
|
|
24 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
read 32768/32768 bytes at offset 262144
|
|
32 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
read 8192/8192 bytes at offset 294912
|
|
8 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
read 8192/8192 bytes at offset 303104
|
|
8 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
read 65536/65536 bytes at offset 311296
|
|
64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
read 16384/16384 bytes at offset 376832
|
|
16 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
read 24576/24576 bytes at offset 393216
|
|
24 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
read 8192/8192 bytes at offset 417792
|
|
8 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
read 8192/8192 bytes at offset 425984
|
|
8 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
read 57344/57344 bytes at offset 434176
|
|
56 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
read 24576/24576 bytes at offset 491520
|
|
24 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
read 8192/8192 bytes at offset 516096
|
|
8 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
read 4096/4096 bytes at offset 524288
|
|
4 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
read 20480/20480 bytes at offset 528384
|
|
20 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
read 8192/8192 bytes at offset 548864
|
|
8 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
read 8192/8192 bytes at offset 557056
|
|
8 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
read 57344/57344 bytes at offset 565248
|
|
56 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
read 24576/24576 bytes at offset 622592
|
|
24 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
read 8192/8192 bytes at offset 647168
|
|
8 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
read 4096/4096 bytes at offset 655360
|
|
4 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
read 20480/20480 bytes at offset 659456
|
|
20 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
read 8192/8192 bytes at offset 679936
|
|
8 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
read 8192/8192 bytes at offset 688128
|
|
8 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
read 57344/57344 bytes at offset 696320
|
|
56 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
read 32768/32768 bytes at offset 753664
|
|
32 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
read 16384/16384 bytes at offset 786432
|
|
16 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
read 98304/98304 bytes at offset 802816
|
|
96 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
read 8192/8192 bytes at offset 901120
|
|
8 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
read 8192/8192 bytes at offset 909312
|
|
8 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
read 16384/16384 bytes at offset 917504
|
|
16 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
read 81920/81920 bytes at offset 933888
|
|
80 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
read 16384/16384 bytes at offset 1015808
|
|
16 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
read 8192/8192 bytes at offset 1032192
|
|
8 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
read 8192/8192 bytes at offset 1040384
|
|
8 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
read 16384/16384 bytes at offset 1048576
|
|
16 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
read 32768/32768 bytes at offset 1064960
|
|
32 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
read 32768/32768 bytes at offset 1130496
|
|
32 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
read 16384/16384 bytes at offset 1163264
|
|
16 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
read 65536/65536 bytes at offset 1179648
|
|
64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
read 65536/65536 bytes at offset 1245184
|
|
64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
read 65536/65536 bytes at offset 1310720
|
|
64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
read 16384/16384 bytes at offset 2097152
|
|
16 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
read 49152/49152 bytes at offset 2113536
|
|
48 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
No errors were found on the image.
|
|
*** done
|