|  | QA output created by 024 | 
|  | Creating backing file | 
|  |  | 
|  | Formatting 'TEST_DIR/t.IMGFMT.base_old', fmt=IMGFMT size=1073741824 | 
|  | === IO: pattern 0x11 | 
|  | 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 131072 | 
|  | 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 393216 | 
|  | 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 655360 | 
|  | 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 917504 | 
|  | 64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) | 
|  | Creating new backing file | 
|  |  | 
|  | Formatting 'TEST_DIR/t.IMGFMT.base_new', fmt=IMGFMT size=1073741824 | 
|  | === IO: pattern 0x22 | 
|  | wrote 131072/131072 bytes at offset 0 | 
|  | 128 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) | 
|  | wrote 131072/131072 bytes at offset 262144 | 
|  | 128 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) | 
|  | wrote 131072/131072 bytes at offset 524288 | 
|  | 128 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) | 
|  | wrote 131072/131072 bytes at offset 786432 | 
|  | 128 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) | 
|  | Creating COW image | 
|  |  | 
|  | Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=1073741824 backing_file=TEST_DIR/t.IMGFMT.base_old backing_fmt=IMGFMT | 
|  | === IO: pattern 0x33 | 
|  | wrote 262144/262144 bytes at offset 0 | 
|  | 256 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) | 
|  | === IO: pattern 0x33 | 
|  | wrote 262144/262144 bytes at offset 524288 | 
|  | 256 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) | 
|  | Read before the rebase to make sure everything is set up correctly | 
|  |  | 
|  | === IO: pattern 0x33 | 
|  | read 65536/65536 bytes at offset 0 | 
|  | 64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) | 
|  | === IO: pattern 0x33 | 
|  | read 65536/65536 bytes at offset 65536 | 
|  | 64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) | 
|  | === IO: pattern 0x33 | 
|  | read 65536/65536 bytes at offset 131072 | 
|  | 64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) | 
|  | === IO: pattern 0x33 | 
|  | read 65536/65536 bytes at offset 196608 | 
|  | 64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) | 
|  | === IO: pattern 0x11 | 
|  | read 65536/65536 bytes at offset 262144 | 
|  | 64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) | 
|  | === IO: pattern 0x00 | 
|  | read 65536/65536 bytes at offset 327680 | 
|  | 64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) | 
|  | === IO: pattern 0x11 | 
|  | read 65536/65536 bytes at offset 393216 | 
|  | 64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) | 
|  | === IO: pattern 0x00 | 
|  | read 65536/65536 bytes at offset 458752 | 
|  | 64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) | 
|  | === IO: pattern 0x33 | 
|  | read 65536/65536 bytes at offset 524288 | 
|  | 64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) | 
|  | === IO: pattern 0x33 | 
|  | read 65536/65536 bytes at offset 589824 | 
|  | 64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) | 
|  | === IO: pattern 0x33 | 
|  | read 65536/65536 bytes at offset 655360 | 
|  | 64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) | 
|  | === IO: pattern 0x33 | 
|  | read 65536/65536 bytes at offset 720896 | 
|  | 64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) | 
|  | === IO: pattern 0x11 | 
|  | read 65536/65536 bytes at offset 786432 | 
|  | 64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) | 
|  | === IO: pattern 0x00 | 
|  | read 65536/65536 bytes at offset 851968 | 
|  | 64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) | 
|  | === IO: pattern 0x11 | 
|  | read 65536/65536 bytes at offset 917504 | 
|  | 64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) | 
|  | === IO: pattern 0x00 | 
|  | read 65536/65536 bytes at offset 983040 | 
|  | 64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) | 
|  |  | 
|  | Rebase and test again | 
|  |  | 
|  | === IO: pattern 0x33 | 
|  | read 65536/65536 bytes at offset 0 | 
|  | 64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) | 
|  | === IO: pattern 0x33 | 
|  | read 65536/65536 bytes at offset 65536 | 
|  | 64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) | 
|  | === IO: pattern 0x33 | 
|  | read 65536/65536 bytes at offset 131072 | 
|  | 64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) | 
|  | === IO: pattern 0x33 | 
|  | read 65536/65536 bytes at offset 196608 | 
|  | 64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) | 
|  | === IO: pattern 0x11 | 
|  | read 65536/65536 bytes at offset 262144 | 
|  | 64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) | 
|  | === IO: pattern 0x00 | 
|  | read 65536/65536 bytes at offset 327680 | 
|  | 64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) | 
|  | === IO: pattern 0x11 | 
|  | read 65536/65536 bytes at offset 393216 | 
|  | 64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) | 
|  | === IO: pattern 0x00 | 
|  | read 65536/65536 bytes at offset 458752 | 
|  | 64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) | 
|  | === IO: pattern 0x33 | 
|  | read 65536/65536 bytes at offset 524288 | 
|  | 64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) | 
|  | === IO: pattern 0x33 | 
|  | read 65536/65536 bytes at offset 589824 | 
|  | 64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) | 
|  | === IO: pattern 0x33 | 
|  | read 65536/65536 bytes at offset 655360 | 
|  | 64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) | 
|  | === IO: pattern 0x33 | 
|  | read 65536/65536 bytes at offset 720896 | 
|  | 64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) | 
|  | === IO: pattern 0x11 | 
|  | read 65536/65536 bytes at offset 786432 | 
|  | 64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) | 
|  | === IO: pattern 0x00 | 
|  | read 65536/65536 bytes at offset 851968 | 
|  | 64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) | 
|  | === IO: pattern 0x11 | 
|  | read 65536/65536 bytes at offset 917504 | 
|  | 64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) | 
|  | === IO: pattern 0x00 | 
|  | read 65536/65536 bytes at offset 983040 | 
|  | 64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) | 
|  |  | 
|  | === Test rebase in a subdirectory of the working directory === | 
|  |  | 
|  | Formatting 'TEST_DIR/subdir/t.IMGFMT.base_old', fmt=IMGFMT size=1048576 | 
|  | Formatting 'TEST_DIR/subdir/t.IMGFMT.base_new', fmt=IMGFMT size=1048576 | 
|  | Formatting 'TEST_DIR/subdir/t.IMGFMT', fmt=IMGFMT size=1048576 backing_file=t.IMGFMT.base_old backing_fmt=IMGFMT | 
|  |  | 
|  | wrote 131072/131072 bytes at offset 0 | 
|  | 128 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 131072/131072 bytes at offset 65536 | 
|  | 128 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) | 
|  |  | 
|  | backing file: t.IMGFMT.base_new (actual path: TEST_DIR/subdir/t.IMGFMT.base_new) | 
|  |  | 
|  | read 65536/65536 bytes at offset 0 | 
|  | 64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) | 
|  | read 65536/65536 bytes at offset 65536 | 
|  | 64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) | 
|  | read 65536/65536 bytes at offset 131072 | 
|  | 64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) | 
|  | read 65536/65536 bytes at offset 196608 | 
|  | 64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) | 
|  |  | 
|  | Offset          Length          File | 
|  | 0               0x30000         TEST_DIR/subdir/t.IMGFMT | 
|  | 0x30000         0x10000         TEST_DIR/subdir/t.IMGFMT.base_new | 
|  |  | 
|  | === Test rebase within one backing chain === | 
|  |  | 
|  | Creating backing chain | 
|  |  | 
|  | Formatting 'TEST_DIR/subdir/t.IMGFMT.base_new', fmt=IMGFMT size=327680 | 
|  | Formatting 'TEST_DIR/subdir/t.IMGFMT.base_old', fmt=IMGFMT size=262144 backing_file=TEST_DIR/subdir/t.IMGFMT.base_new backing_fmt=IMGFMT | 
|  | Formatting 'TEST_DIR/subdir/t.IMGFMT', fmt=IMGFMT size=327680 backing_file=TEST_DIR/subdir/t.IMGFMT.base_old backing_fmt=IMGFMT | 
|  |  | 
|  | Fill backing files with data | 
|  |  | 
|  | wrote 327680/327680 bytes at offset 0 | 
|  | 320 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) | 
|  | wrote 262144/262144 bytes at offset 0 | 
|  | 256 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) | 
|  |  | 
|  | Check the last cluster is zeroed in overlay before the rebase | 
|  |  | 
|  | read 65536/65536 bytes at offset 262144 | 
|  | 64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) | 
|  |  | 
|  | Rebase onto another image in the same chain | 
|  |  | 
|  | Verify that data is read the same before and after rebase | 
|  |  | 
|  | read 262144/262144 bytes at offset 0 | 
|  | 256 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) | 
|  | read 65536/65536 bytes at offset 262144 | 
|  | 64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) | 
|  |  | 
|  |  | 
|  | === Test rebase with different cluster sizes === | 
|  |  | 
|  | Creating backing chain | 
|  |  | 
|  | Formatting 'TEST_DIR/subdir/t.IMGFMT.base_new', fmt=IMGFMT size=393216 | 
|  | Formatting 'TEST_DIR/subdir/t.IMGFMT.base_old', fmt=IMGFMT size=393216 backing_file=TEST_DIR/subdir/t.IMGFMT.base_new backing_fmt=IMGFMT | 
|  | Formatting 'TEST_DIR/subdir/t.IMGFMT', fmt=IMGFMT size=393216 backing_file=TEST_DIR/subdir/t.IMGFMT.base_old backing_fmt=IMGFMT | 
|  | image: TEST_DIR/subdir/t.IMGFMT | 
|  | file format: IMGFMT | 
|  | virtual size: 384 KiB (393216 bytes) | 
|  | cluster_size: 131072 | 
|  | backing file: TEST_DIR/subdir/t.IMGFMT.base_old | 
|  | backing file format: IMGFMT | 
|  |  | 
|  | Fill backing files with data | 
|  |  | 
|  | 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 262144 | 
|  | 64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) | 
|  |  | 
|  | Rebase onto another image in the same chain | 
|  |  | 
|  | Verify that data is read the same before and after rebase | 
|  |  | 
|  | read 65536/65536 bytes at offset 0 | 
|  | 64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) | 
|  | read 65536/65536 bytes at offset 65536 | 
|  | 64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) | 
|  | read 131072/131072 bytes at offset 131072 | 
|  | 128 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) | 
|  | read 65536/65536 bytes at offset 262144 | 
|  | 64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) | 
|  | read 65536/65536 bytes at offset 327680 | 
|  | 64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) | 
|  |  | 
|  | Verify that untouched cluster remains unallocated | 
|  |  | 
|  | Offset          Length          File | 
|  | 0               0x20000         TEST_DIR/subdir/t.IMGFMT | 
|  | 0x40000         0x20000         TEST_DIR/subdir/t.IMGFMT | 
|  |  | 
|  | *** done |