iotests: Test committing to short backing file
Signed-off-by: Kevin Wolf <kwolf@redhat.com> Message-Id: <20200424125448.63318-10-kwolf@redhat.com> Reviewed-by: Max Reitz <mreitz@redhat.com> Reviewed-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
This commit is contained in:
parent
fd586ce8be
commit
bf03dede47
155
tests/qemu-iotests/274
Executable file
155
tests/qemu-iotests/274
Executable file
@ -0,0 +1,155 @@
|
||||
#!/usr/bin/env python3
|
||||
#
|
||||
# Copyright (C) 2019 Red Hat, Inc.
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
# Creator/Owner: Kevin Wolf <kwolf@redhat.com>
|
||||
#
|
||||
# Some tests for short backing files and short overlays
|
||||
|
||||
import iotests
|
||||
|
||||
iotests.verify_image_format(supported_fmts=['qcow2'])
|
||||
iotests.verify_platform(['linux'])
|
||||
|
||||
size_short = 1 * 1024 * 1024
|
||||
size_long = 2 * 1024 * 1024
|
||||
size_diff = size_long - size_short
|
||||
|
||||
def create_chain() -> None:
|
||||
iotests.qemu_img_log('create', '-f', iotests.imgfmt, base,
|
||||
str(size_long))
|
||||
iotests.qemu_img_log('create', '-f', iotests.imgfmt, '-b', base, mid,
|
||||
str(size_short))
|
||||
iotests.qemu_img_log('create', '-f', iotests.imgfmt, '-b', mid, top,
|
||||
str(size_long))
|
||||
|
||||
iotests.qemu_io_log('-c', 'write -P 1 0 %d' % size_long, base)
|
||||
|
||||
def create_vm() -> iotests.VM:
|
||||
vm = iotests.VM()
|
||||
vm.add_blockdev('file,filename=%s,node-name=base-file' % base)
|
||||
vm.add_blockdev('%s,file=base-file,node-name=base' % iotests.imgfmt)
|
||||
vm.add_blockdev('file,filename=%s,node-name=mid-file' % mid)
|
||||
vm.add_blockdev('%s,file=mid-file,node-name=mid,backing=base'
|
||||
% iotests.imgfmt)
|
||||
vm.add_drive(top, 'backing=mid,node-name=top')
|
||||
return vm
|
||||
|
||||
with iotests.FilePath('base') as base, \
|
||||
iotests.FilePath('mid') as mid, \
|
||||
iotests.FilePath('top') as top:
|
||||
|
||||
iotests.log('== Commit tests ==')
|
||||
|
||||
create_chain()
|
||||
|
||||
iotests.log('=== Check visible data ===')
|
||||
|
||||
iotests.qemu_io_log('-c', 'read -P 1 0 %d' % size_short, top)
|
||||
iotests.qemu_io_log('-c', 'read -P 0 %d %d' % (size_short, size_diff), top)
|
||||
|
||||
iotests.log('=== Checking allocation status ===')
|
||||
|
||||
iotests.qemu_io_log('-c', 'alloc 0 %d' % size_short,
|
||||
'-c', 'alloc %d %d' % (size_short, size_diff),
|
||||
base)
|
||||
|
||||
iotests.qemu_io_log('-c', 'alloc 0 %d' % size_short,
|
||||
'-c', 'alloc %d %d' % (size_short, size_diff),
|
||||
mid)
|
||||
|
||||
iotests.qemu_io_log('-c', 'alloc 0 %d' % size_short,
|
||||
'-c', 'alloc %d %d' % (size_short, size_diff),
|
||||
top)
|
||||
|
||||
iotests.log('=== Checking map ===')
|
||||
|
||||
iotests.qemu_img_log('map', '--output=json', base)
|
||||
iotests.qemu_img_log('map', '--output=human', base)
|
||||
iotests.qemu_img_log('map', '--output=json', mid)
|
||||
iotests.qemu_img_log('map', '--output=human', mid)
|
||||
iotests.qemu_img_log('map', '--output=json', top)
|
||||
iotests.qemu_img_log('map', '--output=human', top)
|
||||
|
||||
iotests.log('=== Testing qemu-img commit (top -> mid) ===')
|
||||
|
||||
iotests.qemu_img_log('commit', top)
|
||||
iotests.img_info_log(mid)
|
||||
iotests.qemu_io_log('-c', 'read -P 1 0 %d' % size_short, mid)
|
||||
iotests.qemu_io_log('-c', 'read -P 0 %d %d' % (size_short, size_diff), mid)
|
||||
|
||||
iotests.log('=== Testing HMP commit (top -> mid) ===')
|
||||
|
||||
create_chain()
|
||||
with create_vm() as vm:
|
||||
vm.launch()
|
||||
vm.qmp_log('human-monitor-command', command_line='commit drive0')
|
||||
|
||||
iotests.img_info_log(mid)
|
||||
iotests.qemu_io_log('-c', 'read -P 1 0 %d' % size_short, mid)
|
||||
iotests.qemu_io_log('-c', 'read -P 0 %d %d' % (size_short, size_diff), mid)
|
||||
|
||||
iotests.log('=== Testing QMP active commit (top -> mid) ===')
|
||||
|
||||
create_chain()
|
||||
with create_vm() as vm:
|
||||
vm.launch()
|
||||
vm.qmp_log('block-commit', device='top', base_node='mid',
|
||||
job_id='job0', auto_dismiss=False)
|
||||
vm.run_job('job0', wait=5)
|
||||
|
||||
iotests.img_info_log(mid)
|
||||
iotests.qemu_io_log('-c', 'read -P 1 0 %d' % size_short, mid)
|
||||
iotests.qemu_io_log('-c', 'read -P 0 %d %d' % (size_short, size_diff), mid)
|
||||
|
||||
|
||||
iotests.log('== Resize tests ==')
|
||||
|
||||
# Use different sizes for different allocation modes:
|
||||
#
|
||||
# We want to have at least one test where 32 bit truncation in the size of
|
||||
# the overlapping area becomes visible. This is covered by the
|
||||
# prealloc='off' case (1G to 6G is an overlap of 5G).
|
||||
#
|
||||
# However, we can only do this for modes that don't preallocate data
|
||||
# because otherwise we might run out of space on the test host.
|
||||
#
|
||||
# We also want to test some unaligned combinations.
|
||||
for (prealloc, base_size, top_size_old, top_size_new, off) in [
|
||||
('off', '6G', '1G', '8G', '5G'),
|
||||
('metadata', '32G', '30G', '33G', '31G'),
|
||||
('falloc', '10M', '5M', '15M', '9M'),
|
||||
('full', '16M', '8M', '12M', '11M'),
|
||||
('off', '384k', '253k', '512k', '253k'),
|
||||
('off', '400k', '256k', '512k', '336k'),
|
||||
('off', '512k', '256k', '500k', '436k')]:
|
||||
|
||||
iotests.log('=== preallocation=%s ===' % prealloc)
|
||||
iotests.qemu_img_log('create', '-f', iotests.imgfmt, base, base_size)
|
||||
iotests.qemu_img_log('create', '-f', iotests.imgfmt, '-b', base, top,
|
||||
top_size_old)
|
||||
iotests.qemu_io_log('-c', 'write -P 1 %s 64k' % off, base)
|
||||
|
||||
# After this, top_size_old to base_size should be allocated/zeroed.
|
||||
#
|
||||
# In theory, leaving base_size to top_size_new unallocated would be
|
||||
# correct, but in practice, if we zero out anything, we zero out
|
||||
# everything up to top_size_new.
|
||||
iotests.qemu_img_log('resize', '-f', iotests.imgfmt,
|
||||
'--preallocation', prealloc, top, top_size_new)
|
||||
iotests.qemu_io_log('-c', 'read -P 0 %s 64k' % off, top)
|
||||
iotests.qemu_io_log('-c', 'map', top)
|
||||
iotests.qemu_img_log('map', '--output=json', top)
|
268
tests/qemu-iotests/274.out
Normal file
268
tests/qemu-iotests/274.out
Normal file
@ -0,0 +1,268 @@
|
||||
== Commit tests ==
|
||||
Formatting 'TEST_DIR/PID-base', fmt=qcow2 size=2097152 cluster_size=65536 lazy_refcounts=off refcount_bits=16
|
||||
|
||||
Formatting 'TEST_DIR/PID-mid', fmt=qcow2 size=1048576 backing_file=TEST_DIR/PID-base cluster_size=65536 lazy_refcounts=off refcount_bits=16
|
||||
|
||||
Formatting 'TEST_DIR/PID-top', fmt=qcow2 size=2097152 backing_file=TEST_DIR/PID-mid cluster_size=65536 lazy_refcounts=off refcount_bits=16
|
||||
|
||||
wrote 2097152/2097152 bytes at offset 0
|
||||
2 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||
|
||||
=== Check visible data ===
|
||||
read 1048576/1048576 bytes at offset 0
|
||||
1 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||
|
||||
read 1048576/1048576 bytes at offset 1048576
|
||||
1 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||
|
||||
=== Checking allocation status ===
|
||||
1048576/1048576 bytes allocated at offset 0 bytes
|
||||
1048576/1048576 bytes allocated at offset 1 MiB
|
||||
|
||||
0/1048576 bytes allocated at offset 0 bytes
|
||||
0/0 bytes allocated at offset 1 MiB
|
||||
|
||||
0/1048576 bytes allocated at offset 0 bytes
|
||||
0/1048576 bytes allocated at offset 1 MiB
|
||||
|
||||
=== Checking map ===
|
||||
[{ "start": 0, "length": 2097152, "depth": 0, "zero": false, "data": true, "offset": 327680}]
|
||||
|
||||
Offset Length Mapped to File
|
||||
0 0x200000 0x50000 TEST_DIR/PID-base
|
||||
|
||||
[{ "start": 0, "length": 1048576, "depth": 1, "zero": false, "data": true, "offset": 327680}]
|
||||
|
||||
Offset Length Mapped to File
|
||||
0 0x100000 0x50000 TEST_DIR/PID-base
|
||||
|
||||
[{ "start": 0, "length": 1048576, "depth": 2, "zero": false, "data": true, "offset": 327680},
|
||||
{ "start": 1048576, "length": 1048576, "depth": 0, "zero": true, "data": false}]
|
||||
|
||||
Offset Length Mapped to File
|
||||
0 0x100000 0x50000 TEST_DIR/PID-base
|
||||
|
||||
=== Testing qemu-img commit (top -> mid) ===
|
||||
Image committed.
|
||||
|
||||
image: TEST_IMG
|
||||
file format: IMGFMT
|
||||
virtual size: 2 MiB (2097152 bytes)
|
||||
cluster_size: 65536
|
||||
backing file: TEST_DIR/PID-base
|
||||
Format specific information:
|
||||
compat: 1.1
|
||||
lazy refcounts: false
|
||||
refcount bits: 16
|
||||
corrupt: false
|
||||
|
||||
read 1048576/1048576 bytes at offset 0
|
||||
1 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||
|
||||
read 1048576/1048576 bytes at offset 1048576
|
||||
1 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||
|
||||
=== Testing HMP commit (top -> mid) ===
|
||||
Formatting 'TEST_DIR/PID-base', fmt=qcow2 size=2097152 cluster_size=65536 lazy_refcounts=off refcount_bits=16
|
||||
|
||||
Formatting 'TEST_DIR/PID-mid', fmt=qcow2 size=1048576 backing_file=TEST_DIR/PID-base cluster_size=65536 lazy_refcounts=off refcount_bits=16
|
||||
|
||||
Formatting 'TEST_DIR/PID-top', fmt=qcow2 size=2097152 backing_file=TEST_DIR/PID-mid cluster_size=65536 lazy_refcounts=off refcount_bits=16
|
||||
|
||||
wrote 2097152/2097152 bytes at offset 0
|
||||
2 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||
|
||||
{"execute": "human-monitor-command", "arguments": {"command-line": "commit drive0"}}
|
||||
{"return": ""}
|
||||
image: TEST_IMG
|
||||
file format: IMGFMT
|
||||
virtual size: 2 MiB (2097152 bytes)
|
||||
cluster_size: 65536
|
||||
backing file: TEST_DIR/PID-base
|
||||
Format specific information:
|
||||
compat: 1.1
|
||||
lazy refcounts: false
|
||||
refcount bits: 16
|
||||
corrupt: false
|
||||
|
||||
read 1048576/1048576 bytes at offset 0
|
||||
1 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||
|
||||
read 1048576/1048576 bytes at offset 1048576
|
||||
1 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||
|
||||
=== Testing QMP active commit (top -> mid) ===
|
||||
Formatting 'TEST_DIR/PID-base', fmt=qcow2 size=2097152 cluster_size=65536 lazy_refcounts=off refcount_bits=16
|
||||
|
||||
Formatting 'TEST_DIR/PID-mid', fmt=qcow2 size=1048576 backing_file=TEST_DIR/PID-base cluster_size=65536 lazy_refcounts=off refcount_bits=16
|
||||
|
||||
Formatting 'TEST_DIR/PID-top', fmt=qcow2 size=2097152 backing_file=TEST_DIR/PID-mid cluster_size=65536 lazy_refcounts=off refcount_bits=16
|
||||
|
||||
wrote 2097152/2097152 bytes at offset 0
|
||||
2 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||
|
||||
{"execute": "block-commit", "arguments": {"auto-dismiss": false, "base-node": "mid", "device": "top", "job-id": "job0"}}
|
||||
{"return": {}}
|
||||
{"execute": "job-complete", "arguments": {"id": "job0"}}
|
||||
{"return": {}}
|
||||
{"data": {"device": "job0", "len": 0, "offset": 0, "speed": 0, "type": "commit"}, "event": "BLOCK_JOB_READY", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
|
||||
{"data": {"device": "job0", "len": 0, "offset": 0, "speed": 0, "type": "commit"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
|
||||
{"execute": "job-dismiss", "arguments": {"id": "job0"}}
|
||||
{"return": {}}
|
||||
image: TEST_IMG
|
||||
file format: IMGFMT
|
||||
virtual size: 2 MiB (2097152 bytes)
|
||||
cluster_size: 65536
|
||||
backing file: TEST_DIR/PID-base
|
||||
Format specific information:
|
||||
compat: 1.1
|
||||
lazy refcounts: false
|
||||
refcount bits: 16
|
||||
corrupt: false
|
||||
|
||||
read 1048576/1048576 bytes at offset 0
|
||||
1 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||
|
||||
read 1048576/1048576 bytes at offset 1048576
|
||||
1 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||
|
||||
== Resize tests ==
|
||||
=== preallocation=off ===
|
||||
Formatting 'TEST_DIR/PID-base', fmt=qcow2 size=6442450944 cluster_size=65536 lazy_refcounts=off refcount_bits=16
|
||||
|
||||
Formatting 'TEST_DIR/PID-top', fmt=qcow2 size=1073741824 backing_file=TEST_DIR/PID-base cluster_size=65536 lazy_refcounts=off refcount_bits=16
|
||||
|
||||
wrote 65536/65536 bytes at offset 5368709120
|
||||
64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||
|
||||
Image resized.
|
||||
|
||||
read 65536/65536 bytes at offset 5368709120
|
||||
64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||
|
||||
1 GiB (0x40000000) bytes not allocated at offset 0 bytes (0x0)
|
||||
7 GiB (0x1c0000000) bytes allocated at offset 1 GiB (0x40000000)
|
||||
|
||||
[{ "start": 0, "length": 1073741824, "depth": 1, "zero": true, "data": false},
|
||||
{ "start": 1073741824, "length": 7516192768, "depth": 0, "zero": true, "data": false}]
|
||||
|
||||
=== preallocation=metadata ===
|
||||
Formatting 'TEST_DIR/PID-base', fmt=qcow2 size=34359738368 cluster_size=65536 lazy_refcounts=off refcount_bits=16
|
||||
|
||||
Formatting 'TEST_DIR/PID-top', fmt=qcow2 size=32212254720 backing_file=TEST_DIR/PID-base cluster_size=65536 lazy_refcounts=off refcount_bits=16
|
||||
|
||||
wrote 65536/65536 bytes at offset 33285996544
|
||||
64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||
|
||||
Image resized.
|
||||
|
||||
read 65536/65536 bytes at offset 33285996544
|
||||
64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||
|
||||
30 GiB (0x780000000) bytes not allocated at offset 0 bytes (0x0)
|
||||
3 GiB (0xc0000000) bytes allocated at offset 30 GiB (0x780000000)
|
||||
|
||||
[{ "start": 0, "length": 32212254720, "depth": 1, "zero": true, "data": false},
|
||||
{ "start": 32212254720, "length": 536870912, "depth": 0, "zero": true, "data": false, "offset": 327680},
|
||||
{ "start": 32749125632, "length": 536870912, "depth": 0, "zero": true, "data": false, "offset": 537264128},
|
||||
{ "start": 33285996544, "length": 536870912, "depth": 0, "zero": true, "data": false, "offset": 1074200576},
|
||||
{ "start": 33822867456, "length": 536870912, "depth": 0, "zero": true, "data": false, "offset": 1611137024},
|
||||
{ "start": 34359738368, "length": 536870912, "depth": 0, "zero": true, "data": false, "offset": 2148139008},
|
||||
{ "start": 34896609280, "length": 536870912, "depth": 0, "zero": true, "data": false, "offset": 2685075456}]
|
||||
|
||||
=== preallocation=falloc ===
|
||||
Formatting 'TEST_DIR/PID-base', fmt=qcow2 size=10485760 cluster_size=65536 lazy_refcounts=off refcount_bits=16
|
||||
|
||||
Formatting 'TEST_DIR/PID-top', fmt=qcow2 size=5242880 backing_file=TEST_DIR/PID-base cluster_size=65536 lazy_refcounts=off refcount_bits=16
|
||||
|
||||
wrote 65536/65536 bytes at offset 9437184
|
||||
64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||
|
||||
Image resized.
|
||||
|
||||
read 65536/65536 bytes at offset 9437184
|
||||
64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||
|
||||
5 MiB (0x500000) bytes not allocated at offset 0 bytes (0x0)
|
||||
10 MiB (0xa00000) bytes allocated at offset 5 MiB (0x500000)
|
||||
|
||||
[{ "start": 0, "length": 5242880, "depth": 1, "zero": true, "data": false},
|
||||
{ "start": 5242880, "length": 10485760, "depth": 0, "zero": true, "data": false, "offset": 327680}]
|
||||
|
||||
=== preallocation=full ===
|
||||
Formatting 'TEST_DIR/PID-base', fmt=qcow2 size=16777216 cluster_size=65536 lazy_refcounts=off refcount_bits=16
|
||||
|
||||
Formatting 'TEST_DIR/PID-top', fmt=qcow2 size=8388608 backing_file=TEST_DIR/PID-base cluster_size=65536 lazy_refcounts=off refcount_bits=16
|
||||
|
||||
wrote 65536/65536 bytes at offset 11534336
|
||||
64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||
|
||||
Image resized.
|
||||
|
||||
read 65536/65536 bytes at offset 11534336
|
||||
64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||
|
||||
8 MiB (0x800000) bytes not allocated at offset 0 bytes (0x0)
|
||||
4 MiB (0x400000) bytes allocated at offset 8 MiB (0x800000)
|
||||
|
||||
[{ "start": 0, "length": 8388608, "depth": 1, "zero": true, "data": false},
|
||||
{ "start": 8388608, "length": 4194304, "depth": 0, "zero": true, "data": false, "offset": 327680}]
|
||||
|
||||
=== preallocation=off ===
|
||||
Formatting 'TEST_DIR/PID-base', fmt=qcow2 size=393216 cluster_size=65536 lazy_refcounts=off refcount_bits=16
|
||||
|
||||
Formatting 'TEST_DIR/PID-top', fmt=qcow2 size=259072 backing_file=TEST_DIR/PID-base cluster_size=65536 lazy_refcounts=off refcount_bits=16
|
||||
|
||||
wrote 65536/65536 bytes at offset 259072
|
||||
64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||
|
||||
Image resized.
|
||||
|
||||
read 65536/65536 bytes at offset 259072
|
||||
64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||
|
||||
192 KiB (0x30000) bytes not allocated at offset 0 bytes (0x0)
|
||||
320 KiB (0x50000) bytes allocated at offset 192 KiB (0x30000)
|
||||
|
||||
[{ "start": 0, "length": 196608, "depth": 1, "zero": true, "data": false},
|
||||
{ "start": 196608, "length": 65536, "depth": 0, "zero": false, "data": true, "offset": 327680},
|
||||
{ "start": 262144, "length": 262144, "depth": 0, "zero": true, "data": false}]
|
||||
|
||||
=== preallocation=off ===
|
||||
Formatting 'TEST_DIR/PID-base', fmt=qcow2 size=409600 cluster_size=65536 lazy_refcounts=off refcount_bits=16
|
||||
|
||||
Formatting 'TEST_DIR/PID-top', fmt=qcow2 size=262144 backing_file=TEST_DIR/PID-base cluster_size=65536 lazy_refcounts=off refcount_bits=16
|
||||
|
||||
wrote 65536/65536 bytes at offset 344064
|
||||
64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||
|
||||
Image resized.
|
||||
|
||||
read 65536/65536 bytes at offset 344064
|
||||
64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||
|
||||
256 KiB (0x40000) bytes not allocated at offset 0 bytes (0x0)
|
||||
256 KiB (0x40000) bytes allocated at offset 256 KiB (0x40000)
|
||||
|
||||
[{ "start": 0, "length": 262144, "depth": 1, "zero": true, "data": false},
|
||||
{ "start": 262144, "length": 262144, "depth": 0, "zero": true, "data": false}]
|
||||
|
||||
=== preallocation=off ===
|
||||
Formatting 'TEST_DIR/PID-base', fmt=qcow2 size=524288 cluster_size=65536 lazy_refcounts=off refcount_bits=16
|
||||
|
||||
Formatting 'TEST_DIR/PID-top', fmt=qcow2 size=262144 backing_file=TEST_DIR/PID-base cluster_size=65536 lazy_refcounts=off refcount_bits=16
|
||||
|
||||
wrote 65536/65536 bytes at offset 446464
|
||||
64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||
|
||||
Image resized.
|
||||
|
||||
read 65536/65536 bytes at offset 446464
|
||||
64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||
|
||||
256 KiB (0x40000) bytes not allocated at offset 0 bytes (0x0)
|
||||
244 KiB (0x3d000) bytes allocated at offset 256 KiB (0x40000)
|
||||
|
||||
[{ "start": 0, "length": 262144, "depth": 1, "zero": true, "data": false},
|
||||
{ "start": 262144, "length": 249856, "depth": 0, "zero": true, "data": false}]
|
||||
|
@ -286,6 +286,7 @@
|
||||
270 rw backing quick
|
||||
272 rw
|
||||
273 backing quick
|
||||
274 rw backing
|
||||
277 rw quick
|
||||
279 rw backing quick
|
||||
280 rw migration quick
|
||||
|
Loading…
Reference in New Issue
Block a user