1
The following changes since commit 7623b5ba017f61de5d7c2bba12c6feb3d55091b1:
1
The following changes since commit e1e44a9916b4318e943aecd669e096222cb3eaeb:
2
2
3
Merge remote-tracking branch 'remotes/vivier2/tags/linux-user-for-5.1-pull-request' into staging (2020-07-06 11:40:10 +0100)
3
Merge remote-tracking branch 'remotes/xtensa/tags/20180316-xtensa' into staging (2018-03-17 14:15:03 +0000)
4
4
5
are available in the Git repository at:
5
are available in the git repository at:
6
6
7
git://repo.or.cz/qemu/kevin.git tags/for-upstream
7
git://repo.or.cz/qemu/kevin.git tags/for-upstream
8
8
9
for you to fetch changes up to 7bf114070834e1b0c947b7c2a1c96cb734eb6b86:
9
for you to fetch changes up to 63ca8406beac44aa59c389ed8578d0c7b3da3402:
10
10
11
qemu-img: Deprecate use of -b without -F (2020-07-07 18:18:06 +0200)
11
iotests: Avoid realpath, for CentOS 6 (2018-03-19 12:01:39 +0100)
12
12
13
----------------------------------------------------------------
13
----------------------------------------------------------------
14
Block layer patches:
14
Block layer patches
15
16
- file-posix: Mitigate file fragmentation with extent size hints
17
- Tighten qemu-img rules on missing backing format
18
- qemu-img map: Don't limit block status request size
19
15
20
----------------------------------------------------------------
16
----------------------------------------------------------------
21
Eric Blake (10):
17
Eric Blake (1):
22
qemu-img: Flush stdout before before potential stderr messages
18
iotests: Avoid realpath, for CentOS 6
23
block: Finish deprecation of 'qemu-img convert -n -o'
24
sheepdog: Add trivial backing_fmt support
25
vmdk: Add trivial backing_fmt support
26
qcow: Tolerate backing_fmt=
27
block: Error if backing file fails during creation without -u
28
qcow2: Deprecate use of qemu-img amend to change backing file
29
iotests: Specify explicit backing format where sensible
30
block: Add support to warn on backing file change without format
31
qemu-img: Deprecate use of -b without -F
32
19
33
Kevin Wolf (2):
20
Fam Zheng (4):
34
qemu-img map: Don't limit block status request size
21
block: Fix flags in reopen queue
35
file-posix: Mitigate file fragmentation with extent size hints
22
iotests: Add regression test for commit base locking
23
vvfat: Fix inherit_options flags
24
block: Fix leak of ignore_children in error path
36
25
37
qapi/block-core.json | 11 ++++--
26
Jeff Cody (1):
38
docs/system/deprecated.rst | 58 ++++++++++++++++++++++++----
27
block: fix iotest 146 output expectations
39
docs/tools/qemu-img.rst | 4 ++
40
include/block/block.h | 4 +-
41
include/block/block_int.h | 1 +
42
block.c | 53 +++++++++++++++++++-------
43
block/file-posix.c | 42 +++++++++++++++++++++
44
block/qcow.c | 20 +++++++++-
45
block/qcow2.c | 7 +++-
46
block/sheepdog.c | 18 ++++++++-
47
block/stream.c | 2 +-
48
block/vmdk.c | 14 +++++++
49
blockdev.c | 3 +-
50
qemu-img.c | 20 ++++++----
51
tests/qemu-iotests/017 | 2 +-
52
tests/qemu-iotests/017.out | 2 +-
53
tests/qemu-iotests/018 | 2 +-
54
tests/qemu-iotests/018.out | 2 +-
55
tests/qemu-iotests/019 | 5 ++-
56
tests/qemu-iotests/019.out | 2 +-
57
tests/qemu-iotests/020 | 4 +-
58
tests/qemu-iotests/020.out | 4 +-
59
tests/qemu-iotests/024 | 8 ++--
60
tests/qemu-iotests/024.out | 5 ++-
61
tests/qemu-iotests/028 | 4 +-
62
tests/qemu-iotests/028.out | 2 +-
63
tests/qemu-iotests/030 | 26 +++++++++----
64
tests/qemu-iotests/034 | 2 +-
65
tests/qemu-iotests/034.out | 2 +-
66
tests/qemu-iotests/037 | 2 +-
67
tests/qemu-iotests/037.out | 2 +-
68
tests/qemu-iotests/038 | 2 +-
69
tests/qemu-iotests/038.out | 2 +-
70
tests/qemu-iotests/039 | 3 +-
71
tests/qemu-iotests/039.out | 2 +-
72
tests/qemu-iotests/040 | 47 ++++++++++++++++-------
73
tests/qemu-iotests/041 | 37 ++++++++++++------
74
tests/qemu-iotests/042 | 4 +-
75
tests/qemu-iotests/043 | 18 ++++-----
76
tests/qemu-iotests/043.out | 16 +++++---
77
tests/qemu-iotests/046 | 2 +-
78
tests/qemu-iotests/046.out | 2 +-
79
tests/qemu-iotests/049.out | 8 ++--
80
tests/qemu-iotests/050 | 4 +-
81
tests/qemu-iotests/050.out | 2 +-
82
tests/qemu-iotests/051 | 2 +-
83
tests/qemu-iotests/051.out | 2 +-
84
tests/qemu-iotests/051.pc.out | 2 +-
85
tests/qemu-iotests/054.out | 2 +-
86
tests/qemu-iotests/056 | 3 +-
87
tests/qemu-iotests/060 | 2 +-
88
tests/qemu-iotests/060.out | 2 +-
89
tests/qemu-iotests/061 | 10 ++---
90
tests/qemu-iotests/061.out | 11 +++---
91
tests/qemu-iotests/069 | 2 +-
92
tests/qemu-iotests/069.out | 2 +-
93
tests/qemu-iotests/073 | 2 +-
94
tests/qemu-iotests/073.out | 2 +-
95
tests/qemu-iotests/079.out | 2 +-
96
tests/qemu-iotests/082 | 10 +++--
97
tests/qemu-iotests/082.out | 30 ++++++++++++---
98
tests/qemu-iotests/085 | 4 +-
99
tests/qemu-iotests/085.out | 6 +--
100
tests/qemu-iotests/089 | 2 +-
101
tests/qemu-iotests/089.out | 2 +-
102
tests/qemu-iotests/095 | 4 +-
103
tests/qemu-iotests/095.out | 4 +-
104
tests/qemu-iotests/097 | 4 +-
105
tests/qemu-iotests/097.out | 16 ++++----
106
tests/qemu-iotests/098 | 2 +-
107
tests/qemu-iotests/098.out | 8 ++--
108
tests/qemu-iotests/110 | 4 +-
109
tests/qemu-iotests/110.out | 4 +-
110
tests/qemu-iotests/111.out | 2 +-
111
tests/qemu-iotests/112.out | 4 +-
112
tests/qemu-iotests/114 | 12 ++++++
113
tests/qemu-iotests/114.out | 9 +++++
114
tests/qemu-iotests/122 | 34 +++++++++++------
115
tests/qemu-iotests/122.out | 12 ++++--
116
tests/qemu-iotests/126 | 4 +-
117
tests/qemu-iotests/126.out | 4 +-
118
tests/qemu-iotests/127 | 4 +-
119
tests/qemu-iotests/127.out | 4 +-
120
tests/qemu-iotests/129 | 3 +-
121
tests/qemu-iotests/133 | 2 +-
122
tests/qemu-iotests/133.out | 2 +-
123
tests/qemu-iotests/139 | 2 +-
124
tests/qemu-iotests/141 | 4 +-
125
tests/qemu-iotests/141.out | 4 +-
126
tests/qemu-iotests/142 | 2 +-
127
tests/qemu-iotests/142.out | 2 +-
128
tests/qemu-iotests/153 | 14 +++----
129
tests/qemu-iotests/153.out | 35 +++++++++--------
130
tests/qemu-iotests/154 | 42 ++++++++++-----------
131
tests/qemu-iotests/154.out | 42 ++++++++++-----------
132
tests/qemu-iotests/155 | 12 ++++--
133
tests/qemu-iotests/156 | 9 +++--
134
tests/qemu-iotests/156.out | 6 +--
135
tests/qemu-iotests/158 | 2 +-
136
tests/qemu-iotests/158.out | 2 +-
137
tests/qemu-iotests/161 | 8 ++--
138
tests/qemu-iotests/161.out | 8 ++--
139
tests/qemu-iotests/176 | 4 +-
140
tests/qemu-iotests/176.out | 32 ++++++++--------
141
tests/qemu-iotests/177 | 2 +-
142
tests/qemu-iotests/177.out | 2 +-
143
tests/qemu-iotests/179 | 2 +-
144
tests/qemu-iotests/179.out | 2 +-
145
tests/qemu-iotests/189 | 2 +-
146
tests/qemu-iotests/189.out | 2 +-
147
tests/qemu-iotests/191 | 12 +++---
148
tests/qemu-iotests/191.out | 12 +++---
149
tests/qemu-iotests/195 | 6 +--
150
tests/qemu-iotests/195.out | 6 +--
151
tests/qemu-iotests/198 | 2 +-
152
tests/qemu-iotests/198.out | 3 +-
153
tests/qemu-iotests/204 | 2 +-
154
tests/qemu-iotests/204.out | 2 +-
155
tests/qemu-iotests/216 | 2 +-
156
tests/qemu-iotests/224 | 4 +-
157
tests/qemu-iotests/225 | 2 +-
158
tests/qemu-iotests/225.out | 2 +-
159
tests/qemu-iotests/228 | 5 ++-
160
tests/qemu-iotests/243 | 7 ++--
161
tests/qemu-iotests/243.out | 16 ++++----
162
tests/qemu-iotests/245 | 3 +-
163
tests/qemu-iotests/249 | 4 +-
164
tests/qemu-iotests/249.out | 4 +-
165
tests/qemu-iotests/252 | 2 +-
166
tests/qemu-iotests/257 | 3 +-
167
tests/qemu-iotests/259.out | 2 +-
168
tests/qemu-iotests/267 | 4 +-
169
tests/qemu-iotests/267.out | 6 +--
170
tests/qemu-iotests/270 | 2 +-
171
tests/qemu-iotests/270.out | 2 +-
172
tests/qemu-iotests/273 | 4 +-
173
tests/qemu-iotests/273.out | 4 +-
174
tests/qemu-iotests/274 | 12 +++---
175
tests/qemu-iotests/274.out | 29 +++++++-------
176
tests/qemu-iotests/279 | 4 +-
177
tests/qemu-iotests/279.out | 4 +-
178
tests/qemu-iotests/290 | 2 +-
179
tests/qemu-iotests/290.out | 4 +-
180
tests/qemu-iotests/293 | 88 +++++++++++++++++++++++++++++++++++++++++++
181
tests/qemu-iotests/293.out | 59 +++++++++++++++++++++++++++++
182
tests/qemu-iotests/group | 1 +
183
146 files changed, 871 insertions(+), 421 deletions(-)
184
create mode 100755 tests/qemu-iotests/293
185
create mode 100644 tests/qemu-iotests/293.out
186
28
29
John Snow (21):
30
blockjobs: fix set-speed kick
31
blockjobs: model single jobs as transactions
32
Blockjobs: documentation touchup
33
blockjobs: add status enum
34
blockjobs: add state transition table
35
iotests: add pause_wait
36
blockjobs: add block_job_verb permission table
37
blockjobs: add ABORTING state
38
blockjobs: add CONCLUDED state
39
blockjobs: add NULL state
40
blockjobs: add block_job_dismiss
41
blockjobs: ensure abort is called for cancelled jobs
42
blockjobs: add commit, abort, clean helpers
43
blockjobs: add block_job_txn_apply function
44
blockjobs: add prepare callback
45
blockjobs: add waiting status
46
blockjobs: add PENDING status and event
47
blockjobs: add block-job-finalize
48
blockjobs: Expose manual property
49
iotests: test manual job dismissal
50
tests/test-blockjob: test cancellations
187
51
52
Kevin Wolf (14):
53
luks: Separate image file creation from formatting
54
luks: Create block_crypto_co_create_generic()
55
luks: Support .bdrv_co_create
56
luks: Turn invalid assertion into check
57
luks: Catch integer overflow for huge sizes
58
qemu-iotests: Test luks QMP image creation
59
parallels: Support .bdrv_co_create
60
qemu-iotests: Enable write tests for parallels
61
qcow: Support .bdrv_co_create
62
qed: Support .bdrv_co_create
63
vdi: Make comments consistent with other drivers
64
vhdx: Support .bdrv_co_create
65
vpc: Support .bdrv_co_create
66
vpc: Require aligned size in .bdrv_co_create
67
68
Liang Li (1):
69
block/mirror: change the semantic of 'force' of block-job-cancel
70
71
Max Reitz (3):
72
vdi: Pull option parsing from vdi_co_create
73
vdi: Move file creation to vdi_co_create_opts
74
vdi: Implement .bdrv_co_create
75
76
Paolo Bonzini (1):
77
iscsi: fix iSER compilation
78
79
qapi/block-core.json | 363 ++++++++++++++++++++++++++++++++++++++++--
80
include/block/blockjob.h | 71 ++++++++-
81
include/block/blockjob_int.h | 17 +-
82
block.c | 10 +-
83
block/backup.c | 5 +-
84
block/commit.c | 2 +-
85
block/crypto.c | 150 ++++++++++++-----
86
block/iscsi.c | 2 +-
87
block/mirror.c | 12 +-
88
block/parallels.c | 199 +++++++++++++++++------
89
block/qcow.c | 196 +++++++++++++++--------
90
block/qed.c | 204 ++++++++++++++++--------
91
block/stream.c | 2 +-
92
block/vdi.c | 147 +++++++++++++----
93
block/vhdx.c | 216 +++++++++++++++++++------
94
block/vpc.c | 241 +++++++++++++++++++++-------
95
block/vvfat.c | 2 +-
96
blockdev.c | 71 +++++++--
97
blockjob.c | 358 +++++++++++++++++++++++++++++++++++------
98
tests/test-bdrv-drain.c | 5 +-
99
tests/test-blockjob-txn.c | 27 ++--
100
tests/test-blockjob.c | 233 ++++++++++++++++++++++++++-
101
block/trace-events | 7 +
102
hmp-commands.hx | 3 +-
103
tests/qemu-iotests/030 | 6 +-
104
tests/qemu-iotests/055 | 17 +-
105
tests/qemu-iotests/056 | 187 ++++++++++++++++++++++
106
tests/qemu-iotests/056.out | 4 +-
107
tests/qemu-iotests/109.out | 24 +--
108
tests/qemu-iotests/146.out | 2 +-
109
tests/qemu-iotests/153 | 12 ++
110
tests/qemu-iotests/153.out | 5 +
111
tests/qemu-iotests/181 | 2 +-
112
tests/qemu-iotests/210 | 210 ++++++++++++++++++++++++
113
tests/qemu-iotests/210.out | 136 ++++++++++++++++
114
tests/qemu-iotests/check | 13 +-
115
tests/qemu-iotests/common.rc | 2 +-
116
tests/qemu-iotests/group | 1 +
117
tests/qemu-iotests/iotests.py | 12 +-
118
39 files changed, 2652 insertions(+), 524 deletions(-)
119
create mode 100755 tests/qemu-iotests/210
120
create mode 100644 tests/qemu-iotests/210.out
121
diff view generated by jsdifflib
Deleted patch
1
Limiting each loop iteration of qemu-img map to 1 GB was arbitrary from
2
the beginning, though it only cut the maximum in half then because the
3
interface was a signed 32 bit byte count. These days, bdrv_block_status
4
supports a 64 bit byte count, so the arbitrary limit is even worse.
5
1
6
On file-posix, bdrv_block_status() eventually maps to SEEK_HOLE and
7
SEEK_DATA, which don't support a limit, but always do all of the work
8
necessary to find the start of the next hole/data. Much of this work may
9
be repeated if we don't use this information fully, but query with an
10
only slightly larger offset in the next loop iteration. Therefore, if
11
bdrv_block_status() is called in a loop, it should always pass the
12
full number of bytes that the whole loop is interested in.
13
14
This removes the arbitrary limit and speeds up 'qemu-img map'
15
significantly on heavily fragmented images.
16
17
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
18
Message-Id: <20200707144629.51235-1-kwolf@redhat.com>
19
Reviewed-by: Eric Blake <eblake@redhat.com>
20
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
21
---
22
qemu-img.c | 5 +----
23
1 file changed, 1 insertion(+), 4 deletions(-)
24
25
diff --git a/qemu-img.c b/qemu-img.c
26
index XXXXXXX..XXXXXXX 100644
27
--- a/qemu-img.c
28
+++ b/qemu-img.c
29
@@ -XXX,XX +XXX,XX @@ static int img_map(int argc, char **argv)
30
curr.start = start_offset;
31
while (curr.start + curr.length < length) {
32
int64_t offset = curr.start + curr.length;
33
- int64_t n;
34
+ int64_t n = length - offset;
35
36
- /* Probe up to 1 GiB at a time. */
37
- n = MIN(1 * GiB, length - offset);
38
ret = get_block_status(bs, offset, n, &next);
39
-
40
if (ret < 0) {
41
error_report("Could not read file metadata: %s", strerror(-ret));
42
goto out;
43
--
44
2.25.4
45
46
diff view generated by jsdifflib
Deleted patch
1
Especially when O_DIRECT is used with image files so that the page cache
2
indirection can't cause a merge of allocating requests, the file will
3
fragment on the file system layer, with a potentially very small
4
fragment size (this depends on the requests the guest sent).
5
1
6
On Linux, fragmentation can be reduced by setting an extent size hint
7
when creating the file (at least on XFS, it can't be set any more after
8
the first extent has been allocated), basically giving raw files a
9
"cluster size" for allocation.
10
11
This adds a create option to set the extent size hint, and changes the
12
default from not setting a hint to setting it to 1 MB. The main reason
13
why qcow2 defaults to smaller cluster sizes is that COW becomes more
14
expensive, which is not an issue with raw files, so we can choose a
15
larger size. The tradeoff here is only potentially wasted disk space.
16
17
For qcow2 (or other image formats) over file-posix, the advantage should
18
even be greater because they grow sequentially without leaving holes, so
19
there won't be wasted space. Setting even larger extent size hints for
20
such images may make sense. This can be done with the new option, but
21
let's keep the default conservative for now.
22
23
The effect is very visible with a test that intentionally creates a
24
badly fragmented file with qemu-img bench (the time difference while
25
creating the file is already remarkable) and then looks at the number of
26
extents and the time a simple "qemu-img map" takes.
27
28
Without an extent size hint:
29
30
$ ./qemu-img create -f raw -o extent_size_hint=0 ~/tmp/test.raw 10G
31
Formatting '/home/kwolf/tmp/test.raw', fmt=raw size=10737418240 extent_size_hint=0
32
$ ./qemu-img bench -f raw -t none -n -w ~/tmp/test.raw -c 1000000 -S 8192 -o 0
33
Sending 1000000 write requests, 4096 bytes each, 64 in parallel (starting at offset 0, step size 8192)
34
Run completed in 25.848 seconds.
35
$ ./qemu-img bench -f raw -t none -n -w ~/tmp/test.raw -c 1000000 -S 8192 -o 4096
36
Sending 1000000 write requests, 4096 bytes each, 64 in parallel (starting at offset 4096, step size 8192)
37
Run completed in 19.616 seconds.
38
$ filefrag ~/tmp/test.raw
39
/home/kwolf/tmp/test.raw: 2000000 extents found
40
$ time ./qemu-img map ~/tmp/test.raw
41
Offset Length Mapped to File
42
0 0x1e8480000 0 /home/kwolf/tmp/test.raw
43
44
real 0m1,279s
45
user 0m0,043s
46
sys 0m1,226s
47
48
With the new default extent size hint of 1 MB:
49
50
$ ./qemu-img create -f raw -o extent_size_hint=1M ~/tmp/test.raw 10G
51
Formatting '/home/kwolf/tmp/test.raw', fmt=raw size=10737418240 extent_size_hint=1048576
52
$ ./qemu-img bench -f raw -t none -n -w ~/tmp/test.raw -c 1000000 -S 8192 -o 0
53
Sending 1000000 write requests, 4096 bytes each, 64 in parallel (starting at offset 0, step size 8192)
54
Run completed in 11.833 seconds.
55
$ ./qemu-img bench -f raw -t none -n -w ~/tmp/test.raw -c 1000000 -S 8192 -o 4096
56
Sending 1000000 write requests, 4096 bytes each, 64 in parallel (starting at offset 4096, step size 8192)
57
Run completed in 10.155 seconds.
58
$ filefrag ~/tmp/test.raw
59
/home/kwolf/tmp/test.raw: 178 extents found
60
$ time ./qemu-img map ~/tmp/test.raw
61
Offset Length Mapped to File
62
0 0x1e8480000 0 /home/kwolf/tmp/test.raw
63
64
real 0m0,061s
65
user 0m0,040s
66
sys 0m0,014s
67
68
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
69
Message-Id: <20200707142329.48303-1-kwolf@redhat.com>
70
Reviewed-by: Eric Blake <eblake@redhat.com>
71
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
72
---
73
qapi/block-core.json | 11 ++++++----
74
include/block/block_int.h | 1 +
75
block/file-posix.c | 42 ++++++++++++++++++++++++++++++++++++++
76
tests/qemu-iotests/082.out | 16 +++++++++++++++
77
tests/qemu-iotests/243 | 7 ++++---
78
tests/qemu-iotests/243.out | 16 +++++++--------
79
6 files changed, 78 insertions(+), 15 deletions(-)
80
81
diff --git a/qapi/block-core.json b/qapi/block-core.json
82
index XXXXXXX..XXXXXXX 100644
83
--- a/qapi/block-core.json
84
+++ b/qapi/block-core.json
85
@@ -XXX,XX +XXX,XX @@
86
# falloc (if defined CONFIG_POSIX_FALLOCATE),
87
# full (if defined CONFIG_POSIX))
88
# @nocow: Turn off copy-on-write (valid only on btrfs; default: off)
89
+# @extent-size-hint: Extent size hint to add to the image file; 0 for not
90
+# adding an extent size hint (default: 1 MB, since 5.1)
91
#
92
# Since: 2.12
93
##
94
{ 'struct': 'BlockdevCreateOptionsFile',
95
- 'data': { 'filename': 'str',
96
- 'size': 'size',
97
- '*preallocation': 'PreallocMode',
98
- '*nocow': 'bool' } }
99
+ 'data': { 'filename': 'str',
100
+ 'size': 'size',
101
+ '*preallocation': 'PreallocMode',
102
+ '*nocow': 'bool',
103
+ '*extent-size-hint': 'size'} }
104
105
##
106
# @BlockdevCreateOptionsGluster:
107
diff --git a/include/block/block_int.h b/include/block/block_int.h
108
index XXXXXXX..XXXXXXX 100644
109
--- a/include/block/block_int.h
110
+++ b/include/block/block_int.h
111
@@ -XXX,XX +XXX,XX @@
112
#define BLOCK_OPT_ADAPTER_TYPE "adapter_type"
113
#define BLOCK_OPT_REDUNDANCY "redundancy"
114
#define BLOCK_OPT_NOCOW "nocow"
115
+#define BLOCK_OPT_EXTENT_SIZE_HINT "extent_size_hint"
116
#define BLOCK_OPT_OBJECT_SIZE "object_size"
117
#define BLOCK_OPT_REFCOUNT_BITS "refcount_bits"
118
#define BLOCK_OPT_DATA_FILE "data_file"
119
diff --git a/block/file-posix.c b/block/file-posix.c
120
index XXXXXXX..XXXXXXX 100644
121
--- a/block/file-posix.c
122
+++ b/block/file-posix.c
123
@@ -XXX,XX +XXX,XX @@
124
#include "block/block_int.h"
125
#include "qemu/module.h"
126
#include "qemu/option.h"
127
+#include "qemu/units.h"
128
#include "trace.h"
129
#include "block/thread-pool.h"
130
#include "qemu/iov.h"
131
@@ -XXX,XX +XXX,XX @@ raw_co_create(BlockdevCreateOptions *options, Error **errp)
132
if (!file_opts->has_preallocation) {
133
file_opts->preallocation = PREALLOC_MODE_OFF;
134
}
135
+ if (!file_opts->has_extent_size_hint) {
136
+ file_opts->extent_size_hint = 1 * MiB;
137
+ }
138
+ if (file_opts->extent_size_hint > UINT32_MAX) {
139
+ result = -EINVAL;
140
+ error_setg(errp, "Extent size hint is too large");
141
+ goto out;
142
+ }
143
144
/* Create file */
145
fd = qemu_open(file_opts->filename, O_RDWR | O_CREAT | O_BINARY, 0644);
146
@@ -XXX,XX +XXX,XX @@ raw_co_create(BlockdevCreateOptions *options, Error **errp)
147
}
148
#endif
149
}
150
+#ifdef FS_IOC_FSSETXATTR
151
+ /*
152
+ * Try to set the extent size hint. Failure is not fatal, and a warning is
153
+ * only printed if the option was explicitly specified.
154
+ */
155
+ {
156
+ struct fsxattr attr;
157
+ result = ioctl(fd, FS_IOC_FSGETXATTR, &attr);
158
+ if (result == 0) {
159
+ attr.fsx_xflags |= FS_XFLAG_EXTSIZE;
160
+ attr.fsx_extsize = file_opts->extent_size_hint;
161
+ result = ioctl(fd, FS_IOC_FSSETXATTR, &attr);
162
+ }
163
+ if (result < 0 && file_opts->has_extent_size_hint) {
164
+ warn_report("Failed to set extent size hint: %s",
165
+ strerror(errno));
166
+ }
167
+ }
168
+#endif
169
170
/* Resize and potentially preallocate the file to the desired
171
* final size */
172
@@ -XXX,XX +XXX,XX @@ static int coroutine_fn raw_co_create_opts(BlockDriver *drv,
173
{
174
BlockdevCreateOptions options;
175
int64_t total_size = 0;
176
+ int64_t extent_size_hint = 0;
177
+ bool has_extent_size_hint = false;
178
bool nocow = false;
179
PreallocMode prealloc;
180
char *buf = NULL;
181
@@ -XXX,XX +XXX,XX @@ static int coroutine_fn raw_co_create_opts(BlockDriver *drv,
182
/* Read out options */
183
total_size = ROUND_UP(qemu_opt_get_size_del(opts, BLOCK_OPT_SIZE, 0),
184
BDRV_SECTOR_SIZE);
185
+ if (qemu_opt_get(opts, BLOCK_OPT_EXTENT_SIZE_HINT)) {
186
+ has_extent_size_hint = true;
187
+ extent_size_hint =
188
+ qemu_opt_get_size_del(opts, BLOCK_OPT_EXTENT_SIZE_HINT, -1);
189
+ }
190
nocow = qemu_opt_get_bool(opts, BLOCK_OPT_NOCOW, false);
191
buf = qemu_opt_get_del(opts, BLOCK_OPT_PREALLOC);
192
prealloc = qapi_enum_parse(&PreallocMode_lookup, buf,
193
@@ -XXX,XX +XXX,XX @@ static int coroutine_fn raw_co_create_opts(BlockDriver *drv,
194
.preallocation = prealloc,
195
.has_nocow = true,
196
.nocow = nocow,
197
+ .has_extent_size_hint = has_extent_size_hint,
198
+ .extent_size_hint = extent_size_hint,
199
},
200
};
201
return raw_co_create(&options, errp);
202
@@ -XXX,XX +XXX,XX @@ static QemuOptsList raw_create_opts = {
203
#endif
204
", full)"
205
},
206
+ {
207
+ .name = BLOCK_OPT_EXTENT_SIZE_HINT,
208
+ .type = QEMU_OPT_SIZE,
209
+ .help = "Extent size hint for the image file, 0 to disable"
210
+ },
211
{ /* end of list */ }
212
}
213
};
214
diff --git a/tests/qemu-iotests/082.out b/tests/qemu-iotests/082.out
215
index XXXXXXX..XXXXXXX 100644
216
--- a/tests/qemu-iotests/082.out
217
+++ b/tests/qemu-iotests/082.out
218
@@ -XXX,XX +XXX,XX @@ Supported options:
219
encrypt.ivgen-hash-alg=<str> - Name of IV generator hash algorithm
220
encrypt.key-secret=<str> - ID of secret providing qcow AES key or LUKS passphrase
221
encryption=<bool (on/off)> - Encrypt the image with format 'aes'. (Deprecated in favor of encrypt.format=aes)
222
+ extent_size_hint=<size> - Extent size hint for the image file, 0 to disable
223
lazy_refcounts=<bool (on/off)> - Postpone refcount updates
224
nocow=<bool (on/off)> - Turn off copy-on-write (valid only on btrfs)
225
preallocation=<str> - Preallocation mode (allowed values: off, metadata, falloc, full)
226
@@ -XXX,XX +XXX,XX @@ Supported options:
227
encrypt.ivgen-hash-alg=<str> - Name of IV generator hash algorithm
228
encrypt.key-secret=<str> - ID of secret providing qcow AES key or LUKS passphrase
229
encryption=<bool (on/off)> - Encrypt the image with format 'aes'. (Deprecated in favor of encrypt.format=aes)
230
+ extent_size_hint=<size> - Extent size hint for the image file, 0 to disable
231
lazy_refcounts=<bool (on/off)> - Postpone refcount updates
232
nocow=<bool (on/off)> - Turn off copy-on-write (valid only on btrfs)
233
preallocation=<str> - Preallocation mode (allowed values: off, metadata, falloc, full)
234
@@ -XXX,XX +XXX,XX @@ Supported options:
235
encrypt.ivgen-hash-alg=<str> - Name of IV generator hash algorithm
236
encrypt.key-secret=<str> - ID of secret providing qcow AES key or LUKS passphrase
237
encryption=<bool (on/off)> - Encrypt the image with format 'aes'. (Deprecated in favor of encrypt.format=aes)
238
+ extent_size_hint=<size> - Extent size hint for the image file, 0 to disable
239
lazy_refcounts=<bool (on/off)> - Postpone refcount updates
240
nocow=<bool (on/off)> - Turn off copy-on-write (valid only on btrfs)
241
preallocation=<str> - Preallocation mode (allowed values: off, metadata, falloc, full)
242
@@ -XXX,XX +XXX,XX @@ Supported options:
243
encrypt.ivgen-hash-alg=<str> - Name of IV generator hash algorithm
244
encrypt.key-secret=<str> - ID of secret providing qcow AES key or LUKS passphrase
245
encryption=<bool (on/off)> - Encrypt the image with format 'aes'. (Deprecated in favor of encrypt.format=aes)
246
+ extent_size_hint=<size> - Extent size hint for the image file, 0 to disable
247
lazy_refcounts=<bool (on/off)> - Postpone refcount updates
248
nocow=<bool (on/off)> - Turn off copy-on-write (valid only on btrfs)
249
preallocation=<str> - Preallocation mode (allowed values: off, metadata, falloc, full)
250
@@ -XXX,XX +XXX,XX @@ Supported options:
251
encrypt.ivgen-hash-alg=<str> - Name of IV generator hash algorithm
252
encrypt.key-secret=<str> - ID of secret providing qcow AES key or LUKS passphrase
253
encryption=<bool (on/off)> - Encrypt the image with format 'aes'. (Deprecated in favor of encrypt.format=aes)
254
+ extent_size_hint=<size> - Extent size hint for the image file, 0 to disable
255
lazy_refcounts=<bool (on/off)> - Postpone refcount updates
256
nocow=<bool (on/off)> - Turn off copy-on-write (valid only on btrfs)
257
preallocation=<str> - Preallocation mode (allowed values: off, metadata, falloc, full)
258
@@ -XXX,XX +XXX,XX @@ Supported options:
259
encrypt.ivgen-hash-alg=<str> - Name of IV generator hash algorithm
260
encrypt.key-secret=<str> - ID of secret providing qcow AES key or LUKS passphrase
261
encryption=<bool (on/off)> - Encrypt the image with format 'aes'. (Deprecated in favor of encrypt.format=aes)
262
+ extent_size_hint=<size> - Extent size hint for the image file, 0 to disable
263
lazy_refcounts=<bool (on/off)> - Postpone refcount updates
264
nocow=<bool (on/off)> - Turn off copy-on-write (valid only on btrfs)
265
preallocation=<str> - Preallocation mode (allowed values: off, metadata, falloc, full)
266
@@ -XXX,XX +XXX,XX @@ Supported options:
267
encrypt.ivgen-hash-alg=<str> - Name of IV generator hash algorithm
268
encrypt.key-secret=<str> - ID of secret providing qcow AES key or LUKS passphrase
269
encryption=<bool (on/off)> - Encrypt the image with format 'aes'. (Deprecated in favor of encrypt.format=aes)
270
+ extent_size_hint=<size> - Extent size hint for the image file, 0 to disable
271
lazy_refcounts=<bool (on/off)> - Postpone refcount updates
272
nocow=<bool (on/off)> - Turn off copy-on-write (valid only on btrfs)
273
preallocation=<str> - Preallocation mode (allowed values: off, metadata, falloc, full)
274
@@ -XXX,XX +XXX,XX @@ Supported options:
275
encrypt.ivgen-hash-alg=<str> - Name of IV generator hash algorithm
276
encrypt.key-secret=<str> - ID of secret providing qcow AES key or LUKS passphrase
277
encryption=<bool (on/off)> - Encrypt the image with format 'aes'. (Deprecated in favor of encrypt.format=aes)
278
+ extent_size_hint=<size> - Extent size hint for the image file, 0 to disable
279
lazy_refcounts=<bool (on/off)> - Postpone refcount updates
280
nocow=<bool (on/off)> - Turn off copy-on-write (valid only on btrfs)
281
preallocation=<str> - Preallocation mode (allowed values: off, metadata, falloc, full)
282
@@ -XXX,XX +XXX,XX @@ Supported options:
283
encrypt.ivgen-hash-alg=<str> - Name of IV generator hash algorithm
284
encrypt.key-secret=<str> - ID of secret providing qcow AES key or LUKS passphrase
285
encryption=<bool (on/off)> - Encrypt the image with format 'aes'. (Deprecated in favor of encrypt.format=aes)
286
+ extent_size_hint=<size> - Extent size hint for the image file, 0 to disable
287
lazy_refcounts=<bool (on/off)> - Postpone refcount updates
288
nocow=<bool (on/off)> - Turn off copy-on-write (valid only on btrfs)
289
preallocation=<str> - Preallocation mode (allowed values: off, metadata, falloc, full)
290
@@ -XXX,XX +XXX,XX @@ Supported options:
291
encrypt.ivgen-hash-alg=<str> - Name of IV generator hash algorithm
292
encrypt.key-secret=<str> - ID of secret providing qcow AES key or LUKS passphrase
293
encryption=<bool (on/off)> - Encrypt the image with format 'aes'. (Deprecated in favor of encrypt.format=aes)
294
+ extent_size_hint=<size> - Extent size hint for the image file, 0 to disable
295
lazy_refcounts=<bool (on/off)> - Postpone refcount updates
296
nocow=<bool (on/off)> - Turn off copy-on-write (valid only on btrfs)
297
preallocation=<str> - Preallocation mode (allowed values: off, metadata, falloc, full)
298
@@ -XXX,XX +XXX,XX @@ Supported options:
299
encrypt.ivgen-hash-alg=<str> - Name of IV generator hash algorithm
300
encrypt.key-secret=<str> - ID of secret providing qcow AES key or LUKS passphrase
301
encryption=<bool (on/off)> - Encrypt the image with format 'aes'. (Deprecated in favor of encrypt.format=aes)
302
+ extent_size_hint=<size> - Extent size hint for the image file, 0 to disable
303
lazy_refcounts=<bool (on/off)> - Postpone refcount updates
304
nocow=<bool (on/off)> - Turn off copy-on-write (valid only on btrfs)
305
preallocation=<str> - Preallocation mode (allowed values: off, metadata, falloc, full)
306
@@ -XXX,XX +XXX,XX @@ Supported options:
307
encrypt.ivgen-hash-alg=<str> - Name of IV generator hash algorithm
308
encrypt.key-secret=<str> - ID of secret providing qcow AES key or LUKS passphrase
309
encryption=<bool (on/off)> - Encrypt the image with format 'aes'. (Deprecated in favor of encrypt.format=aes)
310
+ extent_size_hint=<size> - Extent size hint for the image file, 0 to disable
311
lazy_refcounts=<bool (on/off)> - Postpone refcount updates
312
nocow=<bool (on/off)> - Turn off copy-on-write (valid only on btrfs)
313
preallocation=<str> - Preallocation mode (allowed values: off, metadata, falloc, full)
314
@@ -XXX,XX +XXX,XX @@ Supported options:
315
encrypt.ivgen-hash-alg=<str> - Name of IV generator hash algorithm
316
encrypt.key-secret=<str> - ID of secret providing qcow AES key or LUKS passphrase
317
encryption=<bool (on/off)> - Encrypt the image with format 'aes'. (Deprecated in favor of encrypt.format=aes)
318
+ extent_size_hint=<size> - Extent size hint for the image file, 0 to disable
319
lazy_refcounts=<bool (on/off)> - Postpone refcount updates
320
nocow=<bool (on/off)> - Turn off copy-on-write (valid only on btrfs)
321
preallocation=<str> - Preallocation mode (allowed values: off, metadata, falloc, full)
322
@@ -XXX,XX +XXX,XX @@ Supported options:
323
encrypt.ivgen-hash-alg=<str> - Name of IV generator hash algorithm
324
encrypt.key-secret=<str> - ID of secret providing qcow AES key or LUKS passphrase
325
encryption=<bool (on/off)> - Encrypt the image with format 'aes'. (Deprecated in favor of encrypt.format=aes)
326
+ extent_size_hint=<size> - Extent size hint for the image file, 0 to disable
327
lazy_refcounts=<bool (on/off)> - Postpone refcount updates
328
nocow=<bool (on/off)> - Turn off copy-on-write (valid only on btrfs)
329
preallocation=<str> - Preallocation mode (allowed values: off, metadata, falloc, full)
330
@@ -XXX,XX +XXX,XX @@ Supported options:
331
encrypt.ivgen-hash-alg=<str> - Name of IV generator hash algorithm
332
encrypt.key-secret=<str> - ID of secret providing qcow AES key or LUKS passphrase
333
encryption=<bool (on/off)> - Encrypt the image with format 'aes'. (Deprecated in favor of encrypt.format=aes)
334
+ extent_size_hint=<size> - Extent size hint for the image file, 0 to disable
335
lazy_refcounts=<bool (on/off)> - Postpone refcount updates
336
nocow=<bool (on/off)> - Turn off copy-on-write (valid only on btrfs)
337
preallocation=<str> - Preallocation mode (allowed values: off, metadata, falloc, full)
338
@@ -XXX,XX +XXX,XX @@ Supported options:
339
encrypt.ivgen-hash-alg=<str> - Name of IV generator hash algorithm
340
encrypt.key-secret=<str> - ID of secret providing qcow AES key or LUKS passphrase
341
encryption=<bool (on/off)> - Encrypt the image with format 'aes'. (Deprecated in favor of encrypt.format=aes)
342
+ extent_size_hint=<size> - Extent size hint for the image file, 0 to disable
343
lazy_refcounts=<bool (on/off)> - Postpone refcount updates
344
nocow=<bool (on/off)> - Turn off copy-on-write (valid only on btrfs)
345
preallocation=<str> - Preallocation mode (allowed values: off, metadata, falloc, full)
346
diff --git a/tests/qemu-iotests/243 b/tests/qemu-iotests/243
347
index XXXXXXX..XXXXXXX 100755
348
--- a/tests/qemu-iotests/243
349
+++ b/tests/qemu-iotests/243
350
@@ -XXX,XX +XXX,XX @@ for mode in off metadata falloc full; do
351
echo "=== preallocation=$mode ==="
352
echo
353
354
- _make_test_img -o "preallocation=$mode" 64M
355
+ _make_test_img -o "preallocation=$mode,extent_size_hint=0" 64M
356
357
printf "File size: "
358
du -b $TEST_IMG | cut -f1
359
@@ -XXX,XX +XXX,XX @@ for mode in off metadata falloc full; do
360
echo "=== External data file: preallocation=$mode ==="
361
echo
362
363
- _make_test_img -o "data_file=$TEST_IMG.data,preallocation=$mode" 64M
364
+ _make_test_img \
365
+ -o "data_file=$TEST_IMG.data,preallocation=$mode,extent_size_hint=0" 64M
366
367
echo -n "qcow2 file size: "
368
du -b $TEST_IMG | cut -f1
369
@@ -XXX,XX +XXX,XX @@ for mode in off metadata falloc full; do
370
echo -n "qcow2 disk usage: "
371
[ $(du -B1 $TEST_IMG | cut -f1) -lt 1048576 ] && echo "low" || echo "high"
372
echo -n "data disk usage: "
373
- [ $(du -B1 $TEST_IMG.data | cut -f1) -lt 1048576 ] && echo "low" || echo "high"
374
+ [ $(du -B1 $TEST_IMG.data | cut -f1) -lt 2097152 ] && echo "low" || echo "high"
375
376
done
377
378
diff --git a/tests/qemu-iotests/243.out b/tests/qemu-iotests/243.out
379
index XXXXXXX..XXXXXXX 100644
380
--- a/tests/qemu-iotests/243.out
381
+++ b/tests/qemu-iotests/243.out
382
@@ -XXX,XX +XXX,XX @@ QA output created by 243
383
384
=== preallocation=off ===
385
386
-Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864 preallocation=off
387
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864 preallocation=off extent_size_hint=0
388
File size: 196616
389
Disk usage: low
390
391
=== preallocation=metadata ===
392
393
-Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864 preallocation=metadata
394
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864 preallocation=metadata extent_size_hint=0
395
File size: 67436544
396
Disk usage: low
397
398
=== preallocation=falloc ===
399
400
-Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864 preallocation=falloc
401
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864 preallocation=falloc extent_size_hint=0
402
File size: 67436544
403
Disk usage: high
404
405
=== preallocation=full ===
406
407
-Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864 preallocation=full
408
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864 preallocation=full extent_size_hint=0
409
File size: 67436544
410
Disk usage: high
411
412
=== External data file: preallocation=off ===
413
414
-Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864 data_file=TEST_DIR/t.IMGFMT.data preallocation=off
415
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864 data_file=TEST_DIR/t.IMGFMT.data preallocation=off extent_size_hint=0
416
qcow2 file size: 196616
417
data file size: 67108864
418
qcow2 disk usage: low
419
@@ -XXX,XX +XXX,XX @@ data disk usage: low
420
421
=== External data file: preallocation=metadata ===
422
423
-Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864 data_file=TEST_DIR/t.IMGFMT.data preallocation=metadata
424
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864 data_file=TEST_DIR/t.IMGFMT.data preallocation=metadata extent_size_hint=0
425
qcow2 file size: 327680
426
data file size: 67108864
427
qcow2 disk usage: low
428
@@ -XXX,XX +XXX,XX @@ data disk usage: low
429
430
=== External data file: preallocation=falloc ===
431
432
-Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864 data_file=TEST_DIR/t.IMGFMT.data preallocation=falloc
433
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864 data_file=TEST_DIR/t.IMGFMT.data preallocation=falloc extent_size_hint=0
434
qcow2 file size: 327680
435
data file size: 67108864
436
qcow2 disk usage: low
437
@@ -XXX,XX +XXX,XX @@ data disk usage: high
438
439
=== External data file: preallocation=full ===
440
441
-Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864 data_file=TEST_DIR/t.IMGFMT.data preallocation=full
442
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864 data_file=TEST_DIR/t.IMGFMT.data preallocation=full extent_size_hint=0
443
qcow2 file size: 327680
444
data file size: 67108864
445
qcow2 disk usage: low
446
--
447
2.25.4
448
449
diff view generated by jsdifflib
Deleted patch
1
From: Eric Blake <eblake@redhat.com>
2
1
3
During 'qemu-img create ... 2>&1', if --quiet is not in force, we can
4
end up with buffered I/O in stdout that was produced before failure,
5
but which appears in output after failure. This is confusing; the fix
6
is to flush stdout prior to attempting anything that might produce an
7
error message. Several iotests demonstrate the resulting ordering
8
change now that the merged outputs now reflect chronology. (An even
9
better fix would be to avoid printf from within block.c altogether,
10
but that's much more invasive...)
11
12
Signed-off-by: Eric Blake <eblake@redhat.com>
13
Message-Id: <20200706203954.341758-2-eblake@redhat.com>
14
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
15
---
16
block.c | 1 +
17
tests/qemu-iotests/049.out | 8 ++++----
18
tests/qemu-iotests/054.out | 2 +-
19
tests/qemu-iotests/079.out | 2 +-
20
tests/qemu-iotests/112.out | 4 ++--
21
tests/qemu-iotests/259.out | 2 +-
22
6 files changed, 10 insertions(+), 9 deletions(-)
23
24
diff --git a/block.c b/block.c
25
index XXXXXXX..XXXXXXX 100644
26
--- a/block.c
27
+++ b/block.c
28
@@ -XXX,XX +XXX,XX @@ void bdrv_img_create(const char *filename, const char *fmt,
29
printf("Formatting '%s', fmt=%s ", filename, fmt);
30
qemu_opts_print(opts, " ");
31
puts("");
32
+ fflush(stdout);
33
}
34
35
ret = bdrv_create(drv, filename, opts, &local_err);
36
diff --git a/tests/qemu-iotests/049.out b/tests/qemu-iotests/049.out
37
index XXXXXXX..XXXXXXX 100644
38
--- a/tests/qemu-iotests/049.out
39
+++ b/tests/qemu-iotests/049.out
40
@@ -XXX,XX +XXX,XX @@ qemu-img create -f qcow2 -o compat=1.1 TEST_DIR/t.qcow2 64M
41
Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 size=67108864 compat=1.1 cluster_size=65536 lazy_refcounts=off refcount_bits=16 compression_type=zlib
42
43
qemu-img create -f qcow2 -o compat=0.42 TEST_DIR/t.qcow2 64M
44
-qemu-img: TEST_DIR/t.qcow2: Invalid parameter '0.42'
45
Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 size=67108864 compat=0.42 cluster_size=65536 lazy_refcounts=off refcount_bits=16 compression_type=zlib
46
+qemu-img: TEST_DIR/t.qcow2: Invalid parameter '0.42'
47
48
qemu-img create -f qcow2 -o compat=foobar TEST_DIR/t.qcow2 64M
49
-qemu-img: TEST_DIR/t.qcow2: Invalid parameter 'foobar'
50
Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 size=67108864 compat=foobar cluster_size=65536 lazy_refcounts=off refcount_bits=16 compression_type=zlib
51
+qemu-img: TEST_DIR/t.qcow2: Invalid parameter 'foobar'
52
53
== Check preallocation option ==
54
55
@@ -XXX,XX +XXX,XX @@ qemu-img create -f qcow2 -o preallocation=metadata TEST_DIR/t.qcow2 64M
56
Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 size=67108864 cluster_size=65536 preallocation=metadata lazy_refcounts=off refcount_bits=16 compression_type=zlib
57
58
qemu-img create -f qcow2 -o preallocation=1234 TEST_DIR/t.qcow2 64M
59
-qemu-img: TEST_DIR/t.qcow2: Invalid parameter '1234'
60
Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 size=67108864 cluster_size=65536 preallocation=1234 lazy_refcounts=off refcount_bits=16 compression_type=zlib
61
+qemu-img: TEST_DIR/t.qcow2: Invalid parameter '1234'
62
63
== Check encryption option ==
64
65
@@ -XXX,XX +XXX,XX @@ qemu-img create -f qcow2 -o compat=0.10,lazy_refcounts=off TEST_DIR/t.qcow2 64M
66
Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 size=67108864 compat=0.10 cluster_size=65536 lazy_refcounts=off refcount_bits=16 compression_type=zlib
67
68
qemu-img create -f qcow2 -o compat=0.10,lazy_refcounts=on TEST_DIR/t.qcow2 64M
69
-qemu-img: TEST_DIR/t.qcow2: Lazy refcounts only supported with compatibility level 1.1 and above (use version=v3 or greater)
70
Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 size=67108864 compat=0.10 cluster_size=65536 lazy_refcounts=on refcount_bits=16 compression_type=zlib
71
+qemu-img: TEST_DIR/t.qcow2: Lazy refcounts only supported with compatibility level 1.1 and above (use version=v3 or greater)
72
73
*** done
74
diff --git a/tests/qemu-iotests/054.out b/tests/qemu-iotests/054.out
75
index XXXXXXX..XXXXXXX 100644
76
--- a/tests/qemu-iotests/054.out
77
+++ b/tests/qemu-iotests/054.out
78
@@ -XXX,XX +XXX,XX @@
79
QA output created by 054
80
81
creating too large image (1 EB)
82
-qemu-img: TEST_DIR/t.IMGFMT: The image size is too large for file format 'IMGFMT' (try using a larger cluster size)
83
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=1152921504606846976
84
+qemu-img: TEST_DIR/t.IMGFMT: The image size is too large for file format 'IMGFMT' (try using a larger cluster size)
85
86
creating too large image (1 EB) using qcow2.py
87
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=4294967296
88
diff --git a/tests/qemu-iotests/079.out b/tests/qemu-iotests/079.out
89
index XXXXXXX..XXXXXXX 100644
90
--- a/tests/qemu-iotests/079.out
91
+++ b/tests/qemu-iotests/079.out
92
@@ -XXX,XX +XXX,XX @@ Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=4294967296 preallocation=metadat
93
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=4294967296 preallocation=metadata
94
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=4294967296 preallocation=metadata
95
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=4294967296 preallocation=metadata
96
-qemu-img: TEST_DIR/t.IMGFMT: Cluster size must be a power of two between 512 and 2048k
97
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=4294967296 preallocation=metadata
98
+qemu-img: TEST_DIR/t.IMGFMT: Cluster size must be a power of two between 512 and 2048k
99
*** done
100
diff --git a/tests/qemu-iotests/112.out b/tests/qemu-iotests/112.out
101
index XXXXXXX..XXXXXXX 100644
102
--- a/tests/qemu-iotests/112.out
103
+++ b/tests/qemu-iotests/112.out
104
@@ -XXX,XX +XXX,XX @@ QA output created by 112
105
106
=== refcount_bits limits ===
107
108
-qemu-img: TEST_DIR/t.IMGFMT: Refcount width must be a power of two and may not exceed 64 bits
109
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864
110
qemu-img: TEST_DIR/t.IMGFMT: Refcount width must be a power of two and may not exceed 64 bits
111
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864 refcount_bits=-1
112
@@ -XXX,XX +XXX,XX @@ qemu-img: TEST_DIR/t.IMGFMT: Refcount width must be a power of two and may not e
113
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864
114
qemu-img: TEST_DIR/t.IMGFMT: Refcount width must be a power of two and may not exceed 64 bits
115
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864
116
+qemu-img: TEST_DIR/t.IMGFMT: Refcount width must be a power of two and may not exceed 64 bits
117
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864
118
refcount bits: 1
119
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864
120
@@ -XXX,XX +XXX,XX @@ refcount bits: 16
121
122
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864
123
refcount bits: 16
124
-qemu-img: TEST_DIR/t.IMGFMT: Different refcount widths than 16 bits require compatibility level 1.1 or above (use version=v3 or greater)
125
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864
126
qemu-img: TEST_DIR/t.IMGFMT: Different refcount widths than 16 bits require compatibility level 1.1 or above (use version=v3 or greater)
127
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864
128
+qemu-img: TEST_DIR/t.IMGFMT: Different refcount widths than 16 bits require compatibility level 1.1 or above (use version=v3 or greater)
129
130
=== Snapshot limit on refcount_bits=1 ===
131
132
diff --git a/tests/qemu-iotests/259.out b/tests/qemu-iotests/259.out
133
index XXXXXXX..XXXXXXX 100644
134
--- a/tests/qemu-iotests/259.out
135
+++ b/tests/qemu-iotests/259.out
136
@@ -XXX,XX +XXX,XX @@ virtual size: 64 MiB (67108864 bytes)
137
disk size: unavailable
138
139
--- Testing creation for which the node would need to grow ---
140
-qemu-img: TEST_DIR/t.IMGFMT: Could not resize image: Image format driver does not support resize
141
Formatting 'TEST_DIR/t.IMGFMT', fmt=qcow2 size=67108864 preallocation=metadata
142
+qemu-img: TEST_DIR/t.IMGFMT: Could not resize image: Image format driver does not support resize
143
*** done
144
--
145
2.25.4
146
147
diff view generated by jsdifflib
Deleted patch
1
From: Eric Blake <eblake@redhat.com>
2
1
3
It's been two releases since we started warning; time to make the
4
combination an error as promised. There was no iotest coverage, so
5
add some.
6
7
While touching the documentation, tweak another section heading for
8
consistent style.
9
10
Signed-off-by: Eric Blake <eblake@redhat.com>
11
Message-Id: <20200706203954.341758-3-eblake@redhat.com>
12
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
13
---
14
docs/system/deprecated.rst | 18 ++++++++----------
15
qemu-img.c | 4 ++--
16
tests/qemu-iotests/122 | 7 +++++++
17
tests/qemu-iotests/122.out | 4 ++++
18
4 files changed, 21 insertions(+), 12 deletions(-)
19
20
diff --git a/docs/system/deprecated.rst b/docs/system/deprecated.rst
21
index XXXXXXX..XXXXXXX 100644
22
--- a/docs/system/deprecated.rst
23
+++ b/docs/system/deprecated.rst
24
@@ -XXX,XX +XXX,XX @@ kernel in 2018, and has also been dropped from glibc.
25
Related binaries
26
----------------
27
28
-``qemu-img convert -n -o`` (since 4.2.0)
29
-''''''''''''''''''''''''''''''''''''''''
30
-
31
-All options specified in ``-o`` are image creation options, so
32
-they have no effect when used with ``-n`` to skip image creation.
33
-Silently ignored options can be confusing, so this combination of
34
-options will be made an error in future versions.
35
-
36
Backwards compatibility
37
-----------------------
38
39
@@ -XXX,XX +XXX,XX @@ spec you can use the ``-cpu rv64gcsu,priv_spec=v1.10.0`` command line argument.
40
Related binaries
41
----------------
42
43
-``qemu-nbd --partition`` (removed in 5.0.0)
44
-'''''''''''''''''''''''''''''''''''''''''''
45
+``qemu-nbd --partition`` (removed in 5.0)
46
+'''''''''''''''''''''''''''''''''''''''''
47
48
The ``qemu-nbd --partition $digit`` code (also spelled ``-P``)
49
could only handle MBR partitions, and never correctly handled logical
50
@@ -XXX,XX +XXX,XX @@ can be rewritten as::
51
52
qemu-nbd -t --image-opts driver=raw,offset=1M,size=100M,file.driver=qcow2,file.file.driver=file,file.file.filename=file.qcow2
53
54
+``qemu-img convert -n -o`` (removed in 5.1)
55
+'''''''''''''''''''''''''''''''''''''''''''
56
+
57
+All options specified in ``-o`` are image creation options, so
58
+they are now rejected when used with ``-n`` to skip image creation.
59
+
60
Command line options
61
--------------------
62
63
diff --git a/qemu-img.c b/qemu-img.c
64
index XXXXXXX..XXXXXXX 100644
65
--- a/qemu-img.c
66
+++ b/qemu-img.c
67
@@ -XXX,XX +XXX,XX @@ static int img_convert(int argc, char **argv)
68
}
69
70
if (skip_create && options) {
71
- warn_report("-o has no effect when skipping image creation");
72
- warn_report("This will become an error in future QEMU versions.");
73
+ error_report("-o has no effect when skipping image creation");
74
+ goto fail_getopt;
75
}
76
77
if (s.has_zero_init && !skip_create) {
78
diff --git a/tests/qemu-iotests/122 b/tests/qemu-iotests/122
79
index XXXXXXX..XXXXXXX 100755
80
--- a/tests/qemu-iotests/122
81
+++ b/tests/qemu-iotests/122
82
@@ -XXX,XX +XXX,XX @@ TEST_IMG="$TEST_IMG".orig _make_test_img 64M
83
# backing file"
84
$QEMU_IMG convert -O $IMGFMT -B "$TEST_IMG".base -n "$TEST_IMG" "$TEST_IMG".orig
85
86
+echo
87
+echo '=== -n incompatible with -o ==='
88
+echo
89
+
90
+$QEMU_IMG convert -O $IMGFMT -o preallocation=metadata -n \
91
+     "$TEST_IMG" "$TEST_IMG".orig && echo "unexpected success"
92
+
93
# success, all done
94
echo '*** done'
95
rm -f $seq.full
96
diff --git a/tests/qemu-iotests/122.out b/tests/qemu-iotests/122.out
97
index XXXXXXX..XXXXXXX 100644
98
--- a/tests/qemu-iotests/122.out
99
+++ b/tests/qemu-iotests/122.out
100
@@ -XXX,XX +XXX,XX @@ Images are identical.
101
102
Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=67108864
103
Formatting 'TEST_DIR/t.IMGFMT.orig', fmt=IMGFMT size=67108864
104
+
105
+=== -n incompatible with -o ===
106
+
107
+qemu-img: -o has no effect when skipping image creation
108
*** done
109
--
110
2.25.4
111
112
diff view generated by jsdifflib
Deleted patch
1
From: Eric Blake <eblake@redhat.com>
2
1
3
Sheepdog already requires that if backing_file is present, that it be
4
another sheepdog image (see sd_co_create). Meanwhile, we want to move
5
towards always being explicit about the backing format for other
6
drivers where it matters. So for convenience, make qemu-img create -F
7
sheepdog work, while rejecting all other explicit formats (note that
8
this is only for QemuOpts usage; there is no change to the QAPI to
9
allow a format through -blockdev).
10
11
Signed-off-by: Eric Blake <eblake@redhat.com>
12
Message-Id: <20200706203954.341758-4-eblake@redhat.com>
13
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
14
---
15
block/sheepdog.c | 18 ++++++++++++++++--
16
1 file changed, 16 insertions(+), 2 deletions(-)
17
18
diff --git a/block/sheepdog.c b/block/sheepdog.c
19
index XXXXXXX..XXXXXXX 100644
20
--- a/block/sheepdog.c
21
+++ b/block/sheepdog.c
22
@@ -XXX,XX +XXX,XX @@ static int coroutine_fn sd_co_create_opts(BlockDriver *drv,
23
Error **errp)
24
{
25
BlockdevCreateOptions *create_options = NULL;
26
- QDict *qdict, *location_qdict;
27
+ QDict *qdict = NULL, *location_qdict;
28
Visitor *v;
29
- char *redundancy;
30
+ char *redundancy = NULL;
31
Error *local_err = NULL;
32
int ret;
33
+ char *backing_fmt = NULL;
34
35
redundancy = qemu_opt_get_del(opts, BLOCK_OPT_REDUNDANCY);
36
+ backing_fmt = qemu_opt_get_del(opts, BLOCK_OPT_BACKING_FMT);
37
+
38
+ if (backing_fmt && strcmp(backing_fmt, "sheepdog") != 0) {
39
+ error_setg(errp, "backing_file must be a sheepdog image");
40
+ ret = -EINVAL;
41
+ goto fail;
42
+ }
43
44
qdict = qemu_opts_to_qdict(opts, NULL);
45
qdict_put_str(qdict, "driver", "sheepdog");
46
@@ -XXX,XX +XXX,XX @@ fail:
47
qapi_free_BlockdevCreateOptions(create_options);
48
qobject_unref(qdict);
49
g_free(redundancy);
50
+ g_free(backing_fmt);
51
return ret;
52
}
53
54
@@ -XXX,XX +XXX,XX @@ static QemuOptsList sd_create_opts = {
55
.type = QEMU_OPT_STRING,
56
.help = "File name of a base image"
57
},
58
+ {
59
+ .name = BLOCK_OPT_BACKING_FMT,
60
+ .type = QEMU_OPT_STRING,
61
+ .help = "Must be 'sheepdog' if present",
62
+ },
63
{
64
.name = BLOCK_OPT_PREALLOC,
65
.type = QEMU_OPT_STRING,
66
--
67
2.25.4
68
69
diff view generated by jsdifflib
Deleted patch
1
From: Eric Blake <eblake@redhat.com>
2
1
3
vmdk already requires that if backing_file is present, that it be
4
another vmdk image (see vmdk_co_do_create). Meanwhile, we want to
5
move towards always being explicit about the backing format for other
6
drivers where it matters. So for convenience, make qemu-img create -F
7
vmdk work, while rejecting all other explicit formats (note that this
8
is only for QemuOpts usage; there is no change to the QAPI to allow a
9
format through -blockdev).
10
11
Signed-off-by: Eric Blake <eblake@redhat.com>
12
Message-Id: <20200706203954.341758-5-eblake@redhat.com>
13
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
14
---
15
block/vmdk.c | 14 ++++++++++++++
16
1 file changed, 14 insertions(+)
17
18
diff --git a/block/vmdk.c b/block/vmdk.c
19
index XXXXXXX..XXXXXXX 100644
20
--- a/block/vmdk.c
21
+++ b/block/vmdk.c
22
@@ -XXX,XX +XXX,XX @@ static int coroutine_fn vmdk_co_create_opts(BlockDriver *drv,
23
bool zeroed_grain;
24
bool compat6;
25
VMDKCreateOptsData data;
26
+ char *backing_fmt = NULL;
27
+
28
+ backing_fmt = qemu_opt_get_del(opts, BLOCK_OPT_BACKING_FMT);
29
+ if (backing_fmt && strcmp(backing_fmt, "vmdk") != 0) {
30
+ error_setg(errp, "backing_file must be a vmdk image");
31
+ ret = -EINVAL;
32
+ goto exit;
33
+ }
34
35
if (filename_decompose(filename, path, prefix, postfix, PATH_MAX, errp)) {
36
ret = -EINVAL;
37
@@ -XXX,XX +XXX,XX @@ static int coroutine_fn vmdk_co_create_opts(BlockDriver *drv,
38
vmdk_co_create_opts_cb, &data, errp);
39
40
exit:
41
+ g_free(backing_fmt);
42
g_free(adapter_type);
43
g_free(backing_file);
44
g_free(hw_version);
45
@@ -XXX,XX +XXX,XX @@ static QemuOptsList vmdk_create_opts = {
46
.type = QEMU_OPT_STRING,
47
.help = "File name of a base image"
48
},
49
+ {
50
+ .name = BLOCK_OPT_BACKING_FMT,
51
+ .type = QEMU_OPT_STRING,
52
+ .help = "Must be 'vmdk' if present",
53
+ },
54
{
55
.name = BLOCK_OPT_COMPAT6,
56
.type = QEMU_OPT_BOOL,
57
--
58
2.25.4
59
60
diff view generated by jsdifflib
Deleted patch
1
From: Eric Blake <eblake@redhat.com>
2
1
3
qcow has no space in the metadata to store a backing format, and there
4
are existing qcow images backed both by raw or by other formats
5
(usually qcow) images, reliant on probing to tell the difference. On
6
the bright side, because we probe every time, raw files are marked as
7
probed and we thus forbid a commit action into the backing file where
8
guest-controlled contents could change the result of the probe next
9
time around (the iotest added here proves that).
10
11
Still, allowing the user to specify the backing format during
12
creation, even if we can't record it, is a good thing. This patch
13
blindly allows any value that resolves to a known driver, even if the
14
user's request is a mismatch from what probing finds; then the next
15
patch will further enhance things to verify that the user's request
16
matches what we actually probe. With this and the next patch in
17
place, we will finally be ready to deprecate the creation of images
18
where a backing format was not explicitly specified by the user.
19
20
Note that this is only for QemuOpts usage; there is no change to the
21
QAPI to allow a format through -blockdev.
22
23
Add a new iotest 293 just for qcow, to demonstrate the latest
24
behavior, and to make it easier to show the improvements made in the
25
next patch.
26
27
Signed-off-by: Eric Blake <eblake@redhat.com>
28
Message-Id: <20200706203954.341758-6-eblake@redhat.com>
29
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
30
---
31
block/qcow.c | 20 ++++++++-
32
tests/qemu-iotests/293 | 88 ++++++++++++++++++++++++++++++++++++++
33
tests/qemu-iotests/293.out | 60 ++++++++++++++++++++++++++
34
tests/qemu-iotests/group | 1 +
35
4 files changed, 168 insertions(+), 1 deletion(-)
36
create mode 100755 tests/qemu-iotests/293
37
create mode 100644 tests/qemu-iotests/293.out
38
39
diff --git a/block/qcow.c b/block/qcow.c
40
index XXXXXXX..XXXXXXX 100644
41
--- a/block/qcow.c
42
+++ b/block/qcow.c
43
@@ -XXX,XX +XXX,XX @@ static int coroutine_fn qcow_co_create_opts(BlockDriver *drv,
44
{
45
BlockdevCreateOptions *create_options = NULL;
46
BlockDriverState *bs = NULL;
47
- QDict *qdict;
48
+ QDict *qdict = NULL;
49
Visitor *v;
50
const char *val;
51
Error *local_err = NULL;
52
int ret;
53
+ char *backing_fmt;
54
55
static const QDictRenames opt_renames[] = {
56
{ BLOCK_OPT_BACKING_FILE, "backing-file" },
57
@@ -XXX,XX +XXX,XX @@ static int coroutine_fn qcow_co_create_opts(BlockDriver *drv,
58
{ NULL, NULL },
59
};
60
61
+ /*
62
+ * We can't actually store a backing format, but can check that
63
+ * the user's request made sense.
64
+ */
65
+ backing_fmt = qemu_opt_get_del(opts, BLOCK_OPT_BACKING_FMT);
66
+ if (backing_fmt && !bdrv_find_format(backing_fmt)) {
67
+ error_setg(errp, "unrecognized backing format '%s'", backing_fmt);
68
+ ret = -EINVAL;
69
+ goto fail;
70
+ }
71
+
72
/* Parse options and convert legacy syntax */
73
qdict = qemu_opts_to_qdict_filtered(opts, NULL, &qcow_create_opts, true);
74
75
@@ -XXX,XX +XXX,XX @@ static int coroutine_fn qcow_co_create_opts(BlockDriver *drv,
76
77
ret = 0;
78
fail:
79
+ g_free(backing_fmt);
80
qobject_unref(qdict);
81
bdrv_unref(bs);
82
qapi_free_BlockdevCreateOptions(create_options);
83
@@ -XXX,XX +XXX,XX @@ static QemuOptsList qcow_create_opts = {
84
.type = QEMU_OPT_STRING,
85
.help = "File name of a base image"
86
},
87
+ {
88
+ .name = BLOCK_OPT_BACKING_FMT,
89
+ .type = QEMU_OPT_STRING,
90
+ .help = "Format of the backing image",
91
+ },
92
{
93
.name = BLOCK_OPT_ENCRYPT,
94
.type = QEMU_OPT_BOOL,
95
diff --git a/tests/qemu-iotests/293 b/tests/qemu-iotests/293
96
new file mode 100755
97
index XXXXXXX..XXXXXXX
98
--- /dev/null
99
+++ b/tests/qemu-iotests/293
100
@@ -XXX,XX +XXX,XX @@
101
+#!/usr/bin/env bash
102
+#
103
+# Test qcow backing file warnings
104
+#
105
+# Copyright (C) 2020 Red Hat, Inc.
106
+#
107
+# This program is free software; you can redistribute it and/or modify
108
+# it under the terms of the GNU General Public License as published by
109
+# the Free Software Foundation; either version 2 of the License, or
110
+# (at your option) any later version.
111
+#
112
+# This program is distributed in the hope that it will be useful,
113
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
114
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
115
+# GNU General Public License for more details.
116
+#
117
+# You should have received a copy of the GNU General Public License
118
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
119
+#
120
+
121
+seq=`basename $0`
122
+echo "QA output created by $seq"
123
+
124
+status=1 # failure is the default!
125
+
126
+_cleanup()
127
+{
128
+ _cleanup_test_img
129
+ _rm_test_img "$TEST_IMG.qcow2"
130
+}
131
+trap "_cleanup; exit \$status" 0 1 2 3 15
132
+
133
+# get standard environment, filters and checks
134
+. ./common.rc
135
+. ./common.filter
136
+
137
+_supported_fmt qcow
138
+_supported_proto file
139
+_supported_os Linux
140
+
141
+size=32M
142
+
143
+echo
144
+echo "== qcow backed by qcow =="
145
+
146
+TEST_IMG="$TEST_IMG.base" _make_test_img $size
147
+_make_test_img -b "$TEST_IMG.base" $size
148
+_img_info
149
+_make_test_img -b "$TEST_IMG.base" -F $IMGFMT $size
150
+_img_info
151
+
152
+echo
153
+echo "== mismatched command line detection =="
154
+
155
+_make_test_img -b "$TEST_IMG.base" -F vmdk
156
+_make_test_img -b "$TEST_IMG.base" -F vmdk $size
157
+echo
158
+# Use of -u bypasses the backing format sanity check
159
+_make_test_img -u -b "$TEST_IMG.base" -F vmdk
160
+_make_test_img -u -b "$TEST_IMG.base" -F vmdk $size
161
+echo
162
+# But the format must still be recognized
163
+_make_test_img -b "$TEST_IMG.base" -F garbage $size
164
+_make_test_img -u -b "$TEST_IMG.base" -F garbage $size
165
+_img_info
166
+
167
+echo
168
+echo "== qcow backed by raw =="
169
+
170
+rm "$TEST_IMG.base"
171
+truncate --size=$size "$TEST_IMG.base"
172
+_make_test_img -b "$TEST_IMG.base" $size
173
+_img_info
174
+_make_test_img -b "$TEST_IMG.base" -F raw $size
175
+_img_info
176
+
177
+echo
178
+echo "== commit cannot change type of raw backing file =="
179
+TEST_IMG="$TEST_IMG.qcow2" IMGFMT=qcow2 _make_test_img $size
180
+truncate --size=$size "$TEST_IMG.qcow2"
181
+$QEMU_IMG convert -n -f raw -O $IMGFMT "$TEST_IMG.qcow2" "$TEST_IMG"
182
+$QEMU_IMG commit -f $IMGFMT "$TEST_IMG" && echo "unexpected success"
183
+TEST_IMG="$TEST_IMG.base" _img_info
184
+
185
+# success, all done
186
+echo "*** done"
187
+rm -f $seq.full
188
+status=0
189
diff --git a/tests/qemu-iotests/293.out b/tests/qemu-iotests/293.out
190
new file mode 100644
191
index XXXXXXX..XXXXXXX
192
--- /dev/null
193
+++ b/tests/qemu-iotests/293.out
194
@@ -XXX,XX +XXX,XX @@
195
+QA output created by 293
196
+
197
+== qcow backed by qcow ==
198
+Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=33554432
199
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=33554432 backing_file=TEST_DIR/t.IMGFMT.base
200
+image: TEST_DIR/t.IMGFMT
201
+file format: IMGFMT
202
+virtual size: 32 MiB (33554432 bytes)
203
+cluster_size: 512
204
+backing file: TEST_DIR/t.IMGFMT.base
205
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=33554432 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
206
+image: TEST_DIR/t.IMGFMT
207
+file format: IMGFMT
208
+virtual size: 32 MiB (33554432 bytes)
209
+cluster_size: 512
210
+backing file: TEST_DIR/t.IMGFMT.base
211
+
212
+== mismatched command line detection ==
213
+qemu-img: TEST_DIR/t.IMGFMT: invalid VMDK image descriptor
214
+Could not open backing image to determine size.
215
+qemu-img: warning: Could not verify backing image. This may become an error in future versions.
216
+invalid VMDK image descriptor
217
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=33554432 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=vmdk
218
+
219
+qemu-img: TEST_DIR/t.IMGFMT: Image creation needs a size parameter
220
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=33554432 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=vmdk
221
+
222
+qemu-img: warning: Could not verify backing image. This may become an error in future versions.
223
+Unknown driver 'garbage'
224
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=33554432 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=garbage
225
+qemu-img: TEST_DIR/t.IMGFMT: unrecognized backing format 'garbage'
226
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=33554432 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=garbage
227
+qemu-img: TEST_DIR/t.IMGFMT: unrecognized backing format 'garbage'
228
+image: TEST_DIR/t.IMGFMT
229
+file format: IMGFMT
230
+virtual size: 32 MiB (33554432 bytes)
231
+cluster_size: 512
232
+backing file: TEST_DIR/t.IMGFMT.base
233
+
234
+== qcow backed by raw ==
235
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=33554432 backing_file=TEST_DIR/t.IMGFMT.base
236
+image: TEST_DIR/t.IMGFMT
237
+file format: IMGFMT
238
+virtual size: 32 MiB (33554432 bytes)
239
+cluster_size: 512
240
+backing file: TEST_DIR/t.IMGFMT.base
241
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=33554432 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=raw
242
+image: TEST_DIR/t.IMGFMT
243
+file format: IMGFMT
244
+virtual size: 32 MiB (33554432 bytes)
245
+cluster_size: 512
246
+backing file: TEST_DIR/t.IMGFMT.base
247
+
248
+== commit cannot change type of raw backing file ==
249
+Formatting 'TEST_DIR/t.qcow.IMGFMT', fmt=IMGFMT size=33554432
250
+qemu-img: Block job failed: Operation not permitted
251
+image: TEST_DIR/t.IMGFMT.base
252
+file format: raw
253
+virtual size: 32 MiB (33554432 bytes)
254
+*** done
255
diff --git a/tests/qemu-iotests/group b/tests/qemu-iotests/group
256
index XXXXXXX..XXXXXXX 100644
257
--- a/tests/qemu-iotests/group
258
+++ b/tests/qemu-iotests/group
259
@@ -XXX,XX +XXX,XX @@
260
290 rw auto quick
261
291 rw quick
262
292 rw auto quick
263
+293 backing quick
264
297 meta
265
--
266
2.25.4
267
268
diff view generated by jsdifflib
Deleted patch
1
From: Eric Blake <eblake@redhat.com>
2
1
3
Back in commit 6e6e55f5 (Jul 2017, v2.10), we tweaked the code to warn
4
if the backing file could not be opened but the user gave a size,
5
unless the user also passes the -u option to bypass the open of the
6
backing file. As one common reason for failure to open the backing
7
file is when there is mismatch in the requested backing format in
8
relation to what the backing file actually contains, we actually want
9
to open the backing file and ensure that it has the right format in as
10
many cases as possible. iotest 293 for qcow demonstrates how
11
detecting explicit format mismatch is useful to prevent the creation
12
of an image that would probe differently than the user requested. Now
13
is the time to finally turn the warning an error, as promised.
14
15
Note that the original warning was added prior to our documentation of
16
an official deprecation policy (eb22aeca, also Jul 2017), and because
17
the warning didn't mention the word "deprecated", we never actually
18
remembered to document it as such. But the warning has been around
19
long enough that I don't see prolonging it another two releases.
20
21
Signed-off-by: Eric Blake <eblake@redhat.com>
22
Message-Id: <20200706203954.341758-7-eblake@redhat.com>
23
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
24
---
25
docs/system/deprecated.rst | 12 ++++++++++++
26
block.c | 12 ++----------
27
tests/qemu-iotests/111.out | 2 +-
28
tests/qemu-iotests/293.out | 13 +++++--------
29
4 files changed, 20 insertions(+), 19 deletions(-)
30
31
diff --git a/docs/system/deprecated.rst b/docs/system/deprecated.rst
32
index XXXXXXX..XXXXXXX 100644
33
--- a/docs/system/deprecated.rst
34
+++ b/docs/system/deprecated.rst
35
@@ -XXX,XX +XXX,XX @@ can be rewritten as::
36
All options specified in ``-o`` are image creation options, so
37
they are now rejected when used with ``-n`` to skip image creation.
38
39
+
40
+``qemu-img create -b bad file $size`` (removed in 5.1)
41
+''''''''''''''''''''''''''''''''''''''''''''''''''''''
42
+
43
+When creating an image with a backing file that could not be opened,
44
+``qemu-img create`` used to issue a warning about the failure but
45
+proceed with the image creation if an explicit size was provided.
46
+However, as the ``-u`` option exists for this purpose, it is safer to
47
+enforce that any failure to open the backing image (including if the
48
+backing file is missing or an incorrect format was specified) is an
49
+error when ``-u`` is not used.
50
+
51
Command line options
52
--------------------
53
54
diff --git a/block.c b/block.c
55
index XXXXXXX..XXXXXXX 100644
56
--- a/block.c
57
+++ b/block.c
58
@@ -XXX,XX +XXX,XX @@ void bdrv_img_create(const char *filename, const char *fmt,
59
bs = bdrv_open(full_backing, NULL, backing_options, back_flags,
60
&local_err);
61
g_free(full_backing);
62
- if (!bs && size != -1) {
63
- /* Couldn't open BS, but we have a size, so it's nonfatal */
64
- warn_reportf_err(local_err,
65
- "Could not verify backing image. "
66
- "This may become an error in future versions.\n");
67
- local_err = NULL;
68
- } else if (!bs) {
69
- /* Couldn't open bs, do not have size */
70
- error_append_hint(&local_err,
71
- "Could not open backing image to determine size.\n");
72
+ if (!bs) {
73
+ error_append_hint(&local_err, "Could not open backing image.\n");
74
goto out;
75
} else {
76
if (size == -1) {
77
diff --git a/tests/qemu-iotests/111.out b/tests/qemu-iotests/111.out
78
index XXXXXXX..XXXXXXX 100644
79
--- a/tests/qemu-iotests/111.out
80
+++ b/tests/qemu-iotests/111.out
81
@@ -XXX,XX +XXX,XX @@
82
QA output created by 111
83
qemu-img: TEST_DIR/t.IMGFMT: Could not open 'TEST_DIR/t.IMGFMT.inexistent': No such file or directory
84
-Could not open backing image to determine size.
85
+Could not open backing image.
86
*** done
87
diff --git a/tests/qemu-iotests/293.out b/tests/qemu-iotests/293.out
88
index XXXXXXX..XXXXXXX 100644
89
--- a/tests/qemu-iotests/293.out
90
+++ b/tests/qemu-iotests/293.out
91
@@ -XXX,XX +XXX,XX @@ backing file: TEST_DIR/t.IMGFMT.base
92
93
== mismatched command line detection ==
94
qemu-img: TEST_DIR/t.IMGFMT: invalid VMDK image descriptor
95
-Could not open backing image to determine size.
96
-qemu-img: warning: Could not verify backing image. This may become an error in future versions.
97
-invalid VMDK image descriptor
98
-Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=33554432 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=vmdk
99
+Could not open backing image.
100
+qemu-img: TEST_DIR/t.IMGFMT: invalid VMDK image descriptor
101
+Could not open backing image.
102
103
qemu-img: TEST_DIR/t.IMGFMT: Image creation needs a size parameter
104
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=33554432 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=vmdk
105
106
-qemu-img: warning: Could not verify backing image. This may become an error in future versions.
107
-Unknown driver 'garbage'
108
-Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=33554432 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=garbage
109
-qemu-img: TEST_DIR/t.IMGFMT: unrecognized backing format 'garbage'
110
+qemu-img: TEST_DIR/t.IMGFMT: Unknown driver 'garbage'
111
+Could not open backing image.
112
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=33554432 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=garbage
113
qemu-img: TEST_DIR/t.IMGFMT: unrecognized backing format 'garbage'
114
image: TEST_DIR/t.IMGFMT
115
--
116
2.25.4
117
118
diff view generated by jsdifflib
Deleted patch
1
From: Eric Blake <eblake@redhat.com>
2
1
3
The use of 'qemu-img amend' to change qcow2 backing files is not
4
tested very well. In particular, our implementation has a bug where
5
if a new backing file is provided without a format, then the prior
6
format is blindly reused, even if this results in data corruption, but
7
this is not caught by iotests.
8
9
There are also situations where amending other options needs access to
10
the original backing file (for example, on a downgrade to a v2 image,
11
knowing whether a v3 zero cluster must be allocated or may be left
12
unallocated depends on knowing whether the backing file already reads
13
as zero), but the command line does not have a nice way to tell us
14
both the backing file to use for opening the image as well as the
15
backing file to install after the operation is complete.
16
17
Even if we do allow changing the backing file, it is redundant with
18
the existing ability to change backing files via 'qemu-img rebase -u'.
19
It is time to deprecate this support (leaving the existing behavior
20
intact, even if it is buggy), and at a point in the future, require
21
the use of only 'qemu-img rebase' for adjusting backing chain
22
relations, saving 'qemu-img amend' for changes unrelated to the
23
backing chain.
24
25
Signed-off-by: Eric Blake <eblake@redhat.com>
26
Message-Id: <20200706203954.341758-8-eblake@redhat.com>
27
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
28
---
29
docs/system/deprecated.rst | 12 ++++++++++++
30
docs/tools/qemu-img.rst | 4 ++++
31
block/qcow2.c | 5 +++++
32
tests/qemu-iotests/061.out | 1 +
33
tests/qemu-iotests/082.out | 2 ++
34
5 files changed, 24 insertions(+)
35
36
diff --git a/docs/system/deprecated.rst b/docs/system/deprecated.rst
37
index XXXXXXX..XXXXXXX 100644
38
--- a/docs/system/deprecated.rst
39
+++ b/docs/system/deprecated.rst
40
@@ -XXX,XX +XXX,XX @@ kernel in 2018, and has also been dropped from glibc.
41
Related binaries
42
----------------
43
44
+qemu-img amend to adjust backing file (since 5.1)
45
+'''''''''''''''''''''''''''''''''''''''''''''''''
46
+
47
+The use of ``qemu-img amend`` to modify the name or format of a qcow2
48
+backing image is deprecated; this functionality was never fully
49
+documented or tested, and interferes with other amend operations that
50
+need access to the original backing image (such as deciding whether a
51
+v3 zero cluster may be left unallocated when converting to a v2
52
+image). Rather, any changes to the backing chain should be performed
53
+with ``qemu-img rebase -u`` either before or after the remaining
54
+changes being performed by amend, as appropriate.
55
+
56
Backwards compatibility
57
-----------------------
58
59
diff --git a/docs/tools/qemu-img.rst b/docs/tools/qemu-img.rst
60
index XXXXXXX..XXXXXXX 100644
61
--- a/docs/tools/qemu-img.rst
62
+++ b/docs/tools/qemu-img.rst
63
@@ -XXX,XX +XXX,XX @@ Command description:
64
Amends the image format specific *OPTIONS* for the image file
65
*FILENAME*. Not all file formats support this operation.
66
67
+ The set of options that can be amended are dependent on the image
68
+ format, but note that amending the backing chain relationship should
69
+ instead be performed with ``qemu-img rebase``.
70
+
71
.. option:: bench [-c COUNT] [-d DEPTH] [-f FMT] [--flush-interval=FLUSH_INTERVAL] [-i AIO] [-n] [--no-drain] [-o OFFSET] [--pattern=PATTERN] [-q] [-s BUFFER_SIZE] [-S STEP_SIZE] [-t CACHE] [-w] [-U] FILENAME
72
73
Run a simple sequential I/O benchmark on the specified image. If ``-w`` is
74
diff --git a/block/qcow2.c b/block/qcow2.c
75
index XXXXXXX..XXXXXXX 100644
76
--- a/block/qcow2.c
77
+++ b/block/qcow2.c
78
@@ -XXX,XX +XXX,XX @@ static int qcow2_amend_options(BlockDriverState *bs, QemuOpts *opts,
79
}
80
81
if (backing_file || backing_format) {
82
+ if (g_strcmp0(backing_file, s->image_backing_file) ||
83
+ g_strcmp0(backing_format, s->image_backing_format)) {
84
+ warn_report("Deprecated use of amend to alter the backing file; "
85
+ "use qemu-img rebase instead");
86
+ }
87
ret = qcow2_change_backing_file(bs,
88
backing_file ?: s->image_backing_file,
89
backing_format ?: s->image_backing_format);
90
diff --git a/tests/qemu-iotests/061.out b/tests/qemu-iotests/061.out
91
index XXXXXXX..XXXXXXX 100644
92
--- a/tests/qemu-iotests/061.out
93
+++ b/tests/qemu-iotests/061.out
94
@@ -XXX,XX +XXX,XX @@ wrote 131072/131072 bytes at offset 0
95
128 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
96
read 131072/131072 bytes at offset 0
97
128 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
98
+qemu-img: warning: Deprecated use of amend to alter the backing file; use qemu-img rebase instead
99
read 131072/131072 bytes at offset 0
100
128 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
101
No errors were found on the image.
102
diff --git a/tests/qemu-iotests/082.out b/tests/qemu-iotests/082.out
103
index XXXXXXX..XXXXXXX 100644
104
--- a/tests/qemu-iotests/082.out
105
+++ b/tests/qemu-iotests/082.out
106
@@ -XXX,XX +XXX,XX @@ Creation options for 'qcow2':
107
Note that not all of these options may be amendable.
108
109
Testing: amend -f qcow2 -o backing_file=TEST_DIR/t.qcow2,,help TEST_DIR/t.qcow2
110
+qemu-img: warning: Deprecated use of amend to alter the backing file; use qemu-img rebase instead
111
112
Testing: rebase -u -b -f qcow2 TEST_DIR/t.qcow2
113
114
Testing: amend -f qcow2 -o backing_file=TEST_DIR/t.qcow2,,? TEST_DIR/t.qcow2
115
+qemu-img: warning: Deprecated use of amend to alter the backing file; use qemu-img rebase instead
116
117
Testing: rebase -u -b -f qcow2 TEST_DIR/t.qcow2
118
119
--
120
2.25.4
121
122
diff view generated by jsdifflib
Deleted patch
1
From: Eric Blake <eblake@redhat.com>
2
1
3
There are many existing qcow2 images that specify a backing file but
4
no format. This has been the source of CVEs in the past, but has
5
become more prominent of a problem now that libvirt has switched to
6
-blockdev. With older -drive, at least the probing was always done by
7
qemu (so the only risk of a changed format between successive boots of
8
a guest was if qemu was upgraded and probed differently). But with
9
newer -blockdev, libvirt must specify a format; if libvirt guesses raw
10
where the image was formatted, this results in data corruption visible
11
to the guest; conversely, if libvirt guesses qcow2 where qemu was
12
using raw, this can result in potential security holes, so modern
13
libvirt instead refuses to use images without explicit backing format.
14
15
The change in libvirt to reject images without explicit backing format
16
has pointed out that a number of tools have been far too reliant on
17
probing in the past. It's time to set a better example in our own
18
iotests of properly setting this parameter.
19
20
iotest calls to create, rebase, and convert are all impacted to some
21
degree. It's a bit annoying that we are inconsistent on command line
22
- while all of those accept -o backing_file=...,backing_fmt=..., the
23
shortcuts are different: create and rebase have -b and -F, while
24
convert has -B but no -F. (amend has no shortcuts, but the previous
25
patch just deprecated the use of amend to change backing chains).
26
27
Signed-off-by: Eric Blake <eblake@redhat.com>
28
Message-Id: <20200706203954.341758-9-eblake@redhat.com>
29
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
30
---
31
tests/qemu-iotests/017 | 2 +-
32
tests/qemu-iotests/017.out | 2 +-
33
tests/qemu-iotests/018 | 2 +-
34
tests/qemu-iotests/018.out | 2 +-
35
tests/qemu-iotests/019 | 5 ++--
36
tests/qemu-iotests/019.out | 2 +-
37
tests/qemu-iotests/020 | 4 +--
38
tests/qemu-iotests/020.out | 4 +--
39
tests/qemu-iotests/024 | 8 +++---
40
tests/qemu-iotests/024.out | 5 ++--
41
tests/qemu-iotests/028 | 4 +--
42
tests/qemu-iotests/028.out | 2 +-
43
tests/qemu-iotests/030 | 26 +++++++++++++------
44
tests/qemu-iotests/034 | 2 +-
45
tests/qemu-iotests/034.out | 2 +-
46
tests/qemu-iotests/037 | 2 +-
47
tests/qemu-iotests/037.out | 2 +-
48
tests/qemu-iotests/038 | 2 +-
49
tests/qemu-iotests/038.out | 2 +-
50
tests/qemu-iotests/039 | 3 ++-
51
tests/qemu-iotests/039.out | 2 +-
52
tests/qemu-iotests/040 | 47 +++++++++++++++++++++++++----------
53
tests/qemu-iotests/041 | 37 ++++++++++++++++++---------
54
tests/qemu-iotests/042 | 4 +--
55
tests/qemu-iotests/043 | 18 +++++++-------
56
tests/qemu-iotests/043.out | 16 +++++++-----
57
tests/qemu-iotests/046 | 2 +-
58
tests/qemu-iotests/046.out | 2 +-
59
tests/qemu-iotests/050 | 4 +--
60
tests/qemu-iotests/050.out | 2 +-
61
tests/qemu-iotests/051 | 2 +-
62
tests/qemu-iotests/051.out | 2 +-
63
tests/qemu-iotests/051.pc.out | 2 +-
64
tests/qemu-iotests/056 | 3 ++-
65
tests/qemu-iotests/060 | 2 +-
66
tests/qemu-iotests/060.out | 2 +-
67
tests/qemu-iotests/061 | 10 ++++----
68
tests/qemu-iotests/061.out | 10 ++++----
69
tests/qemu-iotests/069 | 2 +-
70
tests/qemu-iotests/069.out | 2 +-
71
tests/qemu-iotests/073 | 2 +-
72
tests/qemu-iotests/073.out | 2 +-
73
tests/qemu-iotests/082 | 10 +++++---
74
tests/qemu-iotests/082.out | 12 ++++-----
75
tests/qemu-iotests/085 | 4 +--
76
tests/qemu-iotests/085.out | 6 ++---
77
tests/qemu-iotests/089 | 2 +-
78
tests/qemu-iotests/089.out | 2 +-
79
tests/qemu-iotests/095 | 4 +--
80
tests/qemu-iotests/095.out | 4 +--
81
tests/qemu-iotests/097 | 4 +--
82
tests/qemu-iotests/097.out | 16 ++++++------
83
tests/qemu-iotests/098 | 2 +-
84
tests/qemu-iotests/098.out | 8 +++---
85
tests/qemu-iotests/110 | 4 +--
86
tests/qemu-iotests/110.out | 4 +--
87
tests/qemu-iotests/122 | 27 ++++++++++++--------
88
tests/qemu-iotests/122.out | 8 +++---
89
tests/qemu-iotests/126 | 4 +--
90
tests/qemu-iotests/126.out | 4 +--
91
tests/qemu-iotests/127 | 4 +--
92
tests/qemu-iotests/127.out | 4 +--
93
tests/qemu-iotests/129 | 3 ++-
94
tests/qemu-iotests/133 | 2 +-
95
tests/qemu-iotests/133.out | 2 +-
96
tests/qemu-iotests/139 | 2 +-
97
tests/qemu-iotests/141 | 4 +--
98
tests/qemu-iotests/141.out | 4 +--
99
tests/qemu-iotests/142 | 2 +-
100
tests/qemu-iotests/142.out | 2 +-
101
tests/qemu-iotests/153 | 14 +++++------
102
tests/qemu-iotests/153.out | 35 ++++++++++++++------------
103
tests/qemu-iotests/154 | 42 +++++++++++++++----------------
104
tests/qemu-iotests/154.out | 42 +++++++++++++++----------------
105
tests/qemu-iotests/155 | 12 ++++++---
106
tests/qemu-iotests/156 | 9 ++++---
107
tests/qemu-iotests/156.out | 6 ++---
108
tests/qemu-iotests/158 | 2 +-
109
tests/qemu-iotests/158.out | 2 +-
110
tests/qemu-iotests/161 | 8 +++---
111
tests/qemu-iotests/161.out | 8 +++---
112
tests/qemu-iotests/176 | 4 +--
113
tests/qemu-iotests/176.out | 32 ++++++++++++------------
114
tests/qemu-iotests/177 | 2 +-
115
tests/qemu-iotests/177.out | 2 +-
116
tests/qemu-iotests/179 | 2 +-
117
tests/qemu-iotests/179.out | 2 +-
118
tests/qemu-iotests/189 | 2 +-
119
tests/qemu-iotests/189.out | 2 +-
120
tests/qemu-iotests/191 | 12 ++++-----
121
tests/qemu-iotests/191.out | 12 ++++-----
122
tests/qemu-iotests/195 | 6 ++---
123
tests/qemu-iotests/195.out | 6 ++---
124
tests/qemu-iotests/198 | 2 +-
125
tests/qemu-iotests/198.out | 3 ++-
126
tests/qemu-iotests/204 | 2 +-
127
tests/qemu-iotests/204.out | 2 +-
128
tests/qemu-iotests/216 | 2 +-
129
tests/qemu-iotests/224 | 4 +--
130
tests/qemu-iotests/225 | 2 +-
131
tests/qemu-iotests/225.out | 2 +-
132
tests/qemu-iotests/228 | 5 ++--
133
tests/qemu-iotests/245 | 3 ++-
134
tests/qemu-iotests/249 | 4 +--
135
tests/qemu-iotests/249.out | 4 +--
136
tests/qemu-iotests/252 | 2 +-
137
tests/qemu-iotests/257 | 3 ++-
138
tests/qemu-iotests/267 | 4 +--
139
tests/qemu-iotests/267.out | 6 ++---
140
tests/qemu-iotests/270 | 2 +-
141
tests/qemu-iotests/270.out | 2 +-
142
tests/qemu-iotests/273 | 4 +--
143
tests/qemu-iotests/273.out | 4 +--
144
tests/qemu-iotests/274 | 12 ++++-----
145
tests/qemu-iotests/274.out | 29 +++++++++++----------
146
tests/qemu-iotests/279 | 4 +--
147
tests/qemu-iotests/279.out | 4 +--
148
tests/qemu-iotests/290 | 2 +-
149
tests/qemu-iotests/290.out | 4 +--
150
119 files changed, 435 insertions(+), 358 deletions(-)
151
152
diff --git a/tests/qemu-iotests/017 b/tests/qemu-iotests/017
153
index XXXXXXX..XXXXXXX 100755
154
--- a/tests/qemu-iotests/017
155
+++ b/tests/qemu-iotests/017
156
@@ -XXX,XX +XXX,XX @@ echo "Creating test image with backing file"
157
echo
158
159
TEST_IMG=$TEST_IMG_SAVE
160
-_make_test_img -b "$TEST_IMG.base" 6G
161
+_make_test_img -b "$TEST_IMG.base" -F $IMGFMT 6G
162
163
echo "Filling test image"
164
echo
165
diff --git a/tests/qemu-iotests/017.out b/tests/qemu-iotests/017.out
166
index XXXXXXX..XXXXXXX 100644
167
--- a/tests/qemu-iotests/017.out
168
+++ b/tests/qemu-iotests/017.out
169
@@ -XXX,XX +XXX,XX @@ wrote 65536/65536 bytes at offset 4295032832
170
No errors were found on the image.
171
Creating test image with backing file
172
173
-Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=6442450944 backing_file=TEST_DIR/t.IMGFMT.base
174
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=6442450944 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
175
Filling test image
176
177
=== IO: pattern 1
178
diff --git a/tests/qemu-iotests/018 b/tests/qemu-iotests/018
179
index XXXXXXX..XXXXXXX 100755
180
--- a/tests/qemu-iotests/018
181
+++ b/tests/qemu-iotests/018
182
@@ -XXX,XX +XXX,XX @@ echo "Creating test image with backing file"
183
echo
184
185
TEST_IMG="$TEST_IMG_SAVE.orig"
186
-_make_test_img -b "$TEST_IMG_SAVE.base" 6G
187
+_make_test_img -b "$TEST_IMG_SAVE.base" -F $IMGFMT 6G
188
189
echo "Filling test image"
190
echo
191
diff --git a/tests/qemu-iotests/018.out b/tests/qemu-iotests/018.out
192
index XXXXXXX..XXXXXXX 100644
193
--- a/tests/qemu-iotests/018.out
194
+++ b/tests/qemu-iotests/018.out
195
@@ -XXX,XX +XXX,XX @@ wrote 65536/65536 bytes at offset 4295032832
196
No errors were found on the image.
197
Creating test image with backing file
198
199
-Formatting 'TEST_DIR/t.IMGFMT.orig', fmt=IMGFMT size=6442450944 backing_file=TEST_DIR/t.IMGFMT.base
200
+Formatting 'TEST_DIR/t.IMGFMT.orig', fmt=IMGFMT size=6442450944 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
201
Filling test image
202
203
=== IO: pattern 1
204
diff --git a/tests/qemu-iotests/019 b/tests/qemu-iotests/019
205
index XXXXXXX..XXXXXXX 100755
206
--- a/tests/qemu-iotests/019
207
+++ b/tests/qemu-iotests/019
208
@@ -XXX,XX +XXX,XX @@ echo "Creating test image with backing file"
209
echo
210
211
TEST_IMG="$TEST_IMG_SAVE.orig"
212
-_make_test_img -b "$TEST_IMG_SAVE.base" 6G
213
+_make_test_img -b "$TEST_IMG_SAVE.base" -F $IMGFMT 6G
214
215
echo "Filling test image"
216
echo
217
@@ -XXX,XX +XXX,XX @@ for backing_option in "-B " "-o backing_file="; do
218
echo
219
echo Testing conversion with $backing_option"$TEST_IMG.base" | _filter_testdir | _filter_imgfmt
220
echo
221
- $QEMU_IMG convert -f $IMGFMT -O $IMGFMT $backing_option"$TEST_IMG.base" "$TEST_IMG.orig" "$TEST_IMG"
222
+ $QEMU_IMG convert -f $IMGFMT -O $IMGFMT $backing_option"$TEST_IMG.base" \
223
+ -o backing_fmt=$IMGFMT "$TEST_IMG.orig" "$TEST_IMG"
224
225
echo "Checking if backing clusters are allocated when they shouldn't"
226
echo
227
diff --git a/tests/qemu-iotests/019.out b/tests/qemu-iotests/019.out
228
index XXXXXXX..XXXXXXX 100644
229
--- a/tests/qemu-iotests/019.out
230
+++ b/tests/qemu-iotests/019.out
231
@@ -XXX,XX +XXX,XX @@ wrote 65536/65536 bytes at offset 4296015872
232
No errors were found on the image.
233
Creating test image with backing file
234
235
-Formatting 'TEST_DIR/t.IMGFMT.orig', fmt=IMGFMT size=6442450944 backing_file=TEST_DIR/t.IMGFMT.base
236
+Formatting 'TEST_DIR/t.IMGFMT.orig', fmt=IMGFMT size=6442450944 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
237
Filling test image
238
239
=== IO: pattern 43
240
diff --git a/tests/qemu-iotests/020 b/tests/qemu-iotests/020
241
index XXXXXXX..XXXXXXX 100755
242
--- a/tests/qemu-iotests/020
243
+++ b/tests/qemu-iotests/020
244
@@ -XXX,XX +XXX,XX @@ echo "Creating test image with backing file"
245
echo
246
247
TEST_IMG="$TEST_IMG_SAVE"
248
-_make_test_img -b "$TEST_IMG.base" 6G
249
+_make_test_img -b "$TEST_IMG.base" -F $IMGFMT 6G
250
251
echo "Filling test image"
252
echo
253
@@ -XXX,XX +XXX,XX @@ _make_test_img -b "json:{'driver': '$IMGFMT',
254
'image': {
255
'driver': 'file',
256
'filename': '$TEST_IMG.base'
257
- }}}"
258
+ }}}" -F $IMGFMT
259
260
# Just write anything so committing will not be a no-op
261
$QEMU_IO -c 'writev 0 64k' "$TEST_IMG" | _filter_qemu_io
262
diff --git a/tests/qemu-iotests/020.out b/tests/qemu-iotests/020.out
263
index XXXXXXX..XXXXXXX 100644
264
--- a/tests/qemu-iotests/020.out
265
+++ b/tests/qemu-iotests/020.out
266
@@ -XXX,XX +XXX,XX @@ wrote 65536/65536 bytes at offset 4295032832
267
No errors were found on the image.
268
Creating test image with backing file
269
270
-Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=6442450944 backing_file=TEST_DIR/t.IMGFMT.base
271
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=6442450944 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
272
Filling test image
273
274
=== IO: pattern 1
275
@@ -XXX,XX +XXX,XX @@ Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=1048576 backing_file=json:{'driv
276
'image': {
277
'driver': 'file',,
278
'filename': 'TEST_DIR/t.IMGFMT.base'
279
- }}}
280
+ }}} backing_fmt=IMGFMT
281
wrote 65536/65536 bytes at offset 0
282
64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
283
qemu-img: Block job failed: No space left on device
284
diff --git a/tests/qemu-iotests/024 b/tests/qemu-iotests/024
285
index XXXXXXX..XXXXXXX 100755
286
--- a/tests/qemu-iotests/024
287
+++ b/tests/qemu-iotests/024
288
@@ -XXX,XX +XXX,XX @@ TEST_IMG="$TEST_IMG_SAVE"
289
echo "Creating COW image"
290
echo
291
292
-_make_test_img -b "$TEST_IMG.base_old" 1G
293
+_make_test_img -b "$TEST_IMG.base_old" -F $IMGFMT 1G
294
io_pattern writev 0 $((4 * CLUSTER_SIZE)) 0 1 0x33
295
io_pattern writev $((8 * CLUSTER_SIZE)) $((4 * CLUSTER_SIZE)) 0 1 0x33
296
297
@@ -XXX,XX +XXX,XX @@ io_pattern readv $((15 * CLUSTER_SIZE)) $CLUSTER_SIZE 0 1 0x00
298
echo
299
echo Rebase and test again
300
echo
301
-$QEMU_IMG rebase -b "$TEST_IMG.base_new" "$TEST_IMG"
302
+$QEMU_IMG rebase -b "$TEST_IMG.base_new" -F $IMGFMT "$TEST_IMG"
303
io_pattern readv $((0 * CLUSTER_SIZE)) $CLUSTER_SIZE 0 1 0x33
304
io_pattern readv $((1 * CLUSTER_SIZE)) $CLUSTER_SIZE 0 1 0x33
305
io_pattern readv $((2 * CLUSTER_SIZE)) $CLUSTER_SIZE 0 1 0x33
306
@@ -XXX,XX +XXX,XX @@ OVERLAY="$TEST_DIR/$OVERLAY_WREL"
307
308
TEST_IMG=$BASE_OLD _make_test_img 1M
309
TEST_IMG=$BASE_NEW _make_test_img 1M
310
-TEST_IMG=$OVERLAY _make_test_img -b "$BASE_OLD_OREL" 1M
311
+TEST_IMG=$OVERLAY _make_test_img -b "$BASE_OLD_OREL" -F $IMGFMT 1M
312
313
echo
314
315
@@ -XXX,XX +XXX,XX @@ $QEMU_IO "$BASE_NEW" \
316
echo
317
318
pushd "$TEST_DIR" >/dev/null
319
-$QEMU_IMG rebase -f "$IMGFMT" -b "$BASE_NEW_OREL" "$OVERLAY_WREL"
320
+$QEMU_IMG rebase -f "$IMGFMT" -b "$BASE_NEW_OREL" -F $IMGFMT "$OVERLAY_WREL"
321
popd >/dev/null
322
323
# Verify the backing path is correct
324
diff --git a/tests/qemu-iotests/024.out b/tests/qemu-iotests/024.out
325
index XXXXXXX..XXXXXXX 100644
326
--- a/tests/qemu-iotests/024.out
327
+++ b/tests/qemu-iotests/024.out
328
@@ -XXX,XX +XXX,XX @@ wrote 131072/131072 bytes at offset 786432
329
128 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
330
Creating COW image
331
332
-Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=1073741824 backing_file=TEST_DIR/t.IMGFMT.base_old
333
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=1073741824 backing_file=TEST_DIR/t.IMGFMT.base_old backing_fmt=IMGFMT
334
=== IO: pattern 0x33
335
wrote 262144/262144 bytes at offset 0
336
256 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
337
@@ -XXX,XX +XXX,XX @@ read 65536/65536 bytes at offset 983040
338
339
Formatting 'TEST_DIR/subdir/t.IMGFMT.base_old', fmt=IMGFMT size=1048576
340
Formatting 'TEST_DIR/subdir/t.IMGFMT.base_new', fmt=IMGFMT size=1048576
341
-Formatting 'TEST_DIR/subdir/t.IMGFMT', fmt=IMGFMT size=1048576 backing_file=t.IMGFMT.base_old
342
+Formatting 'TEST_DIR/subdir/t.IMGFMT', fmt=IMGFMT size=1048576 backing_file=t.IMGFMT.base_old backing_fmt=IMGFMT
343
344
wrote 131072/131072 bytes at offset 0
345
128 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
346
@@ -XXX,XX +XXX,XX @@ wrote 65536/65536 bytes at offset 196608
347
64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
348
349
backing file: t.IMGFMT.base_new (actual path: TEST_DIR/subdir/t.IMGFMT.base_new)
350
+backing file format: IMGFMT
351
352
read 65536/65536 bytes at offset 0
353
64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
354
diff --git a/tests/qemu-iotests/028 b/tests/qemu-iotests/028
355
index XXXXXXX..XXXXXXX 100755
356
--- a/tests/qemu-iotests/028
357
+++ b/tests/qemu-iotests/028
358
@@ -XXX,XX +XXX,XX @@ echo "Creating test image with backing file"
359
echo
360
361
TEST_IMG="$TEST_IMG_SAVE"
362
-_make_test_img -b "$TEST_IMG.base" $image_size
363
+_make_test_img -b "$TEST_IMG.base" -F $IMGFMT $image_size
364
365
echo "Filling test image"
366
echo
367
@@ -XXX,XX +XXX,XX @@ io_zero readv $(( offset + 32 * 1024 )) 512 1024 32
368
_check_test_img
369
370
# Rebase it on top of its base image
371
-$QEMU_IMG rebase -b "$TEST_IMG.base" "$TEST_IMG"
372
+$QEMU_IMG rebase -b "$TEST_IMG.base" -F $IMGFMT "$TEST_IMG"
373
374
echo
375
echo block-backup
376
diff --git a/tests/qemu-iotests/028.out b/tests/qemu-iotests/028.out
377
index XXXXXXX..XXXXXXX 100644
378
--- a/tests/qemu-iotests/028.out
379
+++ b/tests/qemu-iotests/028.out
380
@@ -XXX,XX +XXX,XX @@ wrote 512/512 bytes at offset 3221225984
381
No errors were found on the image.
382
Creating test image with backing file
383
384
-Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=4294968832 backing_file=TEST_DIR/t.IMGFMT.base
385
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=4294968832 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
386
Filling test image
387
388
=== IO: pattern 196
389
diff --git a/tests/qemu-iotests/030 b/tests/qemu-iotests/030
390
index XXXXXXX..XXXXXXX 100755
391
--- a/tests/qemu-iotests/030
392
+++ b/tests/qemu-iotests/030
393
@@ -XXX,XX +XXX,XX @@ class TestSingleDrive(iotests.QMPTestCase):
394
395
def setUp(self):
396
iotests.create_image(backing_img, TestSingleDrive.image_len)
397
- qemu_img('create', '-f', iotests.imgfmt, '-o', 'backing_file=%s' % backing_img, mid_img)
398
- qemu_img('create', '-f', iotests.imgfmt, '-o', 'backing_file=%s' % mid_img, test_img)
399
+ qemu_img('create', '-f', iotests.imgfmt,
400
+ '-o', 'backing_file=%s' % backing_img,
401
+ '-F', 'raw', mid_img)
402
+ qemu_img('create', '-f', iotests.imgfmt,
403
+ '-o', 'backing_file=%s' % mid_img,
404
+ '-F', iotests.imgfmt, test_img)
405
qemu_io('-f', 'raw', '-c', 'write -P 0x1 0 512', backing_img)
406
qemu_io('-f', iotests.imgfmt, '-c', 'write -P 0x1 524288 512', mid_img)
407
self.vm = iotests.VM().add_drive("blkdebug::" + test_img,
408
@@ -XXX,XX +XXX,XX @@ class TestParallelOps(iotests.QMPTestCase):
409
iotests.create_image(self.imgs[0], self.image_len)
410
for i in range(1, self.num_imgs):
411
qemu_img('create', '-f', iotests.imgfmt,
412
- '-o', 'backing_file=%s' % self.imgs[i-1], self.imgs[i])
413
+ '-o', 'backing_file=%s' % self.imgs[i-1],
414
+ '-F', 'raw' if i == 1 else iotests.imgfmt, self.imgs[i])
415
416
# Put data into the images we are copying data from
417
odd_img_indexes = [x for x in reversed(range(self.num_imgs)) if x % 2 == 1]
418
@@ -XXX,XX +XXX,XX @@ class TestQuorum(iotests.QMPTestCase):
419
qemu_io('-f', iotests.imgfmt,
420
'-c', 'write -P 0x55 0 1024', backing_img)
421
qemu_img('create', '-f', iotests.imgfmt,
422
- '-o', 'backing_file=%s' % backing_img, child_img)
423
+ '-o', 'backing_file=%s' % backing_img,
424
+ '-F', iotests.imgfmt, child_img)
425
opts.append("children.%d.file.filename=%s" % (i, child_img))
426
opts.append("children.%d.node-name=node%d" % (i, i))
427
428
@@ -XXX,XX +XXX,XX @@ class TestSmallerBackingFile(iotests.QMPTestCase):
429
430
def setUp(self):
431
iotests.create_image(backing_img, self.backing_len)
432
- qemu_img('create', '-f', iotests.imgfmt, '-o', 'backing_file=%s' % backing_img, test_img, str(self.image_len))
433
+ qemu_img('create', '-f', iotests.imgfmt,
434
+ '-o', 'backing_file=%s' % backing_img,
435
+ '-F', 'raw', test_img, str(self.image_len))
436
self.vm = iotests.VM().add_drive(test_img)
437
self.vm.launch()
438
439
@@ -XXX,XX +XXX,XX @@ class TestStreamStop(iotests.QMPTestCase):
440
def setUp(self):
441
qemu_img('create', backing_img, str(TestStreamStop.image_len))
442
qemu_io('-f', 'raw', '-c', 'write -P 0x1 0 32M', backing_img)
443
- qemu_img('create', '-f', iotests.imgfmt, '-o', 'backing_file=%s' % backing_img, test_img)
444
+ qemu_img('create', '-f', iotests.imgfmt,
445
+ '-o', 'backing_file=%s' % backing_img,
446
+ '-F', 'raw', test_img)
447
qemu_io('-f', iotests.imgfmt, '-c', 'write -P 0x1 32M 32M', test_img)
448
self.vm = iotests.VM().add_drive("blkdebug::" + test_img)
449
self.vm.launch()
450
@@ -XXX,XX +XXX,XX @@ class TestSetSpeed(iotests.QMPTestCase):
451
def setUp(self):
452
qemu_img('create', backing_img, str(TestSetSpeed.image_len))
453
qemu_io('-f', 'raw', '-c', 'write -P 0x1 0 32M', backing_img)
454
- qemu_img('create', '-f', iotests.imgfmt, '-o', 'backing_file=%s' % backing_img, test_img)
455
+ qemu_img('create', '-f', iotests.imgfmt,
456
+ '-o', 'backing_file=%s' % backing_img,
457
+ '-F', 'raw', test_img)
458
qemu_io('-f', iotests.imgfmt, '-c', 'write -P 0x1 32M 32M', test_img)
459
self.vm = iotests.VM().add_drive('blkdebug::' + test_img)
460
self.vm.launch()
461
diff --git a/tests/qemu-iotests/034 b/tests/qemu-iotests/034
462
index XXXXXXX..XXXXXXX 100755
463
--- a/tests/qemu-iotests/034
464
+++ b/tests/qemu-iotests/034
465
@@ -XXX,XX +XXX,XX @@ $QEMU_IO -c "write -P 0x55 0 1M" "$TEST_IMG" | _filter_qemu_io
466
467
TEST_IMG="$TEST_IMG_SAVE"
468
469
-_make_test_img -b "$TEST_IMG.base" 6G
470
+_make_test_img -b "$TEST_IMG.base" -F $IMGFMT 6G
471
472
echo
473
echo "== zero write with backing file =="
474
diff --git a/tests/qemu-iotests/034.out b/tests/qemu-iotests/034.out
475
index XXXXXXX..XXXXXXX 100644
476
--- a/tests/qemu-iotests/034.out
477
+++ b/tests/qemu-iotests/034.out
478
@@ -XXX,XX +XXX,XX @@ QA output created by 034
479
Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=134217728
480
wrote 1048576/1048576 bytes at offset 0
481
1 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
482
-Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=6442450944 backing_file=TEST_DIR/t.IMGFMT.base
483
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=6442450944 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
484
485
== zero write with backing file ==
486
wrote 196608/196608 bytes at offset 65536
487
diff --git a/tests/qemu-iotests/037 b/tests/qemu-iotests/037
488
index XXXXXXX..XXXXXXX 100755
489
--- a/tests/qemu-iotests/037
490
+++ b/tests/qemu-iotests/037
491
@@ -XXX,XX +XXX,XX @@ backing_io 0 256 write | $QEMU_IO "$TEST_IMG" | _filter_qemu_io
492
493
TEST_IMG="$TEST_IMG_SAVE"
494
495
-_make_test_img -b "$TEST_IMG.base" 6G
496
+_make_test_img -b "$TEST_IMG.base" -F $IMGFMT 6G
497
498
echo
499
echo "== COW in a single cluster =="
500
diff --git a/tests/qemu-iotests/037.out b/tests/qemu-iotests/037.out
501
index XXXXXXX..XXXXXXX 100644
502
--- a/tests/qemu-iotests/037.out
503
+++ b/tests/qemu-iotests/037.out
504
@@ -XXX,XX +XXX,XX @@ wrote 512/512 bytes at offset 130048
505
512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
506
wrote 512/512 bytes at offset 130560
507
512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
508
-Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=6442450944 backing_file=TEST_DIR/t.IMGFMT.base
509
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=6442450944 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
510
511
== COW in a single cluster ==
512
wrote 2048/2048 bytes at offset 0
513
diff --git a/tests/qemu-iotests/038 b/tests/qemu-iotests/038
514
index XXXXXXX..XXXXXXX 100755
515
--- a/tests/qemu-iotests/038
516
+++ b/tests/qemu-iotests/038
517
@@ -XXX,XX +XXX,XX @@ backing_io 0 256 write | $QEMU_IO "$TEST_IMG" | _filter_qemu_io
518
519
TEST_IMG="$TEST_IMG_SAVE"
520
521
-_make_test_img -b "$TEST_IMG.base" 6G
522
+_make_test_img -b "$TEST_IMG.base" -F $IMGFMT 6G
523
524
echo
525
echo "== Some concurrent requests touching the same cluster =="
526
diff --git a/tests/qemu-iotests/038.out b/tests/qemu-iotests/038.out
527
index XXXXXXX..XXXXXXX 100644
528
--- a/tests/qemu-iotests/038.out
529
+++ b/tests/qemu-iotests/038.out
530
@@ -XXX,XX +XXX,XX @@ wrote 65536/65536 bytes at offset 16646144
531
64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
532
wrote 65536/65536 bytes at offset 16711680
533
64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
534
-Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=6442450944 backing_file=TEST_DIR/t.IMGFMT.base
535
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=6442450944 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
536
537
== Some concurrent requests touching the same cluster ==
538
wrote 65536/65536 bytes at offset XXX
539
diff --git a/tests/qemu-iotests/039 b/tests/qemu-iotests/039
540
index XXXXXXX..XXXXXXX 100755
541
--- a/tests/qemu-iotests/039
542
+++ b/tests/qemu-iotests/039
543
@@ -XXX,XX +XXX,XX @@ echo "== Committing to a backing file with lazy_refcounts=on =="
544
545
TEST_IMG="$TEST_IMG".base _make_test_img -o "compat=1.1,lazy_refcounts=on" $size
546
547
-_make_test_img -o "compat=1.1,lazy_refcounts=on,backing_file=$TEST_IMG.base" $size
548
+_make_test_img -o "compat=1.1,lazy_refcounts=on,backing_file=$TEST_IMG.base" \
549
+ -F $IMGFMT $size
550
551
$QEMU_IO -c "write 0 512" "$TEST_IMG" | _filter_qemu_io
552
$QEMU_IMG commit "$TEST_IMG"
553
diff --git a/tests/qemu-iotests/039.out b/tests/qemu-iotests/039.out
554
index XXXXXXX..XXXXXXX 100644
555
--- a/tests/qemu-iotests/039.out
556
+++ b/tests/qemu-iotests/039.out
557
@@ -XXX,XX +XXX,XX @@ No errors were found on the image.
558
559
== Committing to a backing file with lazy_refcounts=on ==
560
Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=134217728
561
-Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728 backing_file=TEST_DIR/t.IMGFMT.base
562
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
563
wrote 512/512 bytes at offset 0
564
512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
565
Image committed.
566
diff --git a/tests/qemu-iotests/040 b/tests/qemu-iotests/040
567
index XXXXXXX..XXXXXXX 100755
568
--- a/tests/qemu-iotests/040
569
+++ b/tests/qemu-iotests/040
570
@@ -XXX,XX +XXX,XX @@ class TestSingleDrive(ImageCommitTestCase):
571
572
def setUp(self):
573
iotests.create_image(backing_img, self.image_len)
574
- qemu_img('create', '-f', iotests.imgfmt, '-o', 'backing_file=%s' % backing_img, mid_img)
575
- qemu_img('create', '-f', iotests.imgfmt, '-o', 'backing_file=%s' % mid_img, test_img)
576
+ qemu_img('create', '-f', iotests.imgfmt,
577
+ '-o', 'backing_file=%s' % backing_img, '-F', 'raw', mid_img)
578
+ qemu_img('create', '-f', iotests.imgfmt,
579
+ '-o', 'backing_file=%s' % mid_img,
580
+ '-F', iotests.imgfmt, test_img)
581
qemu_io('-f', 'raw', '-c', 'write -P 0xab 0 524288', backing_img)
582
qemu_io('-f', iotests.imgfmt, '-c', 'write -P 0xef 524288 524288', mid_img)
583
self.vm = iotests.VM().add_drive(test_img, "node-name=top,backing.node-name=mid,backing.backing.node-name=base", interface="none")
584
@@ -XXX,XX +XXX,XX @@ class TestRelativePaths(ImageCommitTestCase):
585
if exception.errno != errno.EEXIST:
586
raise
587
iotests.create_image(self.backing_img_abs, TestRelativePaths.image_len)
588
- qemu_img('create', '-f', iotests.imgfmt, '-o', 'backing_file=%s' % self.backing_img_abs, self.mid_img_abs)
589
- qemu_img('create', '-f', iotests.imgfmt, '-o', 'backing_file=%s' % self.mid_img_abs, self.test_img)
590
- qemu_img('rebase', '-u', '-b', self.backing_img, self.mid_img_abs)
591
- qemu_img('rebase', '-u', '-b', self.mid_img, self.test_img)
592
+ qemu_img('create', '-f', iotests.imgfmt,
593
+ '-o', 'backing_file=%s' % self.backing_img_abs,
594
+ '-F', 'raw', self.mid_img_abs)
595
+ qemu_img('create', '-f', iotests.imgfmt,
596
+ '-o', 'backing_file=%s' % self.mid_img_abs,
597
+ '-F', iotests.imgfmt, self.test_img)
598
+ qemu_img('rebase', '-u', '-b', self.backing_img,
599
+ '-F', 'raw', self.mid_img_abs)
600
+ qemu_img('rebase', '-u', '-b', self.mid_img,
601
+ '-F', iotests.imgfmt, self.test_img)
602
qemu_io('-f', 'raw', '-c', 'write -P 0xab 0 524288', self.backing_img_abs)
603
qemu_io('-f', iotests.imgfmt, '-c', 'write -P 0xef 524288 524288', self.mid_img_abs)
604
self.vm = iotests.VM().add_drive(self.test_img)
605
@@ -XXX,XX +XXX,XX @@ class TestSetSpeed(ImageCommitTestCase):
606
607
def setUp(self):
608
qemu_img('create', backing_img, str(TestSetSpeed.image_len))
609
- qemu_img('create', '-f', iotests.imgfmt, '-o', 'backing_file=%s' % backing_img, mid_img)
610
- qemu_img('create', '-f', iotests.imgfmt, '-o', 'backing_file=%s' % mid_img, test_img)
611
+ qemu_img('create', '-f', iotests.imgfmt,
612
+ '-o', 'backing_file=%s' % backing_img, '-F', 'raw', mid_img)
613
+ qemu_img('create', '-f', iotests.imgfmt,
614
+ '-o', 'backing_file=%s' % mid_img,
615
+ '-F', iotests.imgfmt, test_img)
616
qemu_io('-f', iotests.imgfmt, '-c', 'write -P 0x1 0 512', test_img)
617
qemu_io('-f', iotests.imgfmt, '-c', 'write -P 0xef 524288 524288', mid_img)
618
self.vm = iotests.VM().add_drive('blkdebug::' + test_img)
619
@@ -XXX,XX +XXX,XX @@ class TestReopenOverlay(ImageCommitTestCase):
620
621
def setUp(self):
622
iotests.create_image(self.img0, self.image_len)
623
- qemu_img('create', '-f', iotests.imgfmt, '-o', 'backing_file=%s' % self.img0, self.img1)
624
- qemu_img('create', '-f', iotests.imgfmt, '-o', 'backing_file=%s' % self.img1, self.img2)
625
- qemu_img('create', '-f', iotests.imgfmt, '-o', 'backing_file=%s' % self.img2, self.img3)
626
+ qemu_img('create', '-f', iotests.imgfmt,
627
+ '-o', 'backing_file=%s' % self.img0, '-F', 'raw', self.img1)
628
+ qemu_img('create', '-f', iotests.imgfmt,
629
+ '-o', 'backing_file=%s' % self.img1,
630
+ '-F', iotests.imgfmt, self.img2)
631
+ qemu_img('create', '-f', iotests.imgfmt,
632
+ '-o', 'backing_file=%s' % self.img2,
633
+ '-F', iotests.imgfmt, self.img3)
634
qemu_io('-f', iotests.imgfmt, '-c', 'write -P 0xab 0 128K', self.img1)
635
self.vm = iotests.VM().add_drive(self.img3)
636
self.vm.launch()
637
@@ -XXX,XX +XXX,XX @@ class TestErrorHandling(iotests.QMPTestCase):
638
639
def setUp(self):
640
iotests.create_image(backing_img, self.image_len)
641
- qemu_img('create', '-f', iotests.imgfmt, '-o', 'backing_file=%s' % backing_img, mid_img)
642
- qemu_img('create', '-f', iotests.imgfmt, '-o', 'backing_file=%s' % mid_img, test_img)
643
+ qemu_img('create', '-f', iotests.imgfmt,
644
+ '-o', 'backing_file=%s' % backing_img,
645
+ '-F', 'raw', mid_img)
646
+ qemu_img('create', '-f', iotests.imgfmt,
647
+ '-o', 'backing_file=%s' % mid_img,
648
+ '-F', iotests.imgfmt, test_img)
649
650
qemu_io('-f', iotests.imgfmt, '-c', 'write -P 0x11 0 512k', mid_img)
651
qemu_io('-f', iotests.imgfmt, '-c', 'write -P 0x22 0 512k', test_img)
652
diff --git a/tests/qemu-iotests/041 b/tests/qemu-iotests/041
653
index XXXXXXX..XXXXXXX 100755
654
--- a/tests/qemu-iotests/041
655
+++ b/tests/qemu-iotests/041
656
@@ -XXX,XX +XXX,XX @@ class TestSingleDrive(iotests.QMPTestCase):
657
658
def setUp(self):
659
iotests.create_image(backing_img, self.image_len)
660
- qemu_img('create', '-f', iotests.imgfmt, '-o', 'backing_file=%s' % backing_img, test_img)
661
+ qemu_img('create', '-f', iotests.imgfmt,
662
+ '-o', 'backing_file=%s' % backing_img, '-F', 'raw', test_img)
663
self.vm = iotests.VM().add_drive(test_img, "node-name=top,backing.node-name=base")
664
if iotests.qemu_default_machine == 'pc':
665
self.vm.add_drive(None, 'media=cdrom', 'ide')
666
@@ -XXX,XX +XXX,XX @@ class TestSingleDrive(iotests.QMPTestCase):
667
self.assert_no_active_block_jobs()
668
669
qemu_img('create', '-f', iotests.imgfmt, '-o', 'cluster_size=%d,backing_file=%s'
670
- % (self.image_len, backing_img), target_img)
671
+ % (self.image_len, backing_img),
672
+ '-F', 'raw', target_img)
673
result = self.vm.qmp(self.qmp_cmd, device='drive0', sync='full',
674
mode='existing', target=self.qmp_target)
675
self.assert_qmp(result, 'return', {})
676
@@ -XXX,XX +XXX,XX @@ class TestSingleBlockdev(TestSingleDrive):
677
678
def setUp(self):
679
TestSingleDrive.setUp(self)
680
- qemu_img('create', '-f', iotests.imgfmt, '-o', 'backing_file=%s' % backing_img, target_img)
681
+ qemu_img('create', '-f', iotests.imgfmt,
682
+ '-o', 'backing_file=%s' % backing_img, '-F', 'raw', target_img)
683
args = {'driver': iotests.imgfmt,
684
'node-name': self.qmp_target,
685
'file': { 'filename': target_img, 'driver': 'file' } }
686
@@ -XXX,XX +XXX,XX @@ class TestMirrorNoBacking(iotests.QMPTestCase):
687
688
def setUp(self):
689
iotests.create_image(backing_img, TestMirrorNoBacking.image_len)
690
- qemu_img('create', '-f', iotests.imgfmt, '-o', 'backing_file=%s' % backing_img, test_img)
691
+ qemu_img('create', '-f', iotests.imgfmt,
692
+ '-o', 'backing_file=%s' % backing_img, '-F', 'raw', test_img)
693
self.vm = iotests.VM().add_drive(test_img)
694
self.vm.launch()
695
696
@@ -XXX,XX +XXX,XX @@ class TestMirrorNoBacking(iotests.QMPTestCase):
697
def test_complete(self):
698
self.assert_no_active_block_jobs()
699
700
- qemu_img('create', '-f', iotests.imgfmt, '-o', 'backing_file=%s' % backing_img, target_img)
701
+ qemu_img('create', '-f', iotests.imgfmt,
702
+ '-o', 'backing_file=%s' % backing_img, '-F', 'raw', target_img)
703
result = self.vm.qmp('drive-mirror', device='drive0', sync='full',
704
mode='existing', target=target_img)
705
self.assert_qmp(result, 'return', {})
706
@@ -XXX,XX +XXX,XX @@ class TestMirrorNoBacking(iotests.QMPTestCase):
707
def test_cancel(self):
708
self.assert_no_active_block_jobs()
709
710
- qemu_img('create', '-f', iotests.imgfmt, '-o', 'backing_file=%s' % backing_img, target_img)
711
+ qemu_img('create', '-f', iotests.imgfmt,
712
+ '-o', 'backing_file=%s' % backing_img, '-F', 'raw', target_img)
713
result = self.vm.qmp('drive-mirror', device='drive0', sync='full',
714
mode='existing', target=target_img)
715
self.assert_qmp(result, 'return', {})
716
@@ -XXX,XX +XXX,XX @@ class TestMirrorNoBacking(iotests.QMPTestCase):
717
qemu_img('create', '-f', iotests.imgfmt, '-o', 'size=%d'
718
%(TestMirrorNoBacking.image_len), target_backing_img)
719
qemu_img('create', '-f', iotests.imgfmt, '-o', 'cluster_size=%d,backing_file=%s'
720
- % (TestMirrorNoBacking.image_len, target_backing_img), target_img)
721
+ % (TestMirrorNoBacking.image_len, target_backing_img),
722
+ '-F', iotests.imgfmt, target_img)
723
724
result = self.vm.qmp('drive-mirror', device='drive0', sync='full',
725
mode='existing', target=target_img)
726
@@ -XXX,XX +XXX,XX @@ class TestMirrorResized(iotests.QMPTestCase):
727
728
def setUp(self):
729
iotests.create_image(backing_img, TestMirrorResized.backing_len)
730
- qemu_img('create', '-f', iotests.imgfmt, '-o', 'backing_file=%s' % backing_img, test_img)
731
+ qemu_img('create', '-f', iotests.imgfmt,
732
+ '-o', 'backing_file=%s' % backing_img, '-F', 'raw', test_img)
733
qemu_img('resize', test_img, '2M')
734
self.vm = iotests.VM().add_drive(test_img)
735
self.vm.launch()
736
@@ -XXX,XX +XXX,XX @@ new_state = "1"
737
# Test COW into the target image. The first half of the
738
# cluster at MIRROR_GRANULARITY has to be copied from
739
# backing_img, even though sync='top'.
740
- qemu_img('create', '-f', iotests.imgfmt, '-ocluster_size=131072,backing_file=%s' %(backing_img), target_img)
741
+ qemu_img('create', '-f', iotests.imgfmt,
742
+ '-ocluster_size=131072,backing_file=%s' %(backing_img),
743
+ '-F', 'raw', target_img)
744
result = self.vm.qmp('drive-mirror', device='drive0', sync='top',
745
on_source_error='ignore',
746
mode='existing', target=target_img)
747
@@ -XXX,XX +XXX,XX @@ new_state = "1"
748
self.vm.shutdown()
749
750
# Detach blkdebug to compare images successfully
751
- qemu_img('rebase', '-f', iotests.imgfmt, '-u', '-b', backing_img, test_img)
752
+ qemu_img('rebase', '-f', iotests.imgfmt, '-u', '-b', backing_img,
753
+ '-F', 'raw', test_img)
754
self.assertTrue(iotests.compare_images(test_img, target_img),
755
'target image does not match source after mirroring')
756
757
@@ -XXX,XX +XXX,XX @@ new_state = "1"
758
self.blkdebug_file = target_img + ".blkdebug"
759
iotests.create_image(backing_img, TestWriteErrors.image_len)
760
self.create_blkdebug_file(self.blkdebug_file, "write_aio", 5)
761
- qemu_img('create', '-f', iotests.imgfmt, '-obacking_file=%s' %(backing_img), test_img)
762
+ qemu_img('create', '-f', iotests.imgfmt,
763
+ '-obacking_file=%s' %(backing_img), '-F', 'raw', test_img)
764
self.vm = iotests.VM().add_drive(test_img)
765
self.target_img = 'blkdebug:%s:%s' % (self.blkdebug_file, target_img)
766
qemu_img('create', '-f', iotests.imgfmt, '-osize=%d' %(TestWriteErrors.image_len), target_img)
767
@@ -XXX,XX +XXX,XX @@ class TestSetSpeed(iotests.QMPTestCase):
768
769
def setUp(self):
770
qemu_img('create', backing_img, str(TestSetSpeed.image_len))
771
- qemu_img('create', '-f', iotests.imgfmt, '-o', 'backing_file=%s' % backing_img, test_img)
772
+ qemu_img('create', '-f', iotests.imgfmt,
773
+ '-o', 'backing_file=%s' % backing_img, '-F', 'raw', test_img)
774
self.vm = iotests.VM().add_drive(test_img)
775
self.vm.launch()
776
777
diff --git a/tests/qemu-iotests/042 b/tests/qemu-iotests/042
778
index XXXXXXX..XXXXXXX 100755
779
--- a/tests/qemu-iotests/042
780
+++ b/tests/qemu-iotests/042
781
@@ -XXX,XX +XXX,XX @@ _check_test_img
782
echo
783
echo "== Rebasing the image =="
784
785
-$QEMU_IMG rebase -u -b "$TEST_IMG.orig" "$TEST_IMG"
786
-$QEMU_IMG rebase -b "$TEST_IMG.orig" "$TEST_IMG"
787
+$QEMU_IMG rebase -u -b "$TEST_IMG.orig" -F $IMGFMT "$TEST_IMG"
788
+$QEMU_IMG rebase -b "$TEST_IMG.orig" -F $IMGFMT "$TEST_IMG"
789
_check_test_img
790
791
# success, all done
792
diff --git a/tests/qemu-iotests/043 b/tests/qemu-iotests/043
793
index XXXXXXX..XXXXXXX 100755
794
--- a/tests/qemu-iotests/043
795
+++ b/tests/qemu-iotests/043
796
@@ -XXX,XX +XXX,XX @@ _supported_proto file
797
798
size=128M
799
_make_test_img $size
800
-$QEMU_IMG rebase -u -b "$TEST_IMG" "$TEST_IMG"
801
+$QEMU_IMG rebase -u -b "$TEST_IMG" -F $IMGFMT "$TEST_IMG"
802
803
echo
804
echo "== backing file references self =="
805
@@ -XXX,XX +XXX,XX @@ _img_info --backing-chain
806
807
_make_test_img $size
808
mv "$TEST_IMG" "$TEST_IMG.base"
809
-_make_test_img -b "$TEST_IMG.base" $size
810
-$QEMU_IMG rebase -u -b "$TEST_IMG" "$TEST_IMG.base"
811
+_make_test_img -b "$TEST_IMG.base" -F $IMGFMT $size
812
+$QEMU_IMG rebase -u -b "$TEST_IMG" -F $IMGFMT "$TEST_IMG.base"
813
814
echo
815
echo "== parent references self =="
816
@@ -XXX,XX +XXX,XX @@ _img_info --backing-chain
817
818
_make_test_img $size
819
mv "$TEST_IMG" "$TEST_IMG.1.base"
820
-_make_test_img -b "$TEST_IMG.1.base" $size
821
+_make_test_img -b "$TEST_IMG.1.base" -F $IMGFMT $size
822
mv "$TEST_IMG" "$TEST_IMG.2.base"
823
-_make_test_img -b "$TEST_IMG.2.base" $size
824
+_make_test_img -b "$TEST_IMG.2.base" -F $IMGFMT $size
825
mv "$TEST_IMG" "$TEST_IMG.3.base"
826
-_make_test_img -b "$TEST_IMG.3.base" $size
827
-$QEMU_IMG rebase -u -b "$TEST_IMG.2.base" "$TEST_IMG.1.base"
828
+_make_test_img -b "$TEST_IMG.3.base" -F $IMGFMT $size
829
+$QEMU_IMG rebase -u -b "$TEST_IMG.2.base" -F $IMGFMT "$TEST_IMG.1.base"
830
831
echo
832
echo "== ancestor references another ancestor =="
833
@@ -XXX,XX +XXX,XX @@ _img_info --backing-chain
834
835
_make_test_img $size
836
mv "$TEST_IMG" "$TEST_IMG.1.base"
837
-_make_test_img -b "$TEST_IMG.1.base" $size
838
+_make_test_img -b "$TEST_IMG.1.base" -F $IMGFMT $size
839
mv "$TEST_IMG" "$TEST_IMG.2.base"
840
-_make_test_img -b "$TEST_IMG.2.base" $size
841
+_make_test_img -b "$TEST_IMG.2.base" -F $IMGFMT $size
842
843
echo
844
echo "== finite chain of length 3 (human) =="
845
diff --git a/tests/qemu-iotests/043.out b/tests/qemu-iotests/043.out
846
index XXXXXXX..XXXXXXX 100644
847
--- a/tests/qemu-iotests/043.out
848
+++ b/tests/qemu-iotests/043.out
849
@@ -XXX,XX +XXX,XX @@ Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728
850
== backing file references self ==
851
qemu-img: Backing file 'TEST_DIR/t.IMGFMT' creates an infinite loop.
852
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728
853
-Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728 backing_file=TEST_DIR/t.IMGFMT.base
854
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
855
856
== parent references self ==
857
qemu-img: Backing file 'TEST_DIR/t.IMGFMT' creates an infinite loop.
858
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728
859
-Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728 backing_file=TEST_DIR/t.IMGFMT.1.base
860
-Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728 backing_file=TEST_DIR/t.IMGFMT.2.base
861
-Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728 backing_file=TEST_DIR/t.IMGFMT.3.base
862
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728 backing_file=TEST_DIR/t.IMGFMT.1.base backing_fmt=IMGFMT
863
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728 backing_file=TEST_DIR/t.IMGFMT.2.base backing_fmt=IMGFMT
864
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728 backing_file=TEST_DIR/t.IMGFMT.3.base backing_fmt=IMGFMT
865
866
== ancestor references another ancestor ==
867
qemu-img: Backing file 'TEST_DIR/t.IMGFMT.2.base' creates an infinite loop.
868
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728
869
-Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728 backing_file=TEST_DIR/t.IMGFMT.1.base
870
-Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728 backing_file=TEST_DIR/t.IMGFMT.2.base
871
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728 backing_file=TEST_DIR/t.IMGFMT.1.base backing_fmt=IMGFMT
872
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728 backing_file=TEST_DIR/t.IMGFMT.2.base backing_fmt=IMGFMT
873
874
== finite chain of length 3 (human) ==
875
image: TEST_DIR/t.IMGFMT
876
@@ -XXX,XX +XXX,XX @@ file format: IMGFMT
877
virtual size: 128 MiB (134217728 bytes)
878
cluster_size: 65536
879
backing file: TEST_DIR/t.IMGFMT.2.base
880
+backing file format: IMGFMT
881
882
image: TEST_DIR/t.IMGFMT.2.base
883
file format: IMGFMT
884
virtual size: 128 MiB (134217728 bytes)
885
cluster_size: 65536
886
backing file: TEST_DIR/t.IMGFMT.1.base
887
+backing file format: IMGFMT
888
889
image: TEST_DIR/t.IMGFMT.1.base
890
file format: IMGFMT
891
@@ -XXX,XX +XXX,XX @@ cluster_size: 65536
892
== finite chain of length 3 (json) ==
893
[
894
{
895
+ "backing-filename-format": "IMGFMT",
896
"virtual-size": 134217728,
897
"filename": "TEST_DIR/t.IMGFMT",
898
"cluster-size": 65536,
899
@@ -XXX,XX +XXX,XX @@ cluster_size: 65536
900
"dirty-flag": false
901
},
902
{
903
+ "backing-filename-format": "IMGFMT",
904
"virtual-size": 134217728,
905
"filename": "TEST_DIR/t.IMGFMT.2.base",
906
"cluster-size": 65536,
907
diff --git a/tests/qemu-iotests/046 b/tests/qemu-iotests/046
908
index XXXXXXX..XXXXXXX 100755
909
--- a/tests/qemu-iotests/046
910
+++ b/tests/qemu-iotests/046
911
@@ -XXX,XX +XXX,XX @@ backing_io 0 32 write | $QEMU_IO "$TEST_IMG" | _filter_qemu_io
912
913
mv "$TEST_IMG" "$TEST_IMG.base"
914
915
-_make_test_img -b "$TEST_IMG.base" 6G
916
+_make_test_img -b "$TEST_IMG.base" -F $IMGFMT 6G
917
918
echo
919
echo "== Some concurrent requests touching the same cluster =="
920
diff --git a/tests/qemu-iotests/046.out b/tests/qemu-iotests/046.out
921
index XXXXXXX..XXXXXXX 100644
922
--- a/tests/qemu-iotests/046.out
923
+++ b/tests/qemu-iotests/046.out
924
@@ -XXX,XX +XXX,XX @@ wrote 65536/65536 bytes at offset 1966080
925
64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
926
wrote 65536/65536 bytes at offset 2031616
927
64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
928
-Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=6442450944 backing_file=TEST_DIR/t.IMGFMT.base
929
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=6442450944 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
930
931
== Some concurrent requests touching the same cluster ==
932
blkdebug: Suspended request 'A'
933
diff --git a/tests/qemu-iotests/050 b/tests/qemu-iotests/050
934
index XXXXXXX..XXXXXXX 100755
935
--- a/tests/qemu-iotests/050
936
+++ b/tests/qemu-iotests/050
937
@@ -XXX,XX +XXX,XX @@ $QEMU_IO -c "write -P 0x5a 0 1048576" "$TEST_IMG" | _filter_qemu_io
938
939
TEST_IMG="$TEST_IMG_SAVE"
940
941
-_make_test_img -b "$TEST_IMG.old" $size
942
+_make_test_img -b "$TEST_IMG.old" -F $IMGFMT $size
943
$QEMU_IO -c "write -z 0 1048576" "$TEST_IMG" | _filter_qemu_io
944
945
echo
946
echo "== Rebasing the image =="
947
948
-$QEMU_IMG rebase -b "$TEST_IMG.new" "$TEST_IMG"
949
+$QEMU_IMG rebase -b "$TEST_IMG.new" -F $IMGFMT "$TEST_IMG"
950
$QEMU_IO -c "read -P 0x00 0 1048576" "$TEST_IMG" | _filter_qemu_io
951
952
# success, all done
953
diff --git a/tests/qemu-iotests/050.out b/tests/qemu-iotests/050.out
954
index XXXXXXX..XXXXXXX 100644
955
--- a/tests/qemu-iotests/050.out
956
+++ b/tests/qemu-iotests/050.out
957
@@ -XXX,XX +XXX,XX @@ wrote 1048576/1048576 bytes at offset 0
958
Formatting 'TEST_DIR/t.IMGFMT.new', fmt=IMGFMT size=10485760
959
wrote 1048576/1048576 bytes at offset 0
960
1 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
961
-Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=10485760 backing_file=TEST_DIR/t.IMGFMT.old
962
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=10485760 backing_file=TEST_DIR/t.IMGFMT.old backing_fmt=IMGFMT
963
wrote 1048576/1048576 bytes at offset 0
964
1 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
965
966
diff --git a/tests/qemu-iotests/051 b/tests/qemu-iotests/051
967
index XXXXXXX..XXXXXXX 100755
968
--- a/tests/qemu-iotests/051
969
+++ b/tests/qemu-iotests/051
970
@@ -XXX,XX +XXX,XX @@ device_id="drive0"
971
_make_test_img $size
972
cp "$TEST_IMG" "$TEST_IMG.orig"
973
mv "$TEST_IMG" "$TEST_IMG.base"
974
-_make_test_img -b "$TEST_IMG.base" $size
975
+_make_test_img -b "$TEST_IMG.base" -F $IMGFMT $size
976
977
echo
978
echo === Unknown option ===
979
diff --git a/tests/qemu-iotests/051.out b/tests/qemu-iotests/051.out
980
index XXXXXXX..XXXXXXX 100644
981
--- a/tests/qemu-iotests/051.out
982
+++ b/tests/qemu-iotests/051.out
983
@@ -XXX,XX +XXX,XX @@
984
QA output created by 051
985
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728
986
-Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728 backing_file=TEST_DIR/t.IMGFMT.base
987
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
988
989
=== Unknown option ===
990
991
diff --git a/tests/qemu-iotests/051.pc.out b/tests/qemu-iotests/051.pc.out
992
index XXXXXXX..XXXXXXX 100644
993
--- a/tests/qemu-iotests/051.pc.out
994
+++ b/tests/qemu-iotests/051.pc.out
995
@@ -XXX,XX +XXX,XX @@
996
QA output created by 051
997
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728
998
-Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728 backing_file=TEST_DIR/t.IMGFMT.base
999
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
1000
1001
=== Unknown option ===
1002
1003
diff --git a/tests/qemu-iotests/056 b/tests/qemu-iotests/056
1004
index XXXXXXX..XXXXXXX 100755
1005
--- a/tests/qemu-iotests/056
1006
+++ b/tests/qemu-iotests/056
1007
@@ -XXX,XX +XXX,XX @@ class TestSyncModesNoneAndTop(iotests.QMPTestCase):
1008
1009
def setUp(self):
1010
create_image(backing_img, TestSyncModesNoneAndTop.image_len)
1011
- qemu_img('create', '-f', iotests.imgfmt, '-o', 'backing_file=%s' % backing_img, test_img)
1012
+ qemu_img('create', '-f', iotests.imgfmt,
1013
+ '-o', 'backing_file=%s' % backing_img, '-F', 'raw', test_img)
1014
qemu_io('-c', 'write -P0x41 0 512', test_img)
1015
qemu_io('-c', 'write -P0xd5 1M 32k', test_img)
1016
qemu_io('-c', 'write -P0xdc 32M 124k', test_img)
1017
diff --git a/tests/qemu-iotests/060 b/tests/qemu-iotests/060
1018
index XXXXXXX..XXXXXXX 100755
1019
--- a/tests/qemu-iotests/060
1020
+++ b/tests/qemu-iotests/060
1021
@@ -XXX,XX +XXX,XX @@ TEST_IMG=$BACKING_IMG _make_test_img 1G
1022
1023
$QEMU_IO -c 'write 0k 64k' "$BACKING_IMG" | _filter_qemu_io
1024
1025
-_make_test_img -b "$BACKING_IMG" 1G
1026
+_make_test_img -b "$BACKING_IMG" -F $IMGFMT 1G
1027
# Write two clusters, the second one enforces creation of an L2 table after
1028
# the first data cluster.
1029
$QEMU_IO -c 'write 0k 64k' -c 'write 512M 64k' "$TEST_IMG" | _filter_qemu_io
1030
diff --git a/tests/qemu-iotests/060.out b/tests/qemu-iotests/060.out
1031
index XXXXXXX..XXXXXXX 100644
1032
--- a/tests/qemu-iotests/060.out
1033
+++ b/tests/qemu-iotests/060.out
1034
@@ -XXX,XX +XXX,XX @@ read 512/512 bytes at offset 0
1035
Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=1073741824
1036
wrote 65536/65536 bytes at offset 0
1037
64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
1038
-Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=1073741824 backing_file=TEST_DIR/t.IMGFMT.base
1039
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=1073741824 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
1040
wrote 65536/65536 bytes at offset 0
1041
64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
1042
wrote 65536/65536 bytes at offset 536870912
1043
diff --git a/tests/qemu-iotests/061 b/tests/qemu-iotests/061
1044
index XXXXXXX..XXXXXXX 100755
1045
--- a/tests/qemu-iotests/061
1046
+++ b/tests/qemu-iotests/061
1047
@@ -XXX,XX +XXX,XX @@ echo "=== Testing zero expansion on backed image ==="
1048
echo
1049
TEST_IMG="$TEST_IMG.base" _make_test_img -o "compat=1.1" 64M
1050
$QEMU_IO -c "write -P 0x2a 0 128k" "$TEST_IMG.base" | _filter_qemu_io
1051
-_make_test_img -o "compat=1.1" -b "$TEST_IMG.base" 64M
1052
+_make_test_img -o "compat=1.1" -b "$TEST_IMG.base" -F $IMGFMT 64M
1053
$QEMU_IO -c "read -P 0x2a 0 128k" -c "write -z 0 64k" "$TEST_IMG" | _filter_qemu_io
1054
$QEMU_IMG amend -o "compat=0.10" "$TEST_IMG"
1055
_check_test_img
1056
@@ -XXX,XX +XXX,XX @@ echo "=== Testing zero expansion on backed inactive clusters ==="
1057
echo
1058
TEST_IMG="$TEST_IMG.base" _make_test_img -o "compat=1.1" 64M
1059
$QEMU_IO -c "write -P 0x2a 0 128k" "$TEST_IMG.base" | _filter_qemu_io
1060
-_make_test_img -o "compat=1.1" -b "$TEST_IMG.base" 64M
1061
+_make_test_img -o "compat=1.1" -b "$TEST_IMG.base" -F $IMGFMT 64M
1062
$QEMU_IO -c "write -z 0 64k" "$TEST_IMG" | _filter_qemu_io
1063
$QEMU_IMG snapshot -c foo "$TEST_IMG"
1064
$QEMU_IO -c "write -P 0x42 0 128k" "$TEST_IMG" | _filter_qemu_io
1065
@@ -XXX,XX +XXX,XX @@ echo "=== Testing zero expansion on backed image with shared L2 table ==="
1066
echo
1067
TEST_IMG="$TEST_IMG.base" _make_test_img -o "compat=1.1" 64M
1068
$QEMU_IO -c "write -P 0x2a 0 128k" "$TEST_IMG.base" | _filter_qemu_io
1069
-_make_test_img -o "compat=1.1" -b "$TEST_IMG.base" 64M
1070
+_make_test_img -o "compat=1.1" -b "$TEST_IMG.base" -F $IMGFMT 64M
1071
$QEMU_IO -c "write -z 0 128k" "$TEST_IMG" | _filter_qemu_io
1072
$QEMU_IMG snapshot -c foo "$TEST_IMG"
1073
$QEMU_IMG amend -o "compat=0.10" "$TEST_IMG"
1074
@@ -XXX,XX +XXX,XX @@ echo
1075
echo "=== Testing progress report without snapshot ==="
1076
echo
1077
TEST_IMG="$TEST_IMG.base" _make_test_img -o "compat=1.1" 4G
1078
-_make_test_img -o "compat=1.1" -b "$TEST_IMG.base" 4G
1079
+_make_test_img -o "compat=1.1" -b "$TEST_IMG.base" -F $IMGFMT 4G
1080
$QEMU_IO -c "write -z 0 64k" \
1081
-c "write -z 1G 64k" \
1082
-c "write -z 2G 64k" \
1083
@@ -XXX,XX +XXX,XX @@ echo
1084
echo "=== Testing progress report with snapshot ==="
1085
echo
1086
TEST_IMG="$TEST_IMG.base" _make_test_img -o "compat=1.1" 4G
1087
-_make_test_img -o "compat=1.1" -b "$TEST_IMG.base" 4G
1088
+_make_test_img -o "compat=1.1" -b "$TEST_IMG.base" -F $IMGFMT 4G
1089
$QEMU_IO -c "write -z 0 64k" \
1090
-c "write -z 1G 64k" \
1091
-c "write -z 2G 64k" \
1092
diff --git a/tests/qemu-iotests/061.out b/tests/qemu-iotests/061.out
1093
index XXXXXXX..XXXXXXX 100644
1094
--- a/tests/qemu-iotests/061.out
1095
+++ b/tests/qemu-iotests/061.out
1096
@@ -XXX,XX +XXX,XX @@ read 131072/131072 bytes at offset 0
1097
Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=67108864
1098
wrote 131072/131072 bytes at offset 0
1099
128 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
1100
-Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864 backing_file=TEST_DIR/t.IMGFMT.base
1101
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
1102
read 131072/131072 bytes at offset 0
1103
128 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
1104
wrote 65536/65536 bytes at offset 0
1105
@@ -XXX,XX +XXX,XX @@ read 65536/65536 bytes at offset 65536
1106
Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=67108864
1107
wrote 131072/131072 bytes at offset 0
1108
128 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
1109
-Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864 backing_file=TEST_DIR/t.IMGFMT.base
1110
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
1111
wrote 65536/65536 bytes at offset 0
1112
64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
1113
wrote 131072/131072 bytes at offset 0
1114
@@ -XXX,XX +XXX,XX @@ read 65536/65536 bytes at offset 65536
1115
Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=67108864
1116
wrote 131072/131072 bytes at offset 0
1117
128 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
1118
-Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864 backing_file=TEST_DIR/t.IMGFMT.base
1119
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
1120
wrote 131072/131072 bytes at offset 0
1121
128 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
1122
No errors were found on the image.
1123
@@ -XXX,XX +XXX,XX @@ read 67108864/67108864 bytes at offset 0
1124
=== Testing progress report without snapshot ===
1125
1126
Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=4294967296
1127
-Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=4294967296 backing_file=TEST_DIR/t.IMGFMT.base
1128
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=4294967296 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
1129
wrote 65536/65536 bytes at offset 0
1130
64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
1131
wrote 65536/65536 bytes at offset 1073741824
1132
@@ -XXX,XX +XXX,XX @@ No errors were found on the image.
1133
=== Testing progress report with snapshot ===
1134
1135
Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=4294967296
1136
-Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=4294967296 backing_file=TEST_DIR/t.IMGFMT.base
1137
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=4294967296 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
1138
wrote 65536/65536 bytes at offset 0
1139
64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
1140
wrote 65536/65536 bytes at offset 1073741824
1141
diff --git a/tests/qemu-iotests/069 b/tests/qemu-iotests/069
1142
index XXXXXXX..XXXXXXX 100755
1143
--- a/tests/qemu-iotests/069
1144
+++ b/tests/qemu-iotests/069
1145
@@ -XXX,XX +XXX,XX @@ echo
1146
echo "=== Creating an image with a backing file and deleting that file ==="
1147
echo
1148
TEST_IMG="$TEST_IMG.base" _make_test_img $IMG_SIZE
1149
-_make_test_img -b "$TEST_IMG.base" $IMG_SIZE
1150
+_make_test_img -b "$TEST_IMG.base" -F $IMGFMT $IMG_SIZE
1151
_rm_test_img "$TEST_IMG.base"
1152
# Just open the image and close it right again (this should print an error message)
1153
$QEMU_IO -c quit "$TEST_IMG" 2>&1 | _filter_testdir | _filter_imgfmt
1154
diff --git a/tests/qemu-iotests/069.out b/tests/qemu-iotests/069.out
1155
index XXXXXXX..XXXXXXX 100644
1156
--- a/tests/qemu-iotests/069.out
1157
+++ b/tests/qemu-iotests/069.out
1158
@@ -XXX,XX +XXX,XX @@ QA output created by 069
1159
=== Creating an image with a backing file and deleting that file ===
1160
1161
Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=131072
1162
-Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=131072 backing_file=TEST_DIR/t.IMGFMT.base
1163
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=131072 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
1164
qemu-io: can't open device TEST_DIR/t.IMGFMT: Could not open backing file: Could not open 'TEST_DIR/t.IMGFMT.base': No such file or directory
1165
*** done
1166
diff --git a/tests/qemu-iotests/073 b/tests/qemu-iotests/073
1167
index XXXXXXX..XXXXXXX 100755
1168
--- a/tests/qemu-iotests/073
1169
+++ b/tests/qemu-iotests/073
1170
@@ -XXX,XX +XXX,XX @@ echo "== creating backing file =="
1171
1172
TEST_IMG="$TEST_IMG.base" _make_test_img $size
1173
1174
-_make_test_img -b "$TEST_IMG.base"
1175
+_make_test_img -b "$TEST_IMG.base" -F $IMGFMT
1176
$QEMU_IO -c "write -P 0xa5 0 $size" "$TEST_IMG.base" | _filter_qemu_io
1177
1178
echo
1179
diff --git a/tests/qemu-iotests/073.out b/tests/qemu-iotests/073.out
1180
index XXXXXXX..XXXXXXX 100644
1181
--- a/tests/qemu-iotests/073.out
1182
+++ b/tests/qemu-iotests/073.out
1183
@@ -XXX,XX +XXX,XX @@ QA output created by 073
1184
1185
== creating backing file ==
1186
Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=134217728
1187
-Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728 backing_file=TEST_DIR/t.IMGFMT.base
1188
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
1189
wrote 134217728/134217728 bytes at offset 0
1190
128 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
1191
1192
diff --git a/tests/qemu-iotests/082 b/tests/qemu-iotests/082
1193
index XXXXXXX..XXXXXXX 100755
1194
--- a/tests/qemu-iotests/082
1195
+++ b/tests/qemu-iotests/082
1196
@@ -XXX,XX +XXX,XX @@ run_qemu_img create -f $IMGFMT -o cluster_size=4k -o help "$TEST_IMG" $size
1197
run_qemu_img create -f $IMGFMT -o cluster_size=4k -o \? "$TEST_IMG" $size
1198
1199
# Looks like a help option, but is part of the backing file name
1200
-run_qemu_img create -f $IMGFMT -u -o backing_file="$TEST_IMG",,help "$TEST_IMG" $size
1201
-run_qemu_img create -f $IMGFMT -u -o backing_file="$TEST_IMG",,\? "$TEST_IMG" $size
1202
+run_qemu_img create -f $IMGFMT -u -o backing_file="$TEST_IMG",,help \
1203
+ -F $IMGFMT "$TEST_IMG" $size
1204
+run_qemu_img create -f $IMGFMT -u -o backing_file="$TEST_IMG",,\? \
1205
+ -F $IMGFMT "$TEST_IMG" $size
1206
1207
# Try to trick qemu-img into creating escaped commas
1208
run_qemu_img create -f $IMGFMT -o backing_file="$TEST_IMG", -o help "$TEST_IMG" $size
1209
@@ -XXX,XX +XXX,XX @@ run_qemu_img convert -O $IMGFMT -o cluster_size=4k -o help "$TEST_IMG" "$TEST_IM
1210
run_qemu_img convert -O $IMGFMT -o cluster_size=4k -o \? "$TEST_IMG" "$TEST_IMG".base
1211
1212
# Looks like a help option, but is part of the backing file name
1213
-run_qemu_img convert -O $IMGFMT -o backing_file="$TEST_IMG",,help "$TEST_IMG" "$TEST_IMG".base
1214
-run_qemu_img convert -O $IMGFMT -o backing_file="$TEST_IMG",,\? "$TEST_IMG" "$TEST_IMG".base
1215
+run_qemu_img convert -O $IMGFMT -o backing_fmt=$IMGFMT,backing_file="$TEST_IMG",,help "$TEST_IMG" "$TEST_IMG".base
1216
+run_qemu_img convert -O $IMGFMT -o backing_fmt=$IMGFMT,backing_file="$TEST_IMG",,\? "$TEST_IMG" "$TEST_IMG".base
1217
1218
# Try to trick qemu-img into creating escaped commas
1219
run_qemu_img convert -O $IMGFMT -o backing_file="$TEST_IMG", -o help "$TEST_IMG" "$TEST_IMG".base
1220
diff --git a/tests/qemu-iotests/082.out b/tests/qemu-iotests/082.out
1221
index XXXXXXX..XXXXXXX 100644
1222
--- a/tests/qemu-iotests/082.out
1223
+++ b/tests/qemu-iotests/082.out
1224
@@ -XXX,XX +XXX,XX @@ Supported options:
1225
refcount_bits=<num> - Width of a reference count entry in bits
1226
size=<size> - Virtual disk size
1227
1228
-Testing: create -f qcow2 -u -o backing_file=TEST_DIR/t.qcow2,,help TEST_DIR/t.qcow2 128M
1229
-Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 size=134217728 backing_file=TEST_DIR/t.qcow2,,help cluster_size=65536 lazy_refcounts=off refcount_bits=16 compression_type=zlib
1230
+Testing: create -f qcow2 -u -o backing_file=TEST_DIR/t.qcow2,,help -F qcow2 TEST_DIR/t.qcow2 128M
1231
+Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 size=134217728 backing_file=TEST_DIR/t.qcow2,,help backing_fmt=qcow2 cluster_size=65536 lazy_refcounts=off refcount_bits=16 compression_type=zlib
1232
1233
-Testing: create -f qcow2 -u -o backing_file=TEST_DIR/t.qcow2,,? TEST_DIR/t.qcow2 128M
1234
-Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 size=134217728 backing_file=TEST_DIR/t.qcow2,,? cluster_size=65536 lazy_refcounts=off refcount_bits=16 compression_type=zlib
1235
+Testing: create -f qcow2 -u -o backing_file=TEST_DIR/t.qcow2,,? -F qcow2 TEST_DIR/t.qcow2 128M
1236
+Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 size=134217728 backing_file=TEST_DIR/t.qcow2,,? backing_fmt=qcow2 cluster_size=65536 lazy_refcounts=off refcount_bits=16 compression_type=zlib
1237
1238
Testing: create -f qcow2 -o backing_file=TEST_DIR/t.qcow2, -o help TEST_DIR/t.qcow2 128M
1239
qemu-img: Invalid option list: backing_file=TEST_DIR/t.qcow2,
1240
@@ -XXX,XX +XXX,XX @@ Supported options:
1241
refcount_bits=<num> - Width of a reference count entry in bits
1242
size=<size> - Virtual disk size
1243
1244
-Testing: convert -O qcow2 -o backing_file=TEST_DIR/t.qcow2,,help TEST_DIR/t.qcow2 TEST_DIR/t.qcow2.base
1245
+Testing: convert -O qcow2 -o backing_fmt=qcow2,backing_file=TEST_DIR/t.qcow2,,help TEST_DIR/t.qcow2 TEST_DIR/t.qcow2.base
1246
qemu-img: Could not open 'TEST_DIR/t.qcow2.base': Could not open backing file: Could not open 'TEST_DIR/t.qcow2,help': No such file or directory
1247
1248
-Testing: convert -O qcow2 -o backing_file=TEST_DIR/t.qcow2,,? TEST_DIR/t.qcow2 TEST_DIR/t.qcow2.base
1249
+Testing: convert -O qcow2 -o backing_fmt=qcow2,backing_file=TEST_DIR/t.qcow2,,? TEST_DIR/t.qcow2 TEST_DIR/t.qcow2.base
1250
qemu-img: Could not open 'TEST_DIR/t.qcow2.base': Could not open backing file: Could not open 'TEST_DIR/t.qcow2,?': No such file or directory
1251
1252
Testing: convert -O qcow2 -o backing_file=TEST_DIR/t.qcow2, -o help TEST_DIR/t.qcow2 TEST_DIR/t.qcow2.base
1253
diff --git a/tests/qemu-iotests/085 b/tests/qemu-iotests/085
1254
index XXXXXXX..XXXXXXX 100755
1255
--- a/tests/qemu-iotests/085
1256
+++ b/tests/qemu-iotests/085
1257
@@ -XXX,XX +XXX,XX @@ add_snapshot_image()
1258
{
1259
base_image="${TEST_DIR}/$((${1}-1))-${snapshot_virt0}"
1260
snapshot_file="${TEST_DIR}/${1}-${snapshot_virt0}"
1261
- TEST_IMG=$snapshot_file _make_test_img -u -b "${base_image}" "$size"
1262
+ TEST_IMG=$snapshot_file _make_test_img -u -b "${base_image}" -F $IMGFMT "$size"
1263
do_blockdev_add "$1" "'backing': null, " "${snapshot_file}"
1264
}
1265
1266
@@ -XXX,XX +XXX,XX @@ echo
1267
SNAPSHOTS=$((${SNAPSHOTS}+1))
1268
1269
TEST_IMG="$TEST_IMG.base" _make_test_img "$size"
1270
-_make_test_img -b "${TEST_IMG}.base" "$size"
1271
+_make_test_img -b "${TEST_IMG}.base" -F $IMGFMT "$size"
1272
do_blockdev_add ${SNAPSHOTS} "" "${TEST_IMG}"
1273
blockdev_snapshot ${SNAPSHOTS} error
1274
1275
diff --git a/tests/qemu-iotests/085.out b/tests/qemu-iotests/085.out
1276
index XXXXXXX..XXXXXXX 100644
1277
--- a/tests/qemu-iotests/085.out
1278
+++ b/tests/qemu-iotests/085.out
1279
@@ -XXX,XX +XXX,XX @@ Formatting 'TEST_DIR/10-snapshot-v1.qcow2', fmt=qcow2 size=134217728 backing_fil
1280
1281
=== Create a couple of snapshots using blockdev-snapshot ===
1282
1283
-Formatting 'TEST_DIR/11-snapshot-v0.IMGFMT', fmt=IMGFMT size=134217728 backing_file=TEST_DIR/10-snapshot-v0.IMGFMT
1284
+Formatting 'TEST_DIR/11-snapshot-v0.IMGFMT', fmt=IMGFMT size=134217728 backing_file=TEST_DIR/10-snapshot-v0.IMGFMT backing_fmt=IMGFMT
1285
{ 'execute': 'blockdev-add', 'arguments': { 'driver': 'IMGFMT', 'node-name': 'snap_11', 'backing': null, 'file': { 'driver': 'file', 'filename': 'TEST_DIR/11-snapshot-v0.IMGFMT', 'node-name': 'file_11' } } }
1286
{"return": {}}
1287
{ 'execute': 'blockdev-snapshot', 'arguments': { 'node': 'virtio0', 'overlay':'snap_11' } }
1288
{"return": {}}
1289
-Formatting 'TEST_DIR/12-snapshot-v0.IMGFMT', fmt=IMGFMT size=134217728 backing_file=TEST_DIR/11-snapshot-v0.IMGFMT
1290
+Formatting 'TEST_DIR/12-snapshot-v0.IMGFMT', fmt=IMGFMT size=134217728 backing_file=TEST_DIR/11-snapshot-v0.IMGFMT backing_fmt=IMGFMT
1291
{ 'execute': 'blockdev-add', 'arguments': { 'driver': 'IMGFMT', 'node-name': 'snap_12', 'backing': null, 'file': { 'driver': 'file', 'filename': 'TEST_DIR/12-snapshot-v0.IMGFMT', 'node-name': 'file_12' } } }
1292
{"return": {}}
1293
{ 'execute': 'blockdev-snapshot', 'arguments': { 'node': 'virtio0', 'overlay':'snap_12' } }
1294
@@ -XXX,XX +XXX,XX @@ Formatting 'TEST_DIR/12-snapshot-v0.IMGFMT', fmt=IMGFMT size=134217728 backing_f
1295
=== Invalid command - snapshot node has a backing image ===
1296
1297
Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=134217728
1298
-Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728 backing_file=TEST_DIR/t.IMGFMT.base
1299
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
1300
{ 'execute': 'blockdev-add', 'arguments': { 'driver': 'IMGFMT', 'node-name': 'snap_13', 'file': { 'driver': 'file', 'filename': 'TEST_DIR/t.IMGFMT', 'node-name': 'file_13' } } }
1301
{"return": {}}
1302
{ 'execute': 'blockdev-snapshot', 'arguments': { 'node': 'virtio0', 'overlay':'snap_13' } }
1303
diff --git a/tests/qemu-iotests/089 b/tests/qemu-iotests/089
1304
index XXXXXXX..XXXXXXX 100755
1305
--- a/tests/qemu-iotests/089
1306
+++ b/tests/qemu-iotests/089
1307
@@ -XXX,XX +XXX,XX @@ echo
1308
echo "=== Testing correct handling of 'backing':null ==="
1309
echo
1310
1311
-_make_test_img -b "$TEST_IMG.base" $IMG_SIZE
1312
+_make_test_img -b "$TEST_IMG.base" -F $IMGFMT $IMG_SIZE
1313
1314
# This should read 42
1315
$QEMU_IO -c 'read -P 42 0 512' "$TEST_IMG" | _filter_qemu_io
1316
diff --git a/tests/qemu-iotests/089.out b/tests/qemu-iotests/089.out
1317
index XXXXXXX..XXXXXXX 100644
1318
--- a/tests/qemu-iotests/089.out
1319
+++ b/tests/qemu-iotests/089.out
1320
@@ -XXX,XX +XXX,XX @@ read 512/512 bytes at offset 0
1321
1322
=== Testing correct handling of 'backing':null ===
1323
1324
-Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864 backing_file=TEST_DIR/t.IMGFMT.base
1325
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
1326
read 512/512 bytes at offset 0
1327
512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
1328
read 512/512 bytes at offset 0
1329
diff --git a/tests/qemu-iotests/095 b/tests/qemu-iotests/095
1330
index XXXXXXX..XXXXXXX 100755
1331
--- a/tests/qemu-iotests/095
1332
+++ b/tests/qemu-iotests/095
1333
@@ -XXX,XX +XXX,XX @@ size_larger=100M
1334
1335
TEST_IMG="$TEST_IMG.base" _make_test_img $size_smaller
1336
1337
-TEST_IMG="$TEST_IMG.snp1" _make_test_img -b "$TEST_IMG.base" $size_larger
1338
+TEST_IMG="$TEST_IMG.snp1" _make_test_img -b "$TEST_IMG.base" -F $IMGFMT $size_larger
1339
1340
-_make_test_img -b "${TEST_IMG}.snp1" $size_larger
1341
+_make_test_img -b "${TEST_IMG}.snp1" -F $IMGFMT $size_larger
1342
1343
echo
1344
echo "=== Base image info before commit and resize ==="
1345
diff --git a/tests/qemu-iotests/095.out b/tests/qemu-iotests/095.out
1346
index XXXXXXX..XXXXXXX 100644
1347
--- a/tests/qemu-iotests/095.out
1348
+++ b/tests/qemu-iotests/095.out
1349
@@ -XXX,XX +XXX,XX @@
1350
QA output created by 095
1351
Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=5242880
1352
-Formatting 'TEST_DIR/t.IMGFMT.snp1', fmt=IMGFMT size=104857600 backing_file=TEST_DIR/t.IMGFMT.base
1353
-Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=104857600 backing_file=TEST_DIR/t.IMGFMT.snp1
1354
+Formatting 'TEST_DIR/t.IMGFMT.snp1', fmt=IMGFMT size=104857600 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
1355
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=104857600 backing_file=TEST_DIR/t.IMGFMT.snp1 backing_fmt=IMGFMT
1356
1357
=== Base image info before commit and resize ===
1358
image: TEST_DIR/t.IMGFMT.base
1359
diff --git a/tests/qemu-iotests/097 b/tests/qemu-iotests/097
1360
index XXXXXXX..XXXXXXX 100755
1361
--- a/tests/qemu-iotests/097
1362
+++ b/tests/qemu-iotests/097
1363
@@ -XXX,XX +XXX,XX @@ echo
1364
1365
len=$((2100 * 1024 * 1024 + 512)) # larger than 2G, and not cluster aligned
1366
TEST_IMG="$TEST_IMG.base" _make_test_img $len
1367
-TEST_IMG="$TEST_IMG.itmd" _make_test_img -b "$TEST_IMG.base" $len
1368
-_make_test_img -b "$TEST_IMG.itmd" $len
1369
+TEST_IMG="$TEST_IMG.itmd" _make_test_img -b "$TEST_IMG.base" -F $IMGFMT $len
1370
+_make_test_img -b "$TEST_IMG.itmd" -F $IMGFMT $len
1371
1372
$QEMU_IO -c "write -P 1 0x7ffd0000 192k" "$TEST_IMG.base" | _filter_qemu_io
1373
$QEMU_IO -c "write -P 2 0x7ffe0000 128k" "$TEST_IMG.itmd" | _filter_qemu_io
1374
diff --git a/tests/qemu-iotests/097.out b/tests/qemu-iotests/097.out
1375
index XXXXXXX..XXXXXXX 100644
1376
--- a/tests/qemu-iotests/097.out
1377
+++ b/tests/qemu-iotests/097.out
1378
@@ -XXX,XX +XXX,XX @@ QA output created by 097
1379
=== Test pass 0 ===
1380
1381
Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=2202010112
1382
-Formatting 'TEST_DIR/t.IMGFMT.itmd', fmt=IMGFMT size=2202010112 backing_file=TEST_DIR/t.IMGFMT.base
1383
-Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=2202010112 backing_file=TEST_DIR/t.IMGFMT.itmd
1384
+Formatting 'TEST_DIR/t.IMGFMT.itmd', fmt=IMGFMT size=2202010112 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
1385
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=2202010112 backing_file=TEST_DIR/t.IMGFMT.itmd backing_fmt=IMGFMT
1386
wrote 196608/196608 bytes at offset 2147287040
1387
192 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
1388
wrote 131072/131072 bytes at offset 2147352576
1389
@@ -XXX,XX +XXX,XX @@ Offset Length File
1390
=== Test pass 1 ===
1391
1392
Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=2202010112
1393
-Formatting 'TEST_DIR/t.IMGFMT.itmd', fmt=IMGFMT size=2202010112 backing_file=TEST_DIR/t.IMGFMT.base
1394
-Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=2202010112 backing_file=TEST_DIR/t.IMGFMT.itmd
1395
+Formatting 'TEST_DIR/t.IMGFMT.itmd', fmt=IMGFMT size=2202010112 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
1396
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=2202010112 backing_file=TEST_DIR/t.IMGFMT.itmd backing_fmt=IMGFMT
1397
wrote 196608/196608 bytes at offset 2147287040
1398
192 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
1399
wrote 131072/131072 bytes at offset 2147352576
1400
@@ -XXX,XX +XXX,XX @@ Offset Length File
1401
=== Test pass 2 ===
1402
1403
Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=2202010112
1404
-Formatting 'TEST_DIR/t.IMGFMT.itmd', fmt=IMGFMT size=2202010112 backing_file=TEST_DIR/t.IMGFMT.base
1405
-Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=2202010112 backing_file=TEST_DIR/t.IMGFMT.itmd
1406
+Formatting 'TEST_DIR/t.IMGFMT.itmd', fmt=IMGFMT size=2202010112 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
1407
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=2202010112 backing_file=TEST_DIR/t.IMGFMT.itmd backing_fmt=IMGFMT
1408
wrote 196608/196608 bytes at offset 2147287040
1409
192 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
1410
wrote 131072/131072 bytes at offset 2147352576
1411
@@ -XXX,XX +XXX,XX @@ Offset Length File
1412
=== Test pass 3 ===
1413
1414
Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=2202010112
1415
-Formatting 'TEST_DIR/t.IMGFMT.itmd', fmt=IMGFMT size=2202010112 backing_file=TEST_DIR/t.IMGFMT.base
1416
-Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=2202010112 backing_file=TEST_DIR/t.IMGFMT.itmd
1417
+Formatting 'TEST_DIR/t.IMGFMT.itmd', fmt=IMGFMT size=2202010112 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
1418
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=2202010112 backing_file=TEST_DIR/t.IMGFMT.itmd backing_fmt=IMGFMT
1419
wrote 196608/196608 bytes at offset 2147287040
1420
192 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
1421
wrote 131072/131072 bytes at offset 2147352576
1422
diff --git a/tests/qemu-iotests/098 b/tests/qemu-iotests/098
1423
index XXXXXXX..XXXXXXX 100755
1424
--- a/tests/qemu-iotests/098
1425
+++ b/tests/qemu-iotests/098
1426
@@ -XXX,XX +XXX,XX @@ echo "=== $event ==="
1427
echo
1428
1429
TEST_IMG="$TEST_IMG.base" _make_test_img 64M
1430
-_make_test_img -b "$TEST_IMG.base" 64M
1431
+_make_test_img -b "$TEST_IMG.base" -F $IMGFMT 64M
1432
1433
# Some data that can be leaked when emptying the top image
1434
$QEMU_IO -c 'write 0 64k' "$TEST_IMG" | _filter_qemu_io
1435
diff --git a/tests/qemu-iotests/098.out b/tests/qemu-iotests/098.out
1436
index XXXXXXX..XXXXXXX 100644
1437
--- a/tests/qemu-iotests/098.out
1438
+++ b/tests/qemu-iotests/098.out
1439
@@ -XXX,XX +XXX,XX @@ QA output created by 098
1440
=== l1_update ===
1441
1442
Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=67108864
1443
-Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864 backing_file=TEST_DIR/t.IMGFMT.base
1444
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
1445
wrote 65536/65536 bytes at offset 0
1446
64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
1447
qemu-img: Failed to empty blkdebug:TEST_DIR/blkdebug.conf:TEST_DIR/t.IMGFMT: Input/output error
1448
@@ -XXX,XX +XXX,XX @@ No errors were found on the image.
1449
=== empty_image_prepare ===
1450
1451
Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=67108864
1452
-Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864 backing_file=TEST_DIR/t.IMGFMT.base
1453
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
1454
wrote 65536/65536 bytes at offset 0
1455
64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
1456
qemu-img: Failed to empty blkdebug:TEST_DIR/blkdebug.conf:TEST_DIR/t.IMGFMT: Input/output error
1457
@@ -XXX,XX +XXX,XX @@ No errors were found on the image.
1458
=== reftable_update ===
1459
1460
Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=67108864
1461
-Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864 backing_file=TEST_DIR/t.IMGFMT.base
1462
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
1463
wrote 65536/65536 bytes at offset 0
1464
64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
1465
qemu-img: Failed to empty blkdebug:TEST_DIR/blkdebug.conf:TEST_DIR/t.IMGFMT: Input/output error
1466
@@ -XXX,XX +XXX,XX @@ No errors were found on the image.
1467
=== refblock_alloc ===
1468
1469
Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=67108864
1470
-Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864 backing_file=TEST_DIR/t.IMGFMT.base
1471
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
1472
wrote 65536/65536 bytes at offset 0
1473
64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
1474
qemu-img: Failed to empty blkdebug:TEST_DIR/blkdebug.conf:TEST_DIR/t.IMGFMT: Input/output error
1475
diff --git a/tests/qemu-iotests/110 b/tests/qemu-iotests/110
1476
index XXXXXXX..XXXXXXX 100755
1477
--- a/tests/qemu-iotests/110
1478
+++ b/tests/qemu-iotests/110
1479
@@ -XXX,XX +XXX,XX @@ echo '=== Reconstructable filename ==='
1480
echo
1481
1482
TEST_IMG="$TEST_IMG.base" _make_test_img 64M
1483
-_make_test_img -b "$TEST_IMG_REL.base" 64M
1484
+_make_test_img -b "$TEST_IMG_REL.base" -F $IMGFMT 64M
1485
# qemu should be able to reconstruct the filename, so relative backing names
1486
# should work
1487
# (We have to filter the backing file format because vmdk always
1488
@@ -XXX,XX +XXX,XX @@ echo '=== Backing name is always relative to the backed image ==='
1489
echo
1490
1491
# omit the image size; it should work anyway
1492
-_make_test_img -b "$TEST_IMG_REL.base"
1493
+_make_test_img -b "$TEST_IMG_REL.base" -F $IMGFMT
1494
1495
echo
1496
echo '=== Nodes without a common directory ==='
1497
diff --git a/tests/qemu-iotests/110.out b/tests/qemu-iotests/110.out
1498
index XXXXXXX..XXXXXXX 100644
1499
--- a/tests/qemu-iotests/110.out
1500
+++ b/tests/qemu-iotests/110.out
1501
@@ -XXX,XX +XXX,XX @@ QA output created by 110
1502
=== Reconstructable filename ===
1503
1504
Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=67108864
1505
-Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864 backing_file=t.IMGFMT.base
1506
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864 backing_file=t.IMGFMT.base backing_fmt=IMGFMT
1507
image: TEST_DIR/t.IMGFMT
1508
file format: IMGFMT
1509
virtual size: 64 MiB (67108864 bytes)
1510
@@ -XXX,XX +XXX,XX @@ backing file: t.IMGFMT.base (actual path: TEST_DIR/t.IMGFMT.base)
1511
1512
=== Backing name is always relative to the backed image ===
1513
1514
-Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864 backing_file=t.IMGFMT.base
1515
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864 backing_file=t.IMGFMT.base backing_fmt=IMGFMT
1516
1517
=== Nodes without a common directory ===
1518
1519
diff --git a/tests/qemu-iotests/122 b/tests/qemu-iotests/122
1520
index XXXXXXX..XXXXXXX 100755
1521
--- a/tests/qemu-iotests/122
1522
+++ b/tests/qemu-iotests/122
1523
@@ -XXX,XX +XXX,XX @@ echo
1524
echo "=== Check allocation status regression with -B ==="
1525
echo
1526
1527
-_make_test_img -b "$TEST_IMG".base
1528
+_make_test_img -b "$TEST_IMG".base -F $IMGFMT
1529
$QEMU_IO -c "write -P 0x22 0 3M" "$TEST_IMG" 2>&1 | _filter_qemu_io | _filter_testdir
1530
-$QEMU_IMG convert -O $IMGFMT -B "$TEST_IMG".base "$TEST_IMG" "$TEST_IMG".orig
1531
+$QEMU_IMG convert -O $IMGFMT -B "$TEST_IMG".base \
1532
+ -o backing_fmt=$IMGFMT "$TEST_IMG" "$TEST_IMG".orig
1533
$QEMU_IMG map "$TEST_IMG".orig | _filter_qemu_img_map
1534
1535
1536
@@ -XXX,XX +XXX,XX @@ echo
1537
echo "=== Check that zero clusters are kept in overlay ==="
1538
echo
1539
1540
-_make_test_img -b "$TEST_IMG".base
1541
+_make_test_img -b "$TEST_IMG".base -F $IMGFMT
1542
1543
$QEMU_IO -c "write -P 0 0 3M" "$TEST_IMG" 2>&1 | _filter_qemu_io | _filter_testdir
1544
-$QEMU_IMG convert -O $IMGFMT -B "$TEST_IMG".base "$TEST_IMG" "$TEST_IMG".orig
1545
+$QEMU_IMG convert -O $IMGFMT -B "$TEST_IMG".base -o backing_fmt=$IMGFMT \
1546
+ "$TEST_IMG" "$TEST_IMG".orig
1547
$QEMU_IO -c "read -P 0 0 3M" "$TEST_IMG".orig 2>&1 | _filter_qemu_io | _filter_testdir
1548
-$QEMU_IMG convert -O $IMGFMT -c -B "$TEST_IMG".base "$TEST_IMG" "$TEST_IMG".orig
1549
+$QEMU_IMG convert -O $IMGFMT -c -B "$TEST_IMG".base -o backing_fmt=$IMGFMT \
1550
+ "$TEST_IMG" "$TEST_IMG".orig
1551
$QEMU_IO -c "read -P 0 0 3M" "$TEST_IMG".orig 2>&1 | _filter_qemu_io | _filter_testdir
1552
1553
$QEMU_IO -c "write -z 0 3M" "$TEST_IMG" 2>&1 | _filter_qemu_io | _filter_testdir
1554
-$QEMU_IMG convert -O $IMGFMT -B "$TEST_IMG".base "$TEST_IMG" "$TEST_IMG".orig
1555
+$QEMU_IMG convert -O $IMGFMT -B "$TEST_IMG".base -o backing_fmt=$IMGFMT \
1556
+ "$TEST_IMG" "$TEST_IMG".orig
1557
$QEMU_IO -c "read -P 0 0 3M" "$TEST_IMG".orig 2>&1 | _filter_qemu_io | _filter_testdir
1558
-$QEMU_IMG convert -O $IMGFMT -c -B "$TEST_IMG".base "$TEST_IMG" "$TEST_IMG".orig
1559
+$QEMU_IMG convert -O $IMGFMT -c -B "$TEST_IMG".base -o backing_fmt=$IMGFMT \
1560
+ "$TEST_IMG" "$TEST_IMG".orig
1561
$QEMU_IO -c "read -P 0 0 3M" "$TEST_IMG".orig 2>&1 | _filter_qemu_io | _filter_testdir
1562
1563
1564
@@ -XXX,XX +XXX,XX @@ TEST_IMG="$TEST_IMG".base _make_test_img 256M
1565
# We do not want such a zero write, however, because we are past the
1566
# end of the backing file on the target as well, so we do not need to
1567
# write anything there.
1568
-_make_test_img -b "$TEST_IMG".base 768M
1569
+_make_test_img -b "$TEST_IMG".base 768M -F $IMGFMT
1570
1571
# Use compat=0.10 as the output so there is no zero cluster support
1572
$QEMU_IMG convert -O $IMGFMT -B "$TEST_IMG".base -o compat=0.10 \
1573
- "$TEST_IMG" "$TEST_IMG".orig
1574
+ -o backing_fmt=$IMGFMT "$TEST_IMG" "$TEST_IMG".orig
1575
# See that nothing has been allocated past 64M
1576
$QEMU_IMG map "$TEST_IMG".orig | _filter_qemu_img_map
1577
1578
@@ -XXX,XX +XXX,XX @@ $QEMU_IO -c 'write -P 0x11 255M 1M' "$TEST_IMG".base 2>&1 | _filter_qemu_io
1579
$QEMU_IO -c 'write -P 0x22 600M 1M' "$TEST_IMG" 2>&1 | _filter_qemu_io
1580
1581
$QEMU_IMG convert -O $IMGFMT -B "$TEST_IMG".base -o compat=0.10 \
1582
- "$TEST_IMG" "$TEST_IMG".orig
1583
+ -o backing_fmt=$IMGFMT "$TEST_IMG" "$TEST_IMG".orig
1584
1585
$QEMU_IMG map "$TEST_IMG".orig | _filter_qemu_img_map
1586
$QEMU_IO -c 'read -P 0x11 255M 1M' \
1587
@@ -XXX,XX +XXX,XX @@ $QEMU_IMG map --output=json "$TEST_IMG".orig | _filter_qemu_img_map
1588
TEST_IMG="$TEST_IMG".base _make_test_img 64M
1589
$QEMU_IO -c "write -P 0x11 0 32M" "$TEST_IMG".base 2>&1 | _filter_qemu_io | _filter_testdir
1590
1591
-_make_test_img -b "$TEST_IMG".base 64M
1592
+_make_test_img -b "$TEST_IMG".base 64M -F $IMGFMT
1593
$QEMU_IO -c "write -P 0x22 0 3M" "$TEST_IMG" 2>&1 | _filter_qemu_io | _filter_testdir
1594
1595
echo
1596
diff --git a/tests/qemu-iotests/122.out b/tests/qemu-iotests/122.out
1597
index XXXXXXX..XXXXXXX 100644
1598
--- a/tests/qemu-iotests/122.out
1599
+++ b/tests/qemu-iotests/122.out
1600
@@ -XXX,XX +XXX,XX @@ wrote 67108864/67108864 bytes at offset 0
1601
1602
=== Check allocation status regression with -B ===
1603
1604
-Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864 backing_file=TEST_DIR/t.IMGFMT.base
1605
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
1606
wrote 3145728/3145728 bytes at offset 0
1607
3 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
1608
Offset Length File
1609
@@ -XXX,XX +XXX,XX @@ Offset Length File
1610
1611
=== Check that zero clusters are kept in overlay ===
1612
1613
-Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864 backing_file=TEST_DIR/t.IMGFMT.base
1614
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
1615
wrote 3145728/3145728 bytes at offset 0
1616
3 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
1617
read 3145728/3145728 bytes at offset 0
1618
@@ -XXX,XX +XXX,XX @@ read 3145728/3145728 bytes at offset 0
1619
=== Converting to an overlay larger than its backing file ===
1620
1621
Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=268435456
1622
-Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=805306368 backing_file=TEST_DIR/t.IMGFMT.base
1623
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=805306368 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
1624
Offset Length File
1625
1626
wrote 1048576/1048576 bytes at offset 267386880
1627
@@ -XXX,XX +XXX,XX @@ read 63963136/63963136 bytes at offset 3145728
1628
Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=67108864
1629
wrote 33554432/33554432 bytes at offset 0
1630
32 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
1631
-Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864 backing_file=TEST_DIR/t.IMGFMT.base
1632
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
1633
wrote 3145728/3145728 bytes at offset 0
1634
3 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
1635
1636
diff --git a/tests/qemu-iotests/126 b/tests/qemu-iotests/126
1637
index XXXXXXX..XXXXXXX 100755
1638
--- a/tests/qemu-iotests/126
1639
+++ b/tests/qemu-iotests/126
1640
@@ -XXX,XX +XXX,XX @@ BASE_IMG="$TEST_DIR/image:base.$IMGFMT"
1641
TOP_IMG="$TEST_DIR/image:top.$IMGFMT"
1642
1643
TEST_IMG=$BASE_IMG _make_test_img 64M
1644
-TEST_IMG=$TOP_IMG _make_test_img -b ./image:base.$IMGFMT
1645
+TEST_IMG=$TOP_IMG _make_test_img -b ./image:base.$IMGFMT -F $IMGFMT
1646
1647
# (1) The default cluster size depends on the image format
1648
# (2) vmdk only supports vmdk backing files, so it always reports the
1649
@@ -XXX,XX +XXX,XX @@ BASE_IMG="base.$IMGFMT"
1650
TOP_IMG="file:image:top.$IMGFMT"
1651
1652
TEST_IMG=$BASE_IMG _make_test_img 64M
1653
-TEST_IMG=$TOP_IMG _make_test_img -b "$BASE_IMG"
1654
+TEST_IMG=$TOP_IMG _make_test_img -b "$BASE_IMG" -F $IMGFMT
1655
1656
TEST_IMG=$TOP_IMG _img_info | grep -ve 'cluster_size' -e 'backing file format'
1657
1658
diff --git a/tests/qemu-iotests/126.out b/tests/qemu-iotests/126.out
1659
index XXXXXXX..XXXXXXX 100644
1660
--- a/tests/qemu-iotests/126.out
1661
+++ b/tests/qemu-iotests/126.out
1662
@@ -XXX,XX +XXX,XX @@ Formatting 'file:TEST_DIR/a:b.IMGFMT', fmt=IMGFMT size=67108864
1663
=== Testing relative backing filename resolution ===
1664
1665
Formatting 'TEST_DIR/image:base.IMGFMT', fmt=IMGFMT size=67108864
1666
-Formatting 'TEST_DIR/image:top.IMGFMT', fmt=IMGFMT size=67108864 backing_file=./image:base.IMGFMT
1667
+Formatting 'TEST_DIR/image:top.IMGFMT', fmt=IMGFMT size=67108864 backing_file=./image:base.IMGFMT backing_fmt=IMGFMT
1668
image: TEST_DIR/image:top.IMGFMT
1669
file format: IMGFMT
1670
virtual size: 64 MiB (67108864 bytes)
1671
backing file: ./image:base.IMGFMT (actual path: TEST_DIR/./image:base.IMGFMT)
1672
1673
Formatting 'base.IMGFMT', fmt=IMGFMT size=67108864
1674
-Formatting 'file:image:top.IMGFMT', fmt=IMGFMT size=67108864 backing_file=base.IMGFMT
1675
+Formatting 'file:image:top.IMGFMT', fmt=IMGFMT size=67108864 backing_file=base.IMGFMT backing_fmt=IMGFMT
1676
image: ./image:top.IMGFMT
1677
file format: IMGFMT
1678
virtual size: 64 MiB (67108864 bytes)
1679
diff --git a/tests/qemu-iotests/127 b/tests/qemu-iotests/127
1680
index XXXXXXX..XXXXXXX 100755
1681
--- a/tests/qemu-iotests/127
1682
+++ b/tests/qemu-iotests/127
1683
@@ -XXX,XX +XXX,XX @@ _require_devices virtio-scsi scsi-hd
1684
IMG_SIZE=64K
1685
1686
_make_test_img $IMG_SIZE
1687
-TEST_IMG="$TEST_IMG.overlay0" _make_test_img -b "$TEST_IMG" $IMG_SIZE
1688
-TEST_IMG="$TEST_IMG.overlay1" _make_test_img -b "$TEST_IMG" $IMG_SIZE
1689
+TEST_IMG="$TEST_IMG.overlay0" _make_test_img -b "$TEST_IMG" -F $IMGFMT $IMG_SIZE
1690
+TEST_IMG="$TEST_IMG.overlay1" _make_test_img -b "$TEST_IMG" -F $IMGFMT $IMG_SIZE
1691
1692
# So that we actually have something to mirror and the job does not return
1693
# immediately (which may be bad because then we cannot know whether the
1694
diff --git a/tests/qemu-iotests/127.out b/tests/qemu-iotests/127.out
1695
index XXXXXXX..XXXXXXX 100644
1696
--- a/tests/qemu-iotests/127.out
1697
+++ b/tests/qemu-iotests/127.out
1698
@@ -XXX,XX +XXX,XX @@
1699
QA output created by 127
1700
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=65536
1701
-Formatting 'TEST_DIR/t.IMGFMT.overlay0', fmt=IMGFMT size=65536 backing_file=TEST_DIR/t.IMGFMT
1702
-Formatting 'TEST_DIR/t.IMGFMT.overlay1', fmt=IMGFMT size=65536 backing_file=TEST_DIR/t.IMGFMT
1703
+Formatting 'TEST_DIR/t.IMGFMT.overlay0', fmt=IMGFMT size=65536 backing_file=TEST_DIR/t.IMGFMT backing_fmt=IMGFMT
1704
+Formatting 'TEST_DIR/t.IMGFMT.overlay1', fmt=IMGFMT size=65536 backing_file=TEST_DIR/t.IMGFMT backing_fmt=IMGFMT
1705
wrote 42/42 bytes at offset 0
1706
42 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
1707
{ 'execute': 'qmp_capabilities' }
1708
diff --git a/tests/qemu-iotests/129 b/tests/qemu-iotests/129
1709
index XXXXXXX..XXXXXXX 100755
1710
--- a/tests/qemu-iotests/129
1711
+++ b/tests/qemu-iotests/129
1712
@@ -XXX,XX +XXX,XX @@ class TestStopWithBlockJob(iotests.QMPTestCase):
1713
1714
def setUp(self):
1715
iotests.qemu_img('create', '-f', iotests.imgfmt, self.base_img, "1G")
1716
- iotests.qemu_img('create', '-f', iotests.imgfmt, self.test_img, "-b", self.base_img)
1717
+ iotests.qemu_img('create', '-f', iotests.imgfmt, self.test_img,
1718
+ "-b", self.base_img, '-F', iotests.imgfmt)
1719
iotests.qemu_io('-f', iotests.imgfmt, '-c', 'write -P0x5d 1M 128M', self.test_img)
1720
self.vm = iotests.VM().add_drive(self.test_img)
1721
self.vm.launch()
1722
diff --git a/tests/qemu-iotests/133 b/tests/qemu-iotests/133
1723
index XXXXXXX..XXXXXXX 100755
1724
--- a/tests/qemu-iotests/133
1725
+++ b/tests/qemu-iotests/133
1726
@@ -XXX,XX +XXX,XX @@ _supported_fmt qcow2
1727
_supported_proto file
1728
1729
TEST_IMG="$TEST_IMG.base" _make_test_img 64M
1730
-_make_test_img -b "$TEST_IMG.base"
1731
+_make_test_img -b "$TEST_IMG.base" -F $IMGFMT
1732
1733
echo
1734
echo "=== Check that node-name can't be changed ==="
1735
diff --git a/tests/qemu-iotests/133.out b/tests/qemu-iotests/133.out
1736
index XXXXXXX..XXXXXXX 100644
1737
--- a/tests/qemu-iotests/133.out
1738
+++ b/tests/qemu-iotests/133.out
1739
@@ -XXX,XX +XXX,XX @@
1740
QA output created by 133
1741
Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=67108864
1742
-Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864 backing_file=TEST_DIR/t.IMGFMT.base
1743
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
1744
1745
=== Check that node-name can't be changed ===
1746
1747
diff --git a/tests/qemu-iotests/139 b/tests/qemu-iotests/139
1748
index XXXXXXX..XXXXXXX 100755
1749
--- a/tests/qemu-iotests/139
1750
+++ b/tests/qemu-iotests/139
1751
@@ -XXX,XX +XXX,XX @@ class TestBlockdevDel(iotests.QMPTestCase):
1752
def addBlockDriverStateOverlay(self, node):
1753
self.checkBlockDriverState(node, False)
1754
iotests.qemu_img('create', '-u', '-f', iotests.imgfmt,
1755
- '-b', base_img, new_img, '1M')
1756
+ '-b', base_img, '-F', iotests.imgfmt, new_img, '1M')
1757
opts = {'driver': iotests.imgfmt,
1758
'node-name': node,
1759
'backing': None,
1760
diff --git a/tests/qemu-iotests/141 b/tests/qemu-iotests/141
1761
index XXXXXXX..XXXXXXX 100755
1762
--- a/tests/qemu-iotests/141
1763
+++ b/tests/qemu-iotests/141
1764
@@ -XXX,XX +XXX,XX @@ test_blockjob()
1765
1766
1767
TEST_IMG="$TEST_DIR/b.$IMGFMT" _make_test_img 1M
1768
-TEST_IMG="$TEST_DIR/m.$IMGFMT" _make_test_img -b "$TEST_DIR/b.$IMGFMT" 1M
1769
-_make_test_img -b "$TEST_DIR/m.$IMGFMT" 1M
1770
+TEST_IMG="$TEST_DIR/m.$IMGFMT" _make_test_img -b "$TEST_DIR/b.$IMGFMT" -F $IMGFMT 1M
1771
+_make_test_img -b "$TEST_DIR/m.$IMGFMT" 1M -F $IMGFMT
1772
1773
_launch_qemu -nodefaults
1774
1775
diff --git a/tests/qemu-iotests/141.out b/tests/qemu-iotests/141.out
1776
index XXXXXXX..XXXXXXX 100644
1777
--- a/tests/qemu-iotests/141.out
1778
+++ b/tests/qemu-iotests/141.out
1779
@@ -XXX,XX +XXX,XX @@
1780
QA output created by 141
1781
Formatting 'TEST_DIR/b.IMGFMT', fmt=IMGFMT size=1048576
1782
-Formatting 'TEST_DIR/m.IMGFMT', fmt=IMGFMT size=1048576 backing_file=TEST_DIR/b.IMGFMT
1783
-Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=1048576 backing_file=TEST_DIR/m.IMGFMT
1784
+Formatting 'TEST_DIR/m.IMGFMT', fmt=IMGFMT size=1048576 backing_file=TEST_DIR/b.IMGFMT backing_fmt=IMGFMT
1785
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=1048576 backing_file=TEST_DIR/m.IMGFMT backing_fmt=IMGFMT
1786
{'execute': 'qmp_capabilities'}
1787
{"return": {}}
1788
1789
diff --git a/tests/qemu-iotests/142 b/tests/qemu-iotests/142
1790
index XXXXXXX..XXXXXXX 100755
1791
--- a/tests/qemu-iotests/142
1792
+++ b/tests/qemu-iotests/142
1793
@@ -XXX,XX +XXX,XX @@ size=128M
1794
1795
TEST_IMG="$TEST_IMG.base" _make_test_img $size
1796
TEST_IMG="$TEST_IMG.snap" _make_test_img $size
1797
-_make_test_img -b "$TEST_IMG.base" $size
1798
+_make_test_img -b "$TEST_IMG.base" $size -F $IMGFMT
1799
1800
echo
1801
echo === Simple test for all cache modes ===
1802
diff --git a/tests/qemu-iotests/142.out b/tests/qemu-iotests/142.out
1803
index XXXXXXX..XXXXXXX 100644
1804
--- a/tests/qemu-iotests/142.out
1805
+++ b/tests/qemu-iotests/142.out
1806
@@ -XXX,XX +XXX,XX @@
1807
QA output created by 142
1808
Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=134217728
1809
Formatting 'TEST_DIR/t.IMGFMT.snap', fmt=IMGFMT size=134217728
1810
-Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728 backing_file=TEST_DIR/t.IMGFMT.base
1811
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
1812
1813
=== Simple test for all cache modes ===
1814
1815
diff --git a/tests/qemu-iotests/153 b/tests/qemu-iotests/153
1816
index XXXXXXX..XXXXXXX 100755
1817
--- a/tests/qemu-iotests/153
1818
+++ b/tests/qemu-iotests/153
1819
@@ -XXX,XX +XXX,XX @@ for opts1 in "" "read-only=on" "read-only=on,force-share=on"; do
1820
1821
echo
1822
echo "== Creating test image =="
1823
- _make_test_img -b "${TEST_IMG}.base"
1824
+ _make_test_img -b "${TEST_IMG}.base" -F $IMGFMT
1825
1826
echo
1827
echo "== Launching QEMU, opts: '$opts1' =="
1828
@@ -XXX,XX +XXX,XX @@ for opts1 in "" "read-only=on" "read-only=on,force-share=on"; do
1829
_run_cmd $QEMU_IMG amend -o "size=$size" $L "${TEST_IMG}"
1830
_run_cmd $QEMU_IMG commit $L "${TEST_IMG}"
1831
_run_cmd $QEMU_IMG resize $L "${TEST_IMG}" $size
1832
- _run_cmd $QEMU_IMG rebase $L "${TEST_IMG}" -b "${TEST_IMG}.base"
1833
+ _run_cmd $QEMU_IMG rebase $L "${TEST_IMG}" -b "${TEST_IMG}.base" -F $IMGFMT
1834
_run_cmd $QEMU_IMG snapshot -l $L "${TEST_IMG}"
1835
_run_cmd $QEMU_IMG convert $L "${TEST_IMG}" "${TEST_IMG}.convert"
1836
_run_cmd $QEMU_IMG dd $L if="${TEST_IMG}" of="${TEST_IMG}.convert" bs=512 count=1
1837
@@ -XXX,XX +XXX,XX @@ for opts1 in "" "read-only=on" "read-only=on,force-share=on"; do
1838
# qemu-img create does not support -U
1839
if [ -z "$L" ]; then
1840
_run_cmd $QEMU_IMG create -f $IMGFMT "${TEST_IMG}" \
1841
- -b ${TEST_IMG}.base
1842
+ -b ${TEST_IMG}.base -F $IMGFMT
1843
# Read the file format. It used to be the case that
1844
# file-posix simply truncated the file, but the qcow2
1845
# driver then failed to format it because it was unable
1846
@@ -XXX,XX +XXX,XX @@ done
1847
echo
1848
echo "== Creating ${TEST_IMG}.[abc] ==" | _filter_testdir
1849
(
1850
- $QEMU_IMG create -f qcow2 "${TEST_IMG}.a" -b "${TEST_IMG}"
1851
- $QEMU_IMG create -f qcow2 "${TEST_IMG}.b" -b "${TEST_IMG}"
1852
- $QEMU_IMG create -f qcow2 "${TEST_IMG}.c" -b "${TEST_IMG}.b"
1853
+ $QEMU_IMG create -f qcow2 "${TEST_IMG}.a" -b "${TEST_IMG}" -F $IMGFMT
1854
+ $QEMU_IMG create -f qcow2 "${TEST_IMG}.b" -b "${TEST_IMG}" -F $IMGFMT
1855
+ $QEMU_IMG create -f qcow2 "${TEST_IMG}.c" -b "${TEST_IMG}.b" -F $IMGFMT
1856
) | _filter_img_create
1857
1858
echo
1859
@@ -XXX,XX +XXX,XX @@ _send_qemu_cmd $QEMU_HANDLE \
1860
_run_cmd $QEMU_IO "${TEST_IMG}" -c 'write 0 512'
1861
1862
echo "Creating overlay with qemu-img when the guest is running should be allowed"
1863
-_run_cmd $QEMU_IMG create -f $IMGFMT -b "${TEST_IMG}" "${TEST_IMG}.overlay"
1864
+_run_cmd $QEMU_IMG create -f $IMGFMT -b "${TEST_IMG}" -F $IMGFMT "${TEST_IMG}.overlay"
1865
1866
echo "== Closing an image should unlock it =="
1867
_send_qemu_cmd $QEMU_HANDLE \
1868
diff --git a/tests/qemu-iotests/153.out b/tests/qemu-iotests/153.out
1869
index XXXXXXX..XXXXXXX 100644
1870
--- a/tests/qemu-iotests/153.out
1871
+++ b/tests/qemu-iotests/153.out
1872
@@ -XXX,XX +XXX,XX @@ QEMU_PROG: -drive if=none,file=null-co://,readonly=off,force-share=on: force-sha
1873
Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=33554432
1874
1875
== Creating test image ==
1876
-Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=33554432 backing_file=TEST_DIR/t.IMGFMT.base
1877
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=33554432 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
1878
1879
== Launching QEMU, opts: '' ==
1880
1881
@@ -XXX,XX +XXX,XX @@ _qemu_img_wrapper resize TEST_DIR/t.qcow2 32M
1882
qemu-img: Could not open 'TEST_DIR/t.qcow2': Failed to get "write" lock
1883
Is another process using the image [TEST_DIR/t.qcow2]?
1884
1885
-_qemu_img_wrapper rebase TEST_DIR/t.qcow2 -b TEST_DIR/t.qcow2.base
1886
+_qemu_img_wrapper rebase TEST_DIR/t.qcow2 -b TEST_DIR/t.qcow2.base -F qcow2
1887
qemu-img: Could not open 'TEST_DIR/t.qcow2': Failed to get "write" lock
1888
Is another process using the image [TEST_DIR/t.qcow2]?
1889
1890
@@ -XXX,XX +XXX,XX @@ _qemu_img_wrapper bench -w -c 1 TEST_DIR/t.qcow2
1891
qemu-img: Could not open 'TEST_DIR/t.qcow2': Failed to get "write" lock
1892
Is another process using the image [TEST_DIR/t.qcow2]?
1893
1894
-_qemu_img_wrapper create -f qcow2 TEST_DIR/t.qcow2 -b TEST_DIR/t.qcow2.base
1895
+_qemu_img_wrapper create -f qcow2 TEST_DIR/t.qcow2 -b TEST_DIR/t.qcow2.base -F qcow2
1896
qemu-img: TEST_DIR/t.qcow2: Failed to get "write" lock
1897
Is another process using the image [TEST_DIR/t.qcow2]?
1898
file format: IMGFMT
1899
+backing file format: IMGFMT
1900
1901
== Running utility commands -U ==
1902
1903
@@ -XXX,XX +XXX,XX @@ _qemu_img_wrapper resize -U TEST_DIR/t.qcow2 32M
1904
qemu-img: unrecognized option '-U'
1905
Try 'qemu-img --help' for more information
1906
1907
-_qemu_img_wrapper rebase -U TEST_DIR/t.qcow2 -b TEST_DIR/t.qcow2.base
1908
+_qemu_img_wrapper rebase -U TEST_DIR/t.qcow2 -b TEST_DIR/t.qcow2.base -F qcow2
1909
qemu-img: Could not open 'TEST_DIR/t.qcow2': Failed to get "write" lock
1910
Is another process using the image [TEST_DIR/t.qcow2]?
1911
1912
@@ -XXX,XX +XXX,XX @@ Round done
1913
Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=33554432
1914
1915
== Creating test image ==
1916
-Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=33554432 backing_file=TEST_DIR/t.IMGFMT.base
1917
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=33554432 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
1918
1919
== Launching QEMU, opts: 'read-only=on' ==
1920
1921
@@ -XXX,XX +XXX,XX @@ _qemu_img_wrapper resize TEST_DIR/t.qcow2 32M
1922
qemu-img: Could not open 'TEST_DIR/t.qcow2': Failed to get "write" lock
1923
Is another process using the image [TEST_DIR/t.qcow2]?
1924
1925
-_qemu_img_wrapper rebase TEST_DIR/t.qcow2 -b TEST_DIR/t.qcow2.base
1926
+_qemu_img_wrapper rebase TEST_DIR/t.qcow2 -b TEST_DIR/t.qcow2.base -F qcow2
1927
qemu-img: Could not open 'TEST_DIR/t.qcow2': Failed to get "write" lock
1928
Is another process using the image [TEST_DIR/t.qcow2]?
1929
1930
@@ -XXX,XX +XXX,XX @@ _qemu_img_wrapper bench -w -c 1 TEST_DIR/t.qcow2
1931
qemu-img: Could not open 'TEST_DIR/t.qcow2': Failed to get "write" lock
1932
Is another process using the image [TEST_DIR/t.qcow2]?
1933
1934
-_qemu_img_wrapper create -f qcow2 TEST_DIR/t.qcow2 -b TEST_DIR/t.qcow2.base
1935
+_qemu_img_wrapper create -f qcow2 TEST_DIR/t.qcow2 -b TEST_DIR/t.qcow2.base -F qcow2
1936
qemu-img: TEST_DIR/t.qcow2: Failed to get "write" lock
1937
Is another process using the image [TEST_DIR/t.qcow2]?
1938
file format: IMGFMT
1939
+backing file format: IMGFMT
1940
1941
== Running utility commands -U ==
1942
1943
@@ -XXX,XX +XXX,XX @@ _qemu_img_wrapper resize -U TEST_DIR/t.qcow2 32M
1944
qemu-img: unrecognized option '-U'
1945
Try 'qemu-img --help' for more information
1946
1947
-_qemu_img_wrapper rebase -U TEST_DIR/t.qcow2 -b TEST_DIR/t.qcow2.base
1948
+_qemu_img_wrapper rebase -U TEST_DIR/t.qcow2 -b TEST_DIR/t.qcow2.base -F qcow2
1949
qemu-img: Could not open 'TEST_DIR/t.qcow2': Failed to get "write" lock
1950
Is another process using the image [TEST_DIR/t.qcow2]?
1951
1952
@@ -XXX,XX +XXX,XX @@ Round done
1953
Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=33554432
1954
1955
== Creating test image ==
1956
-Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=33554432 backing_file=TEST_DIR/t.IMGFMT.base
1957
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=33554432 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
1958
1959
== Launching QEMU, opts: 'read-only=on,force-share=on' ==
1960
1961
@@ -XXX,XX +XXX,XX @@ _qemu_img_wrapper commit TEST_DIR/t.qcow2
1962
1963
_qemu_img_wrapper resize TEST_DIR/t.qcow2 32M
1964
1965
-_qemu_img_wrapper rebase TEST_DIR/t.qcow2 -b TEST_DIR/t.qcow2.base
1966
+_qemu_img_wrapper rebase TEST_DIR/t.qcow2 -b TEST_DIR/t.qcow2.base -F qcow2
1967
1968
_qemu_img_wrapper snapshot -l TEST_DIR/t.qcow2
1969
1970
@@ -XXX,XX +XXX,XX @@ _qemu_img_wrapper bench -c 1 TEST_DIR/t.qcow2
1971
1972
_qemu_img_wrapper bench -w -c 1 TEST_DIR/t.qcow2
1973
1974
-_qemu_img_wrapper create -f qcow2 TEST_DIR/t.qcow2 -b TEST_DIR/t.qcow2.base
1975
+_qemu_img_wrapper create -f qcow2 TEST_DIR/t.qcow2 -b TEST_DIR/t.qcow2.base -F qcow2
1976
file format: IMGFMT
1977
+backing file format: IMGFMT
1978
1979
== Running utility commands -U ==
1980
1981
@@ -XXX,XX +XXX,XX @@ _qemu_img_wrapper resize -U TEST_DIR/t.qcow2 32M
1982
qemu-img: unrecognized option '-U'
1983
Try 'qemu-img --help' for more information
1984
1985
-_qemu_img_wrapper rebase -U TEST_DIR/t.qcow2 -b TEST_DIR/t.qcow2.base
1986
+_qemu_img_wrapper rebase -U TEST_DIR/t.qcow2 -b TEST_DIR/t.qcow2.base -F qcow2
1987
1988
_qemu_img_wrapper snapshot -l -U TEST_DIR/t.qcow2
1989
1990
@@ -XXX,XX +XXX,XX @@ Is another process using the image [TEST_DIR/t.qcow2]?
1991
== Two devices with the same image (read-only=on,force-share=on - read-only=on,force-share=on) ==
1992
1993
== Creating TEST_DIR/t.qcow2.[abc] ==
1994
-Formatting 'TEST_DIR/t.IMGFMT.a', fmt=IMGFMT size=33554432 backing_file=TEST_DIR/t.IMGFMT
1995
-Formatting 'TEST_DIR/t.IMGFMT.b', fmt=IMGFMT size=33554432 backing_file=TEST_DIR/t.IMGFMT
1996
-Formatting 'TEST_DIR/t.IMGFMT.c', fmt=IMGFMT size=33554432 backing_file=TEST_DIR/t.IMGFMT.b
1997
+Formatting 'TEST_DIR/t.IMGFMT.a', fmt=IMGFMT size=33554432 backing_file=TEST_DIR/t.IMGFMT backing_fmt=IMGFMT
1998
+Formatting 'TEST_DIR/t.IMGFMT.b', fmt=IMGFMT size=33554432 backing_file=TEST_DIR/t.IMGFMT backing_fmt=IMGFMT
1999
+Formatting 'TEST_DIR/t.IMGFMT.c', fmt=IMGFMT size=33554432 backing_file=TEST_DIR/t.IMGFMT.b backing_fmt=IMGFMT
2000
2001
== Two devices sharing the same file in backing chain ==
2002
2003
@@ -XXX,XX +XXX,XX @@ qemu-io: can't open device TEST_DIR/t.qcow2: Failed to get "write" lock
2004
Is another process using the image [TEST_DIR/t.qcow2]?
2005
Creating overlay with qemu-img when the guest is running should be allowed
2006
2007
-_qemu_img_wrapper create -f qcow2 -b TEST_DIR/t.qcow2 TEST_DIR/t.qcow2.overlay
2008
+_qemu_img_wrapper create -f qcow2 -b TEST_DIR/t.qcow2 -F qcow2 TEST_DIR/t.qcow2.overlay
2009
== Closing an image should unlock it ==
2010
{ 'execute': 'human-monitor-command', 'arguments': { 'command-line': 'drive_del d0' } }
2011
{"return": ""}
2012
diff --git a/tests/qemu-iotests/154 b/tests/qemu-iotests/154
2013
index XXXXXXX..XXXXXXX 100755
2014
--- a/tests/qemu-iotests/154
2015
+++ b/tests/qemu-iotests/154
2016
@@ -XXX,XX +XXX,XX @@ echo
2017
echo == backing file contains zeros ==
2018
2019
CLUSTER_SIZE=512 TEST_IMG="$TEST_IMG.base" _make_test_img $size
2020
-_make_test_img -b "$TEST_IMG.base"
2021
+_make_test_img -b "$TEST_IMG.base" -F $IMGFMT
2022
2023
# Make sure that the whole cluster is allocated even for partial write_zeroes
2024
# when the backing file contains zeros
2025
@@ -XXX,XX +XXX,XX @@ echo
2026
echo == backing file contains non-zero data before write_zeroes ==
2027
2028
CLUSTER_SIZE=512 TEST_IMG="$TEST_IMG.base" _make_test_img $size
2029
-_make_test_img -b "$TEST_IMG.base"
2030
+_make_test_img -b "$TEST_IMG.base" -F $IMGFMT
2031
2032
# Single cluster; non-zero data at the cluster start
2033
# ... | XX -- 00 -- | ...
2034
@@ -XXX,XX +XXX,XX @@ echo
2035
echo == backing file contains non-zero data after write_zeroes ==
2036
2037
CLUSTER_SIZE=512 TEST_IMG="$TEST_IMG.base" _make_test_img $size
2038
-_make_test_img -b "$TEST_IMG.base"
2039
+_make_test_img -b "$TEST_IMG.base" -F $IMGFMT
2040
2041
# Single cluster; non-zero data directly after request
2042
# ... | -- 00 XX -- | ...
2043
@@ -XXX,XX +XXX,XX @@ echo
2044
echo == write_zeroes covers non-zero data ==
2045
2046
CLUSTER_SIZE=512 TEST_IMG="$TEST_IMG.base" _make_test_img $size
2047
-_make_test_img -b "$TEST_IMG.base"
2048
+_make_test_img -b "$TEST_IMG.base" -F $IMGFMT
2049
2050
# non-zero data at front of request
2051
# Backing file: -- XX -- --
2052
@@ -XXX,XX +XXX,XX @@ echo
2053
echo == spanning two clusters, non-zero before request ==
2054
2055
CLUSTER_SIZE=512 TEST_IMG="$TEST_IMG.base" _make_test_img $size
2056
-_make_test_img -b "$TEST_IMG.base"
2057
+_make_test_img -b "$TEST_IMG.base" -F $IMGFMT
2058
2059
# Two clusters; non-zero data before request:
2060
# 1. At cluster start: 32k: XX -- -- 00 | 00 -- -- --
2061
@@ -XXX,XX +XXX,XX @@ echo
2062
echo == spanning two clusters, non-zero after request ==
2063
2064
CLUSTER_SIZE=512 TEST_IMG="$TEST_IMG.base" _make_test_img $size
2065
-_make_test_img -b "$TEST_IMG.base"
2066
+_make_test_img -b "$TEST_IMG.base" -F $IMGFMT
2067
2068
# Two clusters; non-zero data after request:
2069
# 1. Directly after request: 32k: -- -- -- 00 | 00 XX -- --
2070
@@ -XXX,XX +XXX,XX @@ echo
2071
echo == spanning two clusters, partially overwriting backing file ==
2072
2073
CLUSTER_SIZE=512 TEST_IMG="$TEST_IMG.base" _make_test_img $size
2074
-_make_test_img -b "$TEST_IMG.base"
2075
+_make_test_img -b "$TEST_IMG.base" -F $IMGFMT
2076
2077
# Backing file: -- -- XX XX | XX XX -- --
2078
# Active layer: -- -- XX 00 | 00 XX -- --
2079
@@ -XXX,XX +XXX,XX @@ echo
2080
echo == spanning multiple clusters, non-zero in first cluster ==
2081
2082
CLUSTER_SIZE=512 TEST_IMG="$TEST_IMG.base" _make_test_img $size
2083
-_make_test_img -b "$TEST_IMG.base"
2084
+_make_test_img -b "$TEST_IMG.base" -F $IMGFMT
2085
2086
# Backing file: 64k: XX XX -- -- | -- -- -- -- | -- -- -- --
2087
# Active layer: 64k: XX XX 00 00 | 00 00 00 00 | 00 -- -- --
2088
@@ -XXX,XX +XXX,XX @@ echo
2089
echo == spanning multiple clusters, non-zero in intermediate cluster ==
2090
2091
CLUSTER_SIZE=512 TEST_IMG="$TEST_IMG.base" _make_test_img $size
2092
-_make_test_img -b "$TEST_IMG.base"
2093
+_make_test_img -b "$TEST_IMG.base" -F $IMGFMT
2094
2095
# Backing file: 64k: -- -- -- -- | -- XX XX -- | -- -- -- --
2096
# Active layer: 64k: -- -- 00 00 | 00 00 00 00 | 00 -- -- --
2097
@@ -XXX,XX +XXX,XX @@ echo
2098
echo == spanning multiple clusters, non-zero in final cluster ==
2099
2100
CLUSTER_SIZE=512 TEST_IMG="$TEST_IMG.base" _make_test_img $size
2101
-_make_test_img -b "$TEST_IMG.base"
2102
+_make_test_img -b "$TEST_IMG.base" -F $IMGFMT
2103
2104
# Backing file: 64k: -- -- -- -- | -- -- -- -- | -- -- XX XX
2105
# Active layer: 64k: -- -- 00 00 | 00 00 00 00 | 00 -- XX XX
2106
@@ -XXX,XX +XXX,XX @@ echo
2107
echo == spanning multiple clusters, partially overwriting backing file ==
2108
2109
CLUSTER_SIZE=512 TEST_IMG="$TEST_IMG.base" _make_test_img $size
2110
-_make_test_img -b "$TEST_IMG.base"
2111
+_make_test_img -b "$TEST_IMG.base" -F $IMGFMT
2112
2113
# Backing file: 64k: -- XX XX XX | XX XX XX XX | XX XX XX --
2114
# Active layer: 64k: -- XX 00 00 | 00 00 00 00 | 00 XX XX --
2115
@@ -XXX,XX +XXX,XX @@ CLUSTER_SIZE=2048 TEST_IMG="$TEST_IMG.base" _make_test_img $((size + 1024))
2116
# Write at the front: sector-wise, the request is:
2117
# backing: 128m... | -- --
2118
# active: 128m... | 00 -- -- --
2119
-_make_test_img -b "$TEST_IMG.base" $((size + 2048))
2120
+_make_test_img -b "$TEST_IMG.base" -F $IMGFMT $((size + 2048))
2121
$QEMU_IO -c "write -z $size 512" "$TEST_IMG" | _filter_qemu_io
2122
$QEMU_IO -c "alloc $size 2048" "$TEST_IMG" | _filter_qemu_io
2123
$QEMU_IMG map --output=json "$TEST_IMG" | _filter_qemu_img_map
2124
@@ -XXX,XX +XXX,XX @@ $QEMU_IMG map --output=json "$TEST_IMG" | _filter_qemu_img_map
2125
# Write at the back: sector-wise, the request is:
2126
# backing: 128m... | -- --
2127
# active: 128m... | -- -- -- 00
2128
-_make_test_img -b "$TEST_IMG.base" $((size + 2048))
2129
+_make_test_img -b "$TEST_IMG.base" -F $IMGFMT $((size + 2048))
2130
$QEMU_IO -c "write -z $((size + 1536)) 512" "$TEST_IMG" | _filter_qemu_io
2131
$QEMU_IO -c "alloc $size 2048" "$TEST_IMG" | _filter_qemu_io
2132
$QEMU_IMG map --output=json "$TEST_IMG" | _filter_qemu_img_map
2133
@@ -XXX,XX +XXX,XX @@ $QEMU_IMG map --output=json "$TEST_IMG" | _filter_qemu_img_map
2134
# Write at middle: sector-wise, the request is:
2135
# backing: 128m... | -- --
2136
# active: 128m... | -- 00 00 --
2137
-_make_test_img -b "$TEST_IMG.base" $((size + 2048))
2138
+_make_test_img -b "$TEST_IMG.base" -F $IMGFMT $((size + 2048))
2139
$QEMU_IO -c "write -z $((size + 512)) 1024" "$TEST_IMG" | _filter_qemu_io
2140
$QEMU_IO -c "alloc $size 2048" "$TEST_IMG" | _filter_qemu_io
2141
$QEMU_IMG map --output=json "$TEST_IMG" | _filter_qemu_img_map
2142
@@ -XXX,XX +XXX,XX @@ $QEMU_IMG map --output=json "$TEST_IMG" | _filter_qemu_img_map
2143
# Write entire cluster: sector-wise, the request is:
2144
# backing: 128m... | -- --
2145
# active: 128m... | 00 00 00 00
2146
-_make_test_img -b "$TEST_IMG.base" $((size + 2048))
2147
+_make_test_img -b "$TEST_IMG.base" -F $IMGFMT $((size + 2048))
2148
$QEMU_IO -c "write -z $size 2048" "$TEST_IMG" | _filter_qemu_io
2149
$QEMU_IO -c "alloc $size 2048" "$TEST_IMG" | _filter_qemu_io
2150
$QEMU_IMG map --output=json "$TEST_IMG" | _filter_qemu_img_map
2151
@@ -XXX,XX +XXX,XX @@ $QEMU_IO -c "write -z $size 512" "$TEST_IMG.base" | _filter_qemu_io
2152
# Write at the front: sector-wise, the request is:
2153
# backing: 128m... | 00 00
2154
# active: 128m... | 00 -- -- --
2155
-_make_test_img -b "$TEST_IMG.base" $((size + 2048))
2156
+_make_test_img -b "$TEST_IMG.base" -F $IMGFMT $((size + 2048))
2157
$QEMU_IO -c "write -z $size 512" "$TEST_IMG" | _filter_qemu_io
2158
$QEMU_IO -c "alloc $size 2048" "$TEST_IMG" | _filter_qemu_io
2159
$QEMU_IMG map --output=json "$TEST_IMG" | _filter_qemu_img_map
2160
@@ -XXX,XX +XXX,XX @@ $QEMU_IMG map --output=json "$TEST_IMG" | _filter_qemu_img_map
2161
# Write at the back: sector-wise, the request is:
2162
# backing: 128m... | 00 00
2163
# active: 128m... | -- -- -- 00
2164
-_make_test_img -b "$TEST_IMG.base" $((size + 2048))
2165
+_make_test_img -b "$TEST_IMG.base" -F $IMGFMT $((size + 2048))
2166
$QEMU_IO -c "write -z $((size + 1536)) 512" "$TEST_IMG" | _filter_qemu_io
2167
$QEMU_IO -c "alloc $size 2048" "$TEST_IMG" | _filter_qemu_io
2168
$QEMU_IMG map --output=json "$TEST_IMG" | _filter_qemu_img_map
2169
@@ -XXX,XX +XXX,XX @@ $QEMU_IMG map --output=json "$TEST_IMG" | _filter_qemu_img_map
2170
# Write at middle: sector-wise, the request is:
2171
# backing: 128m... | 00 00
2172
# active: 128m... | -- 00 00 --
2173
-_make_test_img -b "$TEST_IMG.base" $((size + 2048))
2174
+_make_test_img -b "$TEST_IMG.base" -F $IMGFMT $((size + 2048))
2175
$QEMU_IO -c "write -z $((size + 512)) 1024" "$TEST_IMG" | _filter_qemu_io
2176
$QEMU_IO -c "alloc $size 2048" "$TEST_IMG" | _filter_qemu_io
2177
$QEMU_IMG map --output=json "$TEST_IMG" | _filter_qemu_img_map
2178
@@ -XXX,XX +XXX,XX @@ $QEMU_IMG map --output=json "$TEST_IMG" | _filter_qemu_img_map
2179
# Write entire cluster: sector-wise, the request is:
2180
# backing: 128m... | 00 00
2181
# active: 128m... | 00 00 00 00
2182
-_make_test_img -b "$TEST_IMG.base" $((size + 2048))
2183
+_make_test_img -b "$TEST_IMG.base" -F $IMGFMT $((size + 2048))
2184
$QEMU_IO -c "write -z $size 2048" "$TEST_IMG" | _filter_qemu_io
2185
$QEMU_IO -c "alloc $size 2048" "$TEST_IMG" | _filter_qemu_io
2186
$QEMU_IMG map --output=json "$TEST_IMG" | _filter_qemu_img_map
2187
@@ -XXX,XX +XXX,XX @@ echo == unaligned image tail cluster, allocation required ==
2188
# Backing file: 128m... | XX --
2189
# Active layer: 128m... | -- -- 00 --
2190
CLUSTER_SIZE=512 TEST_IMG="$TEST_IMG.base" _make_test_img $((size + 1024))
2191
-_make_test_img -b "$TEST_IMG.base" $((size + 2048))
2192
+_make_test_img -b "$TEST_IMG.base" -F $IMGFMT $((size + 2048))
2193
$QEMU_IO -c "write -P 1 $((size)) 512" "$TEST_IMG.base" | _filter_qemu_io
2194
$QEMU_IO -c "write -z $((size + 1024)) 512" "$TEST_IMG" | _filter_qemu_io
2195
$QEMU_IO -c "read -P 1 $((size)) 512" "$TEST_IMG" | _filter_qemu_io
2196
@@ -XXX,XX +XXX,XX @@ $QEMU_IMG map --output=json "$TEST_IMG" | _filter_qemu_img_map
2197
# Backing file: 128m: ... | -- XX
2198
# Active layer: 128m: ... | 00 -- -- 00
2199
CLUSTER_SIZE=512 TEST_IMG="$TEST_IMG.base" _make_test_img $((size + 1024))
2200
-_make_test_img -b "$TEST_IMG.base" $((size + 2048))
2201
+_make_test_img -b "$TEST_IMG.base" -F $IMGFMT $((size + 2048))
2202
$QEMU_IO -c "write -P 1 $((size + 512)) 512" "$TEST_IMG.base" | _filter_qemu_io
2203
$QEMU_IO -c "write -z $((size)) 512" "$TEST_IMG" | _filter_qemu_io
2204
$QEMU_IO -c "read -P 0 $((size)) 512" "$TEST_IMG" | _filter_qemu_io
2205
diff --git a/tests/qemu-iotests/154.out b/tests/qemu-iotests/154.out
2206
index XXXXXXX..XXXXXXX 100644
2207
--- a/tests/qemu-iotests/154.out
2208
+++ b/tests/qemu-iotests/154.out
2209
@@ -XXX,XX +XXX,XX @@ QA output created by 154
2210
2211
== backing file contains zeros ==
2212
Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=134217728
2213
-Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728 backing_file=TEST_DIR/t.IMGFMT.base
2214
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
2215
wrote 2048/2048 bytes at offset 0
2216
2 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
2217
wrote 2048/2048 bytes at offset 10240
2218
@@ -XXX,XX +XXX,XX @@ wrote 2048/2048 bytes at offset 27648
2219
2220
== backing file contains non-zero data before write_zeroes ==
2221
Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=134217728
2222
-Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728 backing_file=TEST_DIR/t.IMGFMT.base
2223
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
2224
wrote 1024/1024 bytes at offset 32768
2225
1 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
2226
wrote 1024/1024 bytes at offset 34816
2227
@@ -XXX,XX +XXX,XX @@ read 2048/2048 bytes at offset 67584
2228
2229
== backing file contains non-zero data after write_zeroes ==
2230
Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=134217728
2231
-Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728 backing_file=TEST_DIR/t.IMGFMT.base
2232
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
2233
wrote 1024/1024 bytes at offset 34816
2234
1 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
2235
wrote 1024/1024 bytes at offset 33792
2236
@@ -XXX,XX +XXX,XX @@ read 3072/3072 bytes at offset 40960
2237
2238
== write_zeroes covers non-zero data ==
2239
Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=134217728
2240
-Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728 backing_file=TEST_DIR/t.IMGFMT.base
2241
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
2242
wrote 1024/1024 bytes at offset 5120
2243
1 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
2244
wrote 2048/2048 bytes at offset 5120
2245
@@ -XXX,XX +XXX,XX @@ read 4096/4096 bytes at offset 28672
2246
2247
== spanning two clusters, non-zero before request ==
2248
Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=134217728
2249
-Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728 backing_file=TEST_DIR/t.IMGFMT.base
2250
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
2251
wrote 1024/1024 bytes at offset 32768
2252
1 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
2253
wrote 2048/2048 bytes at offset 35840
2254
@@ -XXX,XX +XXX,XX @@ read 5120/5120 bytes at offset 68608
2255
2256
== spanning two clusters, non-zero after request ==
2257
Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=134217728
2258
-Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728 backing_file=TEST_DIR/t.IMGFMT.base
2259
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
2260
wrote 1024/1024 bytes at offset 37888
2261
1 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
2262
wrote 2048/2048 bytes at offset 35840
2263
@@ -XXX,XX +XXX,XX @@ read 1024/1024 bytes at offset 72704
2264
2265
== spanning two clusters, partially overwriting backing file ==
2266
Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=134217728
2267
-Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728 backing_file=TEST_DIR/t.IMGFMT.base
2268
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
2269
wrote 4096/4096 bytes at offset 2048
2270
4 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
2271
wrote 2048/2048 bytes at offset 3072
2272
@@ -XXX,XX +XXX,XX @@ read 2048/2048 bytes at offset 6144
2273
2274
== spanning multiple clusters, non-zero in first cluster ==
2275
Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=134217728
2276
-Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728 backing_file=TEST_DIR/t.IMGFMT.base
2277
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
2278
wrote 2048/2048 bytes at offset 65536
2279
2 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
2280
wrote 7168/7168 bytes at offset 67584
2281
@@ -XXX,XX +XXX,XX @@ read 10240/10240 bytes at offset 67584
2282
2283
== spanning multiple clusters, non-zero in intermediate cluster ==
2284
Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=134217728
2285
-Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728 backing_file=TEST_DIR/t.IMGFMT.base
2286
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
2287
wrote 2048/2048 bytes at offset 70656
2288
2 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
2289
wrote 7168/7168 bytes at offset 67584
2290
@@ -XXX,XX +XXX,XX @@ read 12288/12288 bytes at offset 65536
2291
2292
== spanning multiple clusters, non-zero in final cluster ==
2293
Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=134217728
2294
-Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728 backing_file=TEST_DIR/t.IMGFMT.base
2295
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
2296
wrote 2048/2048 bytes at offset 75776
2297
2 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
2298
wrote 7168/7168 bytes at offset 67584
2299
@@ -XXX,XX +XXX,XX @@ read 2048/2048 bytes at offset 75776
2300
2301
== spanning multiple clusters, partially overwriting backing file ==
2302
Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=134217728
2303
-Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728 backing_file=TEST_DIR/t.IMGFMT.base
2304
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
2305
wrote 10240/10240 bytes at offset 66560
2306
10 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
2307
wrote 7168/7168 bytes at offset 67584
2308
@@ -XXX,XX +XXX,XX @@ wrote 2048/2048 bytes at offset 134217728
2309
2048/2048 bytes allocated at offset 128 MiB
2310
[{ "start": 0, "length": 134219776, "depth": 0, "zero": true, "data": false}]
2311
Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=134218752
2312
-Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134219776 backing_file=TEST_DIR/t.IMGFMT.base
2313
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134219776 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
2314
wrote 512/512 bytes at offset 134217728
2315
512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
2316
2048/2048 bytes allocated at offset 128 MiB
2317
[{ "start": 0, "length": 134217728, "depth": 1, "zero": true, "data": false},
2318
{ "start": 134217728, "length": 2048, "depth": 0, "zero": true, "data": false}]
2319
-Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134219776 backing_file=TEST_DIR/t.IMGFMT.base
2320
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134219776 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
2321
wrote 512/512 bytes at offset 134219264
2322
512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
2323
2048/2048 bytes allocated at offset 128 MiB
2324
[{ "start": 0, "length": 134217728, "depth": 1, "zero": true, "data": false},
2325
{ "start": 134217728, "length": 2048, "depth": 0, "zero": true, "data": false}]
2326
-Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134219776 backing_file=TEST_DIR/t.IMGFMT.base
2327
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134219776 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
2328
wrote 1024/1024 bytes at offset 134218240
2329
1 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
2330
2048/2048 bytes allocated at offset 128 MiB
2331
[{ "start": 0, "length": 134217728, "depth": 1, "zero": true, "data": false},
2332
{ "start": 134217728, "length": 2048, "depth": 0, "zero": true, "data": false}]
2333
-Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134219776 backing_file=TEST_DIR/t.IMGFMT.base
2334
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134219776 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
2335
wrote 2048/2048 bytes at offset 134217728
2336
2 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
2337
2048/2048 bytes allocated at offset 128 MiB
2338
@@ -XXX,XX +XXX,XX @@ wrote 2048/2048 bytes at offset 134217728
2339
{ "start": 134217728, "length": 2048, "depth": 0, "zero": true, "data": false}]
2340
wrote 512/512 bytes at offset 134217728
2341
512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
2342
-Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134219776 backing_file=TEST_DIR/t.IMGFMT.base
2343
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134219776 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
2344
wrote 512/512 bytes at offset 134217728
2345
512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
2346
2048/2048 bytes allocated at offset 128 MiB
2347
[{ "start": 0, "length": 134217728, "depth": 1, "zero": true, "data": false},
2348
{ "start": 134217728, "length": 2048, "depth": 0, "zero": true, "data": false}]
2349
-Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134219776 backing_file=TEST_DIR/t.IMGFMT.base
2350
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134219776 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
2351
wrote 512/512 bytes at offset 134219264
2352
512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
2353
2048/2048 bytes allocated at offset 128 MiB
2354
[{ "start": 0, "length": 134217728, "depth": 1, "zero": true, "data": false},
2355
{ "start": 134217728, "length": 2048, "depth": 0, "zero": true, "data": false}]
2356
-Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134219776 backing_file=TEST_DIR/t.IMGFMT.base
2357
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134219776 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
2358
wrote 1024/1024 bytes at offset 134218240
2359
1 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
2360
2048/2048 bytes allocated at offset 128 MiB
2361
[{ "start": 0, "length": 134217728, "depth": 1, "zero": true, "data": false},
2362
{ "start": 134217728, "length": 2048, "depth": 0, "zero": true, "data": false}]
2363
-Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134219776 backing_file=TEST_DIR/t.IMGFMT.base
2364
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134219776 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
2365
wrote 2048/2048 bytes at offset 134217728
2366
2 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
2367
2048/2048 bytes allocated at offset 128 MiB
2368
@@ -XXX,XX +XXX,XX @@ read 1024/1024 bytes at offset 134217728
2369
2370
== unaligned image tail cluster, allocation required ==
2371
Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=134218752
2372
-Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134219776 backing_file=TEST_DIR/t.IMGFMT.base
2373
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134219776 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
2374
wrote 512/512 bytes at offset 134217728
2375
512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
2376
wrote 512/512 bytes at offset 134218752
2377
@@ -XXX,XX +XXX,XX @@ read 1536/1536 bytes at offset 134218240
2378
[{ "start": 0, "length": 134217728, "depth": 1, "zero": true, "data": false},
2379
{ "start": 134217728, "length": 2048, "depth": 0, "zero": false, "data": true, "offset": OFFSET}]
2380
Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=134218752
2381
-Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134219776 backing_file=TEST_DIR/t.IMGFMT.base
2382
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134219776 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
2383
wrote 512/512 bytes at offset 134218240
2384
512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
2385
wrote 512/512 bytes at offset 134217728
2386
diff --git a/tests/qemu-iotests/155 b/tests/qemu-iotests/155
2387
index XXXXXXX..XXXXXXX 100755
2388
--- a/tests/qemu-iotests/155
2389
+++ b/tests/qemu-iotests/155
2390
@@ -XXX,XX +XXX,XX @@ class BaseClass(iotests.QMPTestCase):
2391
2392
def setUp(self):
2393
qemu_img('create', '-f', iotests.imgfmt, back0_img, '1440K')
2394
- qemu_img('create', '-f', iotests.imgfmt, '-b', back0_img, back1_img)
2395
- qemu_img('create', '-f', iotests.imgfmt, '-b', back1_img, back2_img)
2396
- qemu_img('create', '-f', iotests.imgfmt, '-b', back2_img, source_img)
2397
+ qemu_img('create', '-f', iotests.imgfmt, '-b', back0_img,
2398
+ '-F', iotests.imgfmt, back1_img)
2399
+ qemu_img('create', '-f', iotests.imgfmt, '-b', back1_img,
2400
+ '-F', iotests.imgfmt, back2_img)
2401
+ qemu_img('create', '-f', iotests.imgfmt, '-b', back2_img,
2402
+ '-F', iotests.imgfmt, source_img)
2403
2404
self.vm = iotests.VM()
2405
# Add the BDS via blockdev-add so it stays around after the mirror block
2406
@@ -XXX,XX +XXX,XX @@ class BaseClass(iotests.QMPTestCase):
2407
if self.existing:
2408
if self.target_backing:
2409
qemu_img('create', '-f', iotests.imgfmt,
2410
- '-b', self.target_backing, target_img, '1440K')
2411
+ '-b', self.target_backing, '-F', 'raw',
2412
+ target_img, '1440K')
2413
else:
2414
qemu_img('create', '-f', iotests.imgfmt, target_img, '1440K')
2415
2416
diff --git a/tests/qemu-iotests/156 b/tests/qemu-iotests/156
2417
index XXXXXXX..XXXXXXX 100755
2418
--- a/tests/qemu-iotests/156
2419
+++ b/tests/qemu-iotests/156
2420
@@ -XXX,XX +XXX,XX @@ _unsupported_imgopts data_file
2421
2422
# Create source disk
2423
TEST_IMG="$TEST_IMG.backing" _make_test_img 1M
2424
-_make_test_img -b "$TEST_IMG.backing" 1M
2425
+_make_test_img -b "$TEST_IMG.backing" -F $IMGFMT 1M
2426
2427
$QEMU_IO -c 'write -P 1 0 256k' "$TEST_IMG.backing" | _filter_qemu_io
2428
$QEMU_IO -c 'write -P 2 64k 192k' "$TEST_IMG" | _filter_qemu_io
2429
@@ -XXX,XX +XXX,XX @@ _send_qemu_cmd $QEMU_HANDLE \
2430
'return'
2431
2432
# Create snapshot
2433
-TEST_IMG="$TEST_IMG.overlay" _make_test_img -u -b "$TEST_IMG" 1M
2434
+TEST_IMG="$TEST_IMG.overlay" _make_test_img -u -b "$TEST_IMG" -F $IMGFMT 1M
2435
_send_qemu_cmd $QEMU_HANDLE \
2436
"{ 'execute': 'blockdev-snapshot-sync',
2437
'arguments': { 'device': 'source',
2438
@@ -XXX,XX +XXX,XX @@ _send_qemu_cmd $QEMU_HANDLE \
2439
'return'
2440
2441
# Create target image
2442
-TEST_IMG="$TEST_IMG.target.overlay" _make_test_img -u -b "$TEST_IMG.target" 1M
2443
+TEST_IMG="$TEST_IMG.target.overlay" _make_test_img -u -b "$TEST_IMG.target" \
2444
+ -F $IMGFMT 1M
2445
2446
# Mirror snapshot
2447
_send_qemu_cmd $QEMU_HANDLE \
2448
@@ -XXX,XX +XXX,XX @@ _send_qemu_cmd $QEMU_HANDLE \
2449
# Copy source backing chain to the target before completing the job
2450
cp "$TEST_IMG.backing" "$TEST_IMG.target.backing"
2451
cp "$TEST_IMG" "$TEST_IMG.target"
2452
-$QEMU_IMG rebase -u -b "$TEST_IMG.target.backing" "$TEST_IMG.target"
2453
+$QEMU_IMG rebase -u -b "$TEST_IMG.target.backing" -F $IMGFMT "$TEST_IMG.target"
2454
2455
# Complete block job
2456
_send_qemu_cmd $QEMU_HANDLE \
2457
diff --git a/tests/qemu-iotests/156.out b/tests/qemu-iotests/156.out
2458
index XXXXXXX..XXXXXXX 100644
2459
--- a/tests/qemu-iotests/156.out
2460
+++ b/tests/qemu-iotests/156.out
2461
@@ -XXX,XX +XXX,XX @@
2462
QA output created by 156
2463
Formatting 'TEST_DIR/t.IMGFMT.backing', fmt=IMGFMT size=1048576
2464
-Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=1048576 backing_file=TEST_DIR/t.IMGFMT.backing
2465
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=1048576 backing_file=TEST_DIR/t.IMGFMT.backing backing_fmt=IMGFMT
2466
wrote 262144/262144 bytes at offset 0
2467
256 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
2468
wrote 196608/196608 bytes at offset 65536
2469
192 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
2470
{ 'execute': 'qmp_capabilities' }
2471
{"return": {}}
2472
-Formatting 'TEST_DIR/t.IMGFMT.overlay', fmt=IMGFMT size=1048576 backing_file=TEST_DIR/t.IMGFMT
2473
+Formatting 'TEST_DIR/t.IMGFMT.overlay', fmt=IMGFMT size=1048576 backing_file=TEST_DIR/t.IMGFMT backing_fmt=IMGFMT
2474
{ 'execute': 'blockdev-snapshot-sync', 'arguments': { 'device': 'source', 'snapshot-file': 'TEST_DIR/t.IMGFMT.overlay', 'format': 'IMGFMT', 'mode': 'existing' } }
2475
{"return": {}}
2476
{ 'execute': 'human-monitor-command', 'arguments': { 'command-line': 'qemu-io source "write -P 3 128k 128k"' } }
2477
wrote 131072/131072 bytes at offset 131072
2478
128 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
2479
{"return": ""}
2480
-Formatting 'TEST_DIR/t.IMGFMT.target.overlay', fmt=IMGFMT size=1048576 backing_file=TEST_DIR/t.IMGFMT.target
2481
+Formatting 'TEST_DIR/t.IMGFMT.target.overlay', fmt=IMGFMT size=1048576 backing_file=TEST_DIR/t.IMGFMT.target backing_fmt=IMGFMT
2482
{ 'execute': 'drive-mirror', 'arguments': { 'device': 'source', 'target': 'TEST_DIR/t.IMGFMT.target.overlay', 'mode': 'existing', 'sync': 'top' } }
2483
{"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "created", "id": "source"}}
2484
{"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "running", "id": "source"}}
2485
diff --git a/tests/qemu-iotests/158 b/tests/qemu-iotests/158
2486
index XXXXXXX..XXXXXXX 100755
2487
--- a/tests/qemu-iotests/158
2488
+++ b/tests/qemu-iotests/158
2489
@@ -XXX,XX +XXX,XX @@ echo "== verify pattern =="
2490
$QEMU_IO --object $SECRET -c "read -P 0xa 0 $size" --image-opts $IMGSPECBASE | _filter_qemu_io | _filter_testdir
2491
2492
echo "== create overlay =="
2493
-_make_test_img -u --object $SECRET -o "encryption=on,encrypt.key-secret=sec0" -b "$TEST_IMG_BASE" $size
2494
+_make_test_img -u --object $SECRET -o "encryption=on,encrypt.key-secret=sec0" -b "$TEST_IMG_BASE" -F $IMGFMT $size
2495
2496
echo
2497
echo "== writing part of a cluster =="
2498
diff --git a/tests/qemu-iotests/158.out b/tests/qemu-iotests/158.out
2499
index XXXXXXX..XXXXXXX 100644
2500
--- a/tests/qemu-iotests/158.out
2501
+++ b/tests/qemu-iotests/158.out
2502
@@ -XXX,XX +XXX,XX @@ wrote 134217728/134217728 bytes at offset 0
2503
read 134217728/134217728 bytes at offset 0
2504
128 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
2505
== create overlay ==
2506
-Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728 backing_file=TEST_DIR/t.IMGFMT.base encryption=on encrypt.key-secret=sec0
2507
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT encryption=on encrypt.key-secret=sec0
2508
2509
== writing part of a cluster ==
2510
wrote 1024/1024 bytes at offset 0
2511
diff --git a/tests/qemu-iotests/161 b/tests/qemu-iotests/161
2512
index XXXXXXX..XXXXXXX 100755
2513
--- a/tests/qemu-iotests/161
2514
+++ b/tests/qemu-iotests/161
2515
@@ -XXX,XX +XXX,XX @@ IMG_SIZE=1M
2516
2517
# Create the images
2518
TEST_IMG="$TEST_IMG.base" _make_test_img $IMG_SIZE | _filter_imgfmt
2519
-TEST_IMG="$TEST_IMG.int" _make_test_img -b "$TEST_IMG.base" | _filter_imgfmt
2520
-_make_test_img -b "$TEST_IMG.int" | _filter_imgfmt
2521
+TEST_IMG="$TEST_IMG.int" _make_test_img -b "$TEST_IMG.base" -F $IMGFMT | _filter_imgfmt
2522
+_make_test_img -b "$TEST_IMG.int" -F $IMGFMT -F $IMGFMT | _filter_imgfmt
2523
2524
# First test: reopen $TEST.IMG changing the detect-zeroes option on
2525
# its backing file ($TEST_IMG.int).
2526
@@ -XXX,XX +XXX,XX @@ echo "*** Commit and then change an option on the backing file"
2527
echo
2528
# Create the images again
2529
TEST_IMG="$TEST_IMG.base" _make_test_img $IMG_SIZE | _filter_imgfmt
2530
-TEST_IMG="$TEST_IMG.int" _make_test_img -b "$TEST_IMG.base" | _filter_imgfmt
2531
-_make_test_img -b "$TEST_IMG.int" | _filter_imgfmt
2532
+TEST_IMG="$TEST_IMG.int" _make_test_img -b "$TEST_IMG.base" -F $IMGFMT| _filter_imgfmt
2533
+_make_test_img -b "$TEST_IMG.int" -F $IMGFMT | _filter_imgfmt
2534
2535
_launch_qemu -drive if=none,file="${TEST_IMG}"
2536
_send_qemu_cmd $QEMU_HANDLE \
2537
diff --git a/tests/qemu-iotests/161.out b/tests/qemu-iotests/161.out
2538
index XXXXXXX..XXXXXXX 100644
2539
--- a/tests/qemu-iotests/161.out
2540
+++ b/tests/qemu-iotests/161.out
2541
@@ -XXX,XX +XXX,XX @@
2542
QA output created by 161
2543
Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=1048576
2544
-Formatting 'TEST_DIR/t.IMGFMT.int', fmt=IMGFMT size=1048576 backing_file=TEST_DIR/t.IMGFMT.base
2545
-Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=1048576 backing_file=TEST_DIR/t.IMGFMT.int
2546
+Formatting 'TEST_DIR/t.IMGFMT.int', fmt=IMGFMT size=1048576 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
2547
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=1048576 backing_file=TEST_DIR/t.IMGFMT.int backing_fmt=IMGFMT
2548
2549
*** Change an option on the backing file
2550
2551
@@ -XXX,XX +XXX,XX @@ Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=1048576 backing_file=TEST_DIR/t.
2552
*** Commit and then change an option on the backing file
2553
2554
Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=1048576
2555
-Formatting 'TEST_DIR/t.IMGFMT.int', fmt=IMGFMT size=1048576 backing_file=TEST_DIR/t.IMGFMT.base
2556
-Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=1048576 backing_file=TEST_DIR/t.IMGFMT.int
2557
+Formatting 'TEST_DIR/t.IMGFMT.int', fmt=IMGFMT size=1048576 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
2558
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=1048576 backing_file=TEST_DIR/t.IMGFMT.int backing_fmt=IMGFMT
2559
{ 'execute': 'qmp_capabilities' }
2560
{"return": {}}
2561
{ 'execute': 'block-commit', 'arguments': { 'device': 'none0', 'top': 'TEST_DIR/t.IMGFMT.int' } }
2562
diff --git a/tests/qemu-iotests/176 b/tests/qemu-iotests/176
2563
index XXXXXXX..XXXXXXX 100755
2564
--- a/tests/qemu-iotests/176
2565
+++ b/tests/qemu-iotests/176
2566
@@ -XXX,XX +XXX,XX @@ echo
2567
2568
len=$((2100 * 1024 * 1024 + 512)) # larger than 2G, and not cluster aligned
2569
TEST_IMG="$TEST_IMG.base" _make_test_img $len
2570
-TEST_IMG="$TEST_IMG.itmd" _make_test_img -b "$TEST_IMG.base" $len
2571
-_make_test_img -b "$TEST_IMG.itmd" $len
2572
+TEST_IMG="$TEST_IMG.itmd" _make_test_img -b "$TEST_IMG.base" -F $IMGFMT $len
2573
+_make_test_img -b "$TEST_IMG.itmd" -F $IMGFMT $len
2574
# Update the top image to use a feature that is incompatible with fast path
2575
case $reason in
2576
snapshot) $QEMU_IMG snapshot -c snap "$TEST_IMG" ;;
2577
diff --git a/tests/qemu-iotests/176.out b/tests/qemu-iotests/176.out
2578
index XXXXXXX..XXXXXXX 100644
2579
--- a/tests/qemu-iotests/176.out
2580
+++ b/tests/qemu-iotests/176.out
2581
@@ -XXX,XX +XXX,XX @@ QA output created by 176
2582
=== Test pass snapshot.0 ===
2583
2584
Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=2202010112
2585
-Formatting 'TEST_DIR/t.IMGFMT.itmd', fmt=IMGFMT size=2202010112 backing_file=TEST_DIR/t.IMGFMT.base
2586
-Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=2202010112 backing_file=TEST_DIR/t.IMGFMT.itmd
2587
+Formatting 'TEST_DIR/t.IMGFMT.itmd', fmt=IMGFMT size=2202010112 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
2588
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=2202010112 backing_file=TEST_DIR/t.IMGFMT.itmd backing_fmt=IMGFMT
2589
wrote 196608/196608 bytes at offset 2147287040
2590
192 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
2591
wrote 131072/131072 bytes at offset 2147352576
2592
@@ -XXX,XX +XXX,XX @@ ID TAG
2593
=== Test pass snapshot.1 ===
2594
2595
Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=2202010112
2596
-Formatting 'TEST_DIR/t.IMGFMT.itmd', fmt=IMGFMT size=2202010112 backing_file=TEST_DIR/t.IMGFMT.base
2597
-Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=2202010112 backing_file=TEST_DIR/t.IMGFMT.itmd
2598
+Formatting 'TEST_DIR/t.IMGFMT.itmd', fmt=IMGFMT size=2202010112 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
2599
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=2202010112 backing_file=TEST_DIR/t.IMGFMT.itmd backing_fmt=IMGFMT
2600
wrote 196608/196608 bytes at offset 2147287040
2601
192 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
2602
wrote 131072/131072 bytes at offset 2147352576
2603
@@ -XXX,XX +XXX,XX @@ ID TAG
2604
=== Test pass snapshot.2 ===
2605
2606
Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=2202010112
2607
-Formatting 'TEST_DIR/t.IMGFMT.itmd', fmt=IMGFMT size=2202010112 backing_file=TEST_DIR/t.IMGFMT.base
2608
-Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=2202010112 backing_file=TEST_DIR/t.IMGFMT.itmd
2609
+Formatting 'TEST_DIR/t.IMGFMT.itmd', fmt=IMGFMT size=2202010112 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
2610
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=2202010112 backing_file=TEST_DIR/t.IMGFMT.itmd backing_fmt=IMGFMT
2611
wrote 196608/196608 bytes at offset 2147287040
2612
192 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
2613
wrote 131072/131072 bytes at offset 2147352576
2614
@@ -XXX,XX +XXX,XX @@ ID TAG
2615
=== Test pass snapshot.3 ===
2616
2617
Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=2202010112
2618
-Formatting 'TEST_DIR/t.IMGFMT.itmd', fmt=IMGFMT size=2202010112 backing_file=TEST_DIR/t.IMGFMT.base
2619
-Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=2202010112 backing_file=TEST_DIR/t.IMGFMT.itmd
2620
+Formatting 'TEST_DIR/t.IMGFMT.itmd', fmt=IMGFMT size=2202010112 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
2621
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=2202010112 backing_file=TEST_DIR/t.IMGFMT.itmd backing_fmt=IMGFMT
2622
wrote 196608/196608 bytes at offset 2147287040
2623
192 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
2624
wrote 131072/131072 bytes at offset 2147352576
2625
@@ -XXX,XX +XXX,XX @@ ID TAG
2626
=== Test pass bitmap.0 ===
2627
2628
Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=2202010112
2629
-Formatting 'TEST_DIR/t.IMGFMT.itmd', fmt=IMGFMT size=2202010112 backing_file=TEST_DIR/t.IMGFMT.base
2630
-Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=2202010112 backing_file=TEST_DIR/t.IMGFMT.itmd
2631
+Formatting 'TEST_DIR/t.IMGFMT.itmd', fmt=IMGFMT size=2202010112 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
2632
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=2202010112 backing_file=TEST_DIR/t.IMGFMT.itmd backing_fmt=IMGFMT
2633
QMP_VERSION
2634
{"return": {}}
2635
{"return": {}}
2636
@@ -XXX,XX +XXX,XX @@ QMP_VERSION
2637
=== Test pass bitmap.1 ===
2638
2639
Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=2202010112
2640
-Formatting 'TEST_DIR/t.IMGFMT.itmd', fmt=IMGFMT size=2202010112 backing_file=TEST_DIR/t.IMGFMT.base
2641
-Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=2202010112 backing_file=TEST_DIR/t.IMGFMT.itmd
2642
+Formatting 'TEST_DIR/t.IMGFMT.itmd', fmt=IMGFMT size=2202010112 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
2643
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=2202010112 backing_file=TEST_DIR/t.IMGFMT.itmd backing_fmt=IMGFMT
2644
QMP_VERSION
2645
{"return": {}}
2646
{"return": {}}
2647
@@ -XXX,XX +XXX,XX @@ QMP_VERSION
2648
=== Test pass bitmap.2 ===
2649
2650
Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=2202010112
2651
-Formatting 'TEST_DIR/t.IMGFMT.itmd', fmt=IMGFMT size=2202010112 backing_file=TEST_DIR/t.IMGFMT.base
2652
-Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=2202010112 backing_file=TEST_DIR/t.IMGFMT.itmd
2653
+Formatting 'TEST_DIR/t.IMGFMT.itmd', fmt=IMGFMT size=2202010112 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
2654
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=2202010112 backing_file=TEST_DIR/t.IMGFMT.itmd backing_fmt=IMGFMT
2655
QMP_VERSION
2656
{"return": {}}
2657
{"return": {}}
2658
@@ -XXX,XX +XXX,XX @@ QMP_VERSION
2659
=== Test pass bitmap.3 ===
2660
2661
Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=2202010112
2662
-Formatting 'TEST_DIR/t.IMGFMT.itmd', fmt=IMGFMT size=2202010112 backing_file=TEST_DIR/t.IMGFMT.base
2663
-Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=2202010112 backing_file=TEST_DIR/t.IMGFMT.itmd
2664
+Formatting 'TEST_DIR/t.IMGFMT.itmd', fmt=IMGFMT size=2202010112 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
2665
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=2202010112 backing_file=TEST_DIR/t.IMGFMT.itmd backing_fmt=IMGFMT
2666
QMP_VERSION
2667
{"return": {}}
2668
{"return": {}}
2669
diff --git a/tests/qemu-iotests/177 b/tests/qemu-iotests/177
2670
index XXXXXXX..XXXXXXX 100755
2671
--- a/tests/qemu-iotests/177
2672
+++ b/tests/qemu-iotests/177
2673
@@ -XXX,XX +XXX,XX @@ echo "== setting up files =="
2674
2675
TEST_IMG="$TEST_IMG.base" _make_test_img $size
2676
$QEMU_IO -c "write -P 11 0 $size" "$TEST_IMG.base" | _filter_qemu_io
2677
-_make_test_img -b "$TEST_IMG.base"
2678
+_make_test_img -b "$TEST_IMG.base" -F $IMGFMT
2679
$QEMU_IO -c "write -P 22 0 $size" "$TEST_IMG" | _filter_qemu_io
2680
2681
# Limited to 64k max-transfer
2682
diff --git a/tests/qemu-iotests/177.out b/tests/qemu-iotests/177.out
2683
index XXXXXXX..XXXXXXX 100644
2684
--- a/tests/qemu-iotests/177.out
2685
+++ b/tests/qemu-iotests/177.out
2686
@@ -XXX,XX +XXX,XX @@ QA output created by 177
2687
Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=134217728
2688
wrote 134217728/134217728 bytes at offset 0
2689
128 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
2690
-Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728 backing_file=TEST_DIR/t.IMGFMT.base
2691
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
2692
wrote 134217728/134217728 bytes at offset 0
2693
128 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
2694
2695
diff --git a/tests/qemu-iotests/179 b/tests/qemu-iotests/179
2696
index XXXXXXX..XXXXXXX 100755
2697
--- a/tests/qemu-iotests/179
2698
+++ b/tests/qemu-iotests/179
2699
@@ -XXX,XX +XXX,XX @@ echo '=== Testing write zeroes with unmap ==='
2700
echo
2701
2702
TEST_IMG="$TEST_IMG.base" _make_test_img 64M
2703
-_make_test_img -b "$TEST_IMG.base"
2704
+_make_test_img -b "$TEST_IMG.base" -F $IMGFMT
2705
2706
# Offsets chosen at or near 2M boundaries so test works at all cluster sizes
2707
# 8k and larger (smaller clusters fail due to non-contiguous allocations)
2708
diff --git a/tests/qemu-iotests/179.out b/tests/qemu-iotests/179.out
2709
index XXXXXXX..XXXXXXX 100644
2710
--- a/tests/qemu-iotests/179.out
2711
+++ b/tests/qemu-iotests/179.out
2712
@@ -XXX,XX +XXX,XX @@ QA output created by 179
2713
=== Testing write zeroes with unmap ===
2714
2715
Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=67108864
2716
-Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864 backing_file=TEST_DIR/t.IMGFMT.base
2717
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
2718
wrote 2097152/2097152 bytes at offset 2097152
2719
2 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
2720
wrote 2097152/2097152 bytes at offset 6291456
2721
diff --git a/tests/qemu-iotests/189 b/tests/qemu-iotests/189
2722
index XXXXXXX..XXXXXXX 100755
2723
--- a/tests/qemu-iotests/189
2724
+++ b/tests/qemu-iotests/189
2725
@@ -XXX,XX +XXX,XX @@ echo "== verify pattern =="
2726
$QEMU_IO --object $SECRET0 -c "read -P 0xa 0 $size" --image-opts $IMGSPECBASE | _filter_qemu_io | _filter_testdir
2727
2728
echo "== create overlay =="
2729
-_make_test_img --object $SECRET1 -o "encrypt.format=luks,encrypt.key-secret=sec1,encrypt.iter-time=10" -u -b "$TEST_IMG_BASE" $size
2730
+_make_test_img --object $SECRET1 -o "encrypt.format=luks,encrypt.key-secret=sec1,encrypt.iter-time=10" -u -b "$TEST_IMG_BASE" -F $IMGFMT $size
2731
2732
echo
2733
echo "== writing part of a cluster =="
2734
diff --git a/tests/qemu-iotests/189.out b/tests/qemu-iotests/189.out
2735
index XXXXXXX..XXXXXXX 100644
2736
--- a/tests/qemu-iotests/189.out
2737
+++ b/tests/qemu-iotests/189.out
2738
@@ -XXX,XX +XXX,XX @@ wrote 16777216/16777216 bytes at offset 0
2739
read 16777216/16777216 bytes at offset 0
2740
16 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
2741
== create overlay ==
2742
-Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=16777216 backing_file=TEST_DIR/t.IMGFMT.base encrypt.format=luks encrypt.key-secret=sec1 encrypt.iter-time=10
2743
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=16777216 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT encrypt.format=luks encrypt.key-secret=sec1 encrypt.iter-time=10
2744
2745
== writing part of a cluster ==
2746
wrote 1024/1024 bytes at offset 0
2747
diff --git a/tests/qemu-iotests/191 b/tests/qemu-iotests/191
2748
index XXXXXXX..XXXXXXX 100755
2749
--- a/tests/qemu-iotests/191
2750
+++ b/tests/qemu-iotests/191
2751
@@ -XXX,XX +XXX,XX @@ echo
2752
2753
TEST_IMG="${TEST_IMG}.base" _make_test_img $size
2754
TEST_IMG="${TEST_IMG}.mid" _make_test_img -o "backing_fmt=$IMGFMT" -b "${TEST_IMG}.base"
2755
-_make_test_img -b "${TEST_IMG}.mid"
2756
-TEST_IMG="${TEST_IMG}.ovl2" _make_test_img -b "${TEST_IMG}.mid"
2757
+_make_test_img -b "${TEST_IMG}.mid" -F $IMGFMT
2758
+TEST_IMG="${TEST_IMG}.ovl2" _make_test_img -b "${TEST_IMG}.mid" -F $IMGFMT
2759
2760
$QEMU_IO -c 'write -P 0x55 1M 64k' "${TEST_IMG}.mid" | _filter_qemu_io
2761
2762
@@ -XXX,XX +XXX,XX @@ echo === Preparing and starting VM with -drive ===
2763
echo
2764
2765
TEST_IMG="${TEST_IMG}.base" _make_test_img $size
2766
-TEST_IMG="${TEST_IMG}.mid" _make_test_img -b "${TEST_IMG}.base"
2767
-_make_test_img -b "${TEST_IMG}.mid"
2768
-TEST_IMG="${TEST_IMG}.ovl2" _make_test_img -b "${TEST_IMG}.mid"
2769
-TEST_IMG="${TEST_IMG}.ovl3" _make_test_img -b "${TEST_IMG}.ovl2"
2770
+TEST_IMG="${TEST_IMG}.mid" _make_test_img -b "${TEST_IMG}.base" -F $IMGFMT
2771
+_make_test_img -b "${TEST_IMG}.mid" -F $IMGFMT
2772
+TEST_IMG="${TEST_IMG}.ovl2" _make_test_img -b "${TEST_IMG}.mid" -F $IMGFMT
2773
+TEST_IMG="${TEST_IMG}.ovl3" _make_test_img -b "${TEST_IMG}.ovl2" -F $IMGFMT
2774
2775
$QEMU_IO -c 'write -P 0x55 1M 64k' "${TEST_IMG}.mid" | _filter_qemu_io
2776
2777
diff --git a/tests/qemu-iotests/191.out b/tests/qemu-iotests/191.out
2778
index XXXXXXX..XXXXXXX 100644
2779
--- a/tests/qemu-iotests/191.out
2780
+++ b/tests/qemu-iotests/191.out
2781
@@ -XXX,XX +XXX,XX @@ QA output created by 191
2782
2783
Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=67108864
2784
Formatting 'TEST_DIR/t.IMGFMT.mid', fmt=IMGFMT size=67108864 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
2785
-Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864 backing_file=TEST_DIR/t.IMGFMT.mid
2786
-Formatting 'TEST_DIR/t.IMGFMT.ovl2', fmt=IMGFMT size=67108864 backing_file=TEST_DIR/t.IMGFMT.mid
2787
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864 backing_file=TEST_DIR/t.IMGFMT.mid backing_fmt=IMGFMT
2788
+Formatting 'TEST_DIR/t.IMGFMT.ovl2', fmt=IMGFMT size=67108864 backing_file=TEST_DIR/t.IMGFMT.mid backing_fmt=IMGFMT
2789
wrote 65536/65536 bytes at offset 1048576
2790
64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
2791
{ 'execute': 'qmp_capabilities' }
2792
@@ -XXX,XX +XXX,XX @@ backing file format: IMGFMT
2793
=== Preparing and starting VM with -drive ===
2794
2795
Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=67108864
2796
-Formatting 'TEST_DIR/t.IMGFMT.mid', fmt=IMGFMT size=67108864 backing_file=TEST_DIR/t.IMGFMT.base
2797
-Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864 backing_file=TEST_DIR/t.IMGFMT.mid
2798
-Formatting 'TEST_DIR/t.IMGFMT.ovl2', fmt=IMGFMT size=67108864 backing_file=TEST_DIR/t.IMGFMT.mid
2799
-Formatting 'TEST_DIR/t.IMGFMT.ovl3', fmt=IMGFMT size=67108864 backing_file=TEST_DIR/t.IMGFMT.ovl2
2800
+Formatting 'TEST_DIR/t.IMGFMT.mid', fmt=IMGFMT size=67108864 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
2801
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864 backing_file=TEST_DIR/t.IMGFMT.mid backing_fmt=IMGFMT
2802
+Formatting 'TEST_DIR/t.IMGFMT.ovl2', fmt=IMGFMT size=67108864 backing_file=TEST_DIR/t.IMGFMT.mid backing_fmt=IMGFMT
2803
+Formatting 'TEST_DIR/t.IMGFMT.ovl3', fmt=IMGFMT size=67108864 backing_file=TEST_DIR/t.IMGFMT.ovl2 backing_fmt=IMGFMT
2804
wrote 65536/65536 bytes at offset 1048576
2805
64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
2806
{ 'execute': 'qmp_capabilities' }
2807
diff --git a/tests/qemu-iotests/195 b/tests/qemu-iotests/195
2808
index XXXXXXX..XXXXXXX 100755
2809
--- a/tests/qemu-iotests/195
2810
+++ b/tests/qemu-iotests/195
2811
@@ -XXX,XX +XXX,XX @@ run_qemu()
2812
2813
size=64M
2814
TEST_IMG="$TEST_IMG.base" _make_test_img $size
2815
-TEST_IMG="$TEST_IMG.mid" _make_test_img -b "$TEST_IMG.base"
2816
-_make_test_img -b "$TEST_IMG.mid"
2817
+TEST_IMG="$TEST_IMG.mid" _make_test_img -b "$TEST_IMG.base" -F $IMGFMT
2818
+_make_test_img -b "$TEST_IMG.mid" -F $IMGFMT
2819
2820
echo
2821
echo "Change backing file of mid (opened read-only)"
2822
@@ -XXX,XX +XXX,XX @@ echo
2823
echo "Change backing file of top (opened writable)"
2824
echo
2825
2826
-TEST_IMG="$TEST_IMG.mid" _make_test_img -b "$TEST_IMG.base"
2827
+TEST_IMG="$TEST_IMG.mid" _make_test_img -b "$TEST_IMG.base" -F $IMGFMT
2828
2829
run_qemu -drive if=none,file="$TEST_IMG",node-name=top <<EOF
2830
{"execute":"qmp_capabilities"}
2831
diff --git a/tests/qemu-iotests/195.out b/tests/qemu-iotests/195.out
2832
index XXXXXXX..XXXXXXX 100644
2833
--- a/tests/qemu-iotests/195.out
2834
+++ b/tests/qemu-iotests/195.out
2835
@@ -XXX,XX +XXX,XX @@
2836
QA output created by 195
2837
Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=67108864
2838
-Formatting 'TEST_DIR/t.IMGFMT.mid', fmt=IMGFMT size=67108864 backing_file=TEST_DIR/t.IMGFMT.base
2839
-Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864 backing_file=TEST_DIR/t.IMGFMT.mid
2840
+Formatting 'TEST_DIR/t.IMGFMT.mid', fmt=IMGFMT size=67108864 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
2841
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864 backing_file=TEST_DIR/t.IMGFMT.mid backing_fmt=IMGFMT
2842
2843
Change backing file of mid (opened read-only)
2844
2845
@@ -XXX,XX +XXX,XX @@ backing file format: IMGFMT
2846
2847
Change backing file of top (opened writable)
2848
2849
-Formatting 'TEST_DIR/t.IMGFMT.mid', fmt=IMGFMT size=67108864 backing_file=TEST_DIR/t.IMGFMT.base
2850
+Formatting 'TEST_DIR/t.IMGFMT.mid', fmt=IMGFMT size=67108864 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
2851
Testing: -drive if=none,file=TEST_DIR/t.IMGFMT,node-name=top
2852
{
2853
QMP_VERSION
2854
diff --git a/tests/qemu-iotests/198 b/tests/qemu-iotests/198
2855
index XXXXXXX..XXXXXXX 100755
2856
--- a/tests/qemu-iotests/198
2857
+++ b/tests/qemu-iotests/198
2858
@@ -XXX,XX +XXX,XX @@ echo "== writing whole image base =="
2859
$QEMU_IO --object $SECRET0 -c "write -P 0xa 0 $size" --image-opts $IMGSPECBASE | _filter_qemu_io | _filter_testdir
2860
2861
echo "== create overlay =="
2862
-_make_test_img --object $SECRET1 -o "encrypt.format=luks,encrypt.key-secret=sec1,encrypt.iter-time=10" -u -b "$TEST_IMG_BASE" $size
2863
+_make_test_img --object $SECRET1 -o "encrypt.format=luks,encrypt.key-secret=sec1,encrypt.iter-time=10" -u -b "$TEST_IMG_BASE" -F $IMGFMT $size
2864
2865
echo
2866
echo "== writing whole image layer =="
2867
diff --git a/tests/qemu-iotests/198.out b/tests/qemu-iotests/198.out
2868
index XXXXXXX..XXXXXXX 100644
2869
--- a/tests/qemu-iotests/198.out
2870
+++ b/tests/qemu-iotests/198.out
2871
@@ -XXX,XX +XXX,XX @@ Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=16777216 encrypt.format=luk
2872
wrote 16777216/16777216 bytes at offset 0
2873
16 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
2874
== create overlay ==
2875
-Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=16777216 backing_file=TEST_DIR/t.IMGFMT.base encrypt.format=luks encrypt.key-secret=sec1 encrypt.iter-time=10
2876
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=16777216 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT encrypt.format=luks encrypt.key-secret=sec1 encrypt.iter-time=10
2877
2878
== writing whole image layer ==
2879
wrote 16777216/16777216 bytes at offset 0
2880
@@ -XXX,XX +XXX,XX @@ image: json:{ /* filtered */ }
2881
file format: IMGFMT
2882
virtual size: 16 MiB (16777216 bytes)
2883
backing file: TEST_DIR/t.IMGFMT.base
2884
+backing file format: IMGFMT
2885
Format specific information:
2886
compression type: zlib
2887
encrypt:
2888
diff --git a/tests/qemu-iotests/204 b/tests/qemu-iotests/204
2889
index XXXXXXX..XXXXXXX 100755
2890
--- a/tests/qemu-iotests/204
2891
+++ b/tests/qemu-iotests/204
2892
@@ -XXX,XX +XXX,XX @@ echo "== setting up files =="
2893
2894
TEST_IMG="$TEST_IMG.base" _make_test_img $size
2895
$QEMU_IO -c "write -P 11 0 $size" "$TEST_IMG.base" | _filter_qemu_io
2896
-_make_test_img -b "$TEST_IMG.base"
2897
+_make_test_img -b "$TEST_IMG.base" -F $IMGFMT
2898
$QEMU_IO -c "write -P 22 0 110M" "$TEST_IMG" | _filter_qemu_io
2899
2900
# Limited to 64k max-transfer
2901
diff --git a/tests/qemu-iotests/204.out b/tests/qemu-iotests/204.out
2902
index XXXXXXX..XXXXXXX 100644
2903
--- a/tests/qemu-iotests/204.out
2904
+++ b/tests/qemu-iotests/204.out
2905
@@ -XXX,XX +XXX,XX @@ QA output created by 204
2906
Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=134217728
2907
wrote 134217728/134217728 bytes at offset 0
2908
128 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
2909
-Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728 backing_file=TEST_DIR/t.IMGFMT.base
2910
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
2911
wrote 115343360/115343360 bytes at offset 0
2912
110 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
2913
2914
diff --git a/tests/qemu-iotests/216 b/tests/qemu-iotests/216
2915
index XXXXXXX..XXXXXXX 100755
2916
--- a/tests/qemu-iotests/216
2917
+++ b/tests/qemu-iotests/216
2918
@@ -XXX,XX +XXX,XX @@ with iotests.FilePath('base.img') as base_img_path, \
2919
assert qemu_img('create', '-f', iotests.imgfmt, base_img_path, '64M') == 0
2920
assert qemu_io_silent(base_img_path, '-c', 'write -P 1 0M 1M') == 0
2921
assert qemu_img('create', '-f', iotests.imgfmt, '-b', base_img_path,
2922
- top_img_path) == 0
2923
+ '-F', iotests.imgfmt, top_img_path) == 0
2924
assert qemu_io_silent(top_img_path, '-c', 'write -P 2 1M 1M') == 0
2925
2926
log('Done')
2927
diff --git a/tests/qemu-iotests/224 b/tests/qemu-iotests/224
2928
index XXXXXXX..XXXXXXX 100755
2929
--- a/tests/qemu-iotests/224
2930
+++ b/tests/qemu-iotests/224
2931
@@ -XXX,XX +XXX,XX @@ for filter_node_name in False, True:
2932
assert qemu_img('create', '-f', iotests.imgfmt,
2933
base_img_path, '64M') == 0
2934
assert qemu_img('create', '-f', iotests.imgfmt, '-b', base_img_path,
2935
- mid_img_path) == 0
2936
+ '-F', iotests.imgfmt, mid_img_path) == 0
2937
assert qemu_img('create', '-f', iotests.imgfmt, '-b', mid_img_path,
2938
- top_img_path) == 0
2939
+ '-F', iotests.imgfmt, top_img_path) == 0
2940
2941
# Something to commit
2942
assert qemu_io_silent(mid_img_path, '-c', 'write -P 1 0 1M') == 0
2943
diff --git a/tests/qemu-iotests/225 b/tests/qemu-iotests/225
2944
index XXXXXXX..XXXXXXX 100755
2945
--- a/tests/qemu-iotests/225
2946
+++ b/tests/qemu-iotests/225
2947
@@ -XXX,XX +XXX,XX @@ _unsupported_imgopts "subformat=monolithicFlat" \
2948
2949
TEST_IMG="$TEST_IMG.base" _make_test_img 1M
2950
TEST_IMG="$TEST_IMG.not_base" _make_test_img 1M
2951
-_make_test_img -b "$TEST_IMG.base"
2952
+_make_test_img -b "$TEST_IMG.base" -F $IMGFMT
2953
2954
make_opts()
2955
{
2956
diff --git a/tests/qemu-iotests/225.out b/tests/qemu-iotests/225.out
2957
index XXXXXXX..XXXXXXX 100644
2958
--- a/tests/qemu-iotests/225.out
2959
+++ b/tests/qemu-iotests/225.out
2960
@@ -XXX,XX +XXX,XX @@
2961
QA output created by 225
2962
Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=1048576
2963
Formatting 'TEST_DIR/t.IMGFMT.not_base', fmt=IMGFMT size=1048576
2964
-Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=1048576 backing_file=TEST_DIR/t.IMGFMT.base
2965
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=1048576 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
2966
2967
=== Testing fitting VMDK backing image ===
2968
2969
diff --git a/tests/qemu-iotests/228 b/tests/qemu-iotests/228
2970
index XXXXXXX..XXXXXXX 100755
2971
--- a/tests/qemu-iotests/228
2972
+++ b/tests/qemu-iotests/228
2973
@@ -XXX,XX +XXX,XX @@ with iotests.FilePath('base.img') as base_img_path, \
2974
assert qemu_img('create', '-f', iotests.imgfmt, base_img_path, '64M') == 0
2975
# Choose a funny way to describe the backing filename
2976
assert qemu_img('create', '-f', iotests.imgfmt, '-b',
2977
- 'file:' + base_img_path, top_img_path) == 0
2978
+ 'file:' + base_img_path, '-F', iotests.imgfmt,
2979
+ top_img_path) == 0
2980
2981
vm.launch()
2982
2983
@@ -XXX,XX +XXX,XX @@ with iotests.FilePath('base.img') as base_img_path, \
2984
# filename unless the backing file is opened implicitly with the
2985
# overlay)
2986
assert qemu_img('create', '-f', iotests.imgfmt, '-b', base_img_path,
2987
- top_img_path) == 0
2988
+ '-F', iotests.imgfmt, top_img_path) == 0
2989
2990
# You can only reliably override backing options by using a node
2991
# reference (or by specifying file.filename, but, well...)
2992
diff --git a/tests/qemu-iotests/245 b/tests/qemu-iotests/245
2993
index XXXXXXX..XXXXXXX 100755
2994
--- a/tests/qemu-iotests/245
2995
+++ b/tests/qemu-iotests/245
2996
@@ -XXX,XX +XXX,XX @@ class TestBlockdevReopen(iotests.QMPTestCase):
2997
2998
def setUp(self):
2999
qemu_img('create', '-f', iotests.imgfmt, hd_path[0], '3M')
3000
- qemu_img('create', '-f', iotests.imgfmt, '-b', hd_path[0], hd_path[1])
3001
+ qemu_img('create', '-f', iotests.imgfmt, '-b', hd_path[0],
3002
+ '-F', iotests.imgfmt, hd_path[1])
3003
qemu_img('create', '-f', iotests.imgfmt, hd_path[2], '3M')
3004
qemu_io('-f', iotests.imgfmt, '-c', 'write -P 0xa0 0 1M', hd_path[0])
3005
qemu_io('-f', iotests.imgfmt, '-c', 'write -P 0xa1 1M 1M', hd_path[1])
3006
diff --git a/tests/qemu-iotests/249 b/tests/qemu-iotests/249
3007
index XXXXXXX..XXXXXXX 100755
3008
--- a/tests/qemu-iotests/249
3009
+++ b/tests/qemu-iotests/249
3010
@@ -XXX,XX +XXX,XX @@ IMG_SIZE=1M
3011
3012
# Create the images: base <- int <- active
3013
TEST_IMG="$TEST_IMG.base" _make_test_img $IMG_SIZE | _filter_imgfmt
3014
-TEST_IMG="$TEST_IMG.int" _make_test_img -b "$TEST_IMG.base" | _filter_imgfmt
3015
-_make_test_img -b "$TEST_IMG.int" | _filter_imgfmt
3016
+TEST_IMG="$TEST_IMG.int" _make_test_img -b "$TEST_IMG.base" -F $IMGFMT | _filter_imgfmt
3017
+_make_test_img -b "$TEST_IMG.int" -F $IMGFMT | _filter_imgfmt
3018
3019
# Launch QEMU with these two drives:
3020
# none0: base (read-only)
3021
diff --git a/tests/qemu-iotests/249.out b/tests/qemu-iotests/249.out
3022
index XXXXXXX..XXXXXXX 100644
3023
--- a/tests/qemu-iotests/249.out
3024
+++ b/tests/qemu-iotests/249.out
3025
@@ -XXX,XX +XXX,XX @@
3026
QA output created by 249
3027
Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=1048576
3028
-Formatting 'TEST_DIR/t.IMGFMT.int', fmt=IMGFMT size=1048576 backing_file=TEST_DIR/t.IMGFMT.base
3029
-Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=1048576 backing_file=TEST_DIR/t.IMGFMT.int
3030
+Formatting 'TEST_DIR/t.IMGFMT.int', fmt=IMGFMT size=1048576 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
3031
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=1048576 backing_file=TEST_DIR/t.IMGFMT.int backing_fmt=IMGFMT
3032
{ 'execute': 'qmp_capabilities' }
3033
{"return": {}}
3034
3035
diff --git a/tests/qemu-iotests/252 b/tests/qemu-iotests/252
3036
index XXXXXXX..XXXXXXX 100755
3037
--- a/tests/qemu-iotests/252
3038
+++ b/tests/qemu-iotests/252
3039
@@ -XXX,XX +XXX,XX @@ $QEMU_IMG map --output=json "$TEST_IMG" | _filter_qemu_img_map
3040
3041
echo
3042
3043
-$QEMU_IMG rebase -b "$TEST_IMG.base_new" "$TEST_IMG"
3044
+$QEMU_IMG rebase -b "$TEST_IMG.base_new" -F $IMGFMT "$TEST_IMG"
3045
3046
# Verify the data is correct
3047
$QEMU_IO "$TEST_IMG" \
3048
diff --git a/tests/qemu-iotests/257 b/tests/qemu-iotests/257
3049
index XXXXXXX..XXXXXXX 100755
3050
--- a/tests/qemu-iotests/257
3051
+++ b/tests/qemu-iotests/257
3052
@@ -XXX,XX +XXX,XX @@ def compare_images(image, reference, baseimg=None, expected_match=True):
3053
"""
3054
expected_ret = 0 if expected_match else 1
3055
if baseimg:
3056
- assert qemu_img("rebase", "-u", "-b", baseimg, image) == 0
3057
+ assert qemu_img("rebase", "-u", "-b", baseimg, '-F', iotests.imgfmt,
3058
+ image) == 0
3059
ret = qemu_img("compare", image, reference)
3060
log('qemu_img compare "{:s}" "{:s}" ==> {:s}, {:s}'.format(
3061
image, reference,
3062
diff --git a/tests/qemu-iotests/267 b/tests/qemu-iotests/267
3063
index XXXXXXX..XXXXXXX 100755
3064
--- a/tests/qemu-iotests/267
3065
+++ b/tests/qemu-iotests/267
3066
@@ -XXX,XX +XXX,XX @@ size=128M
3067
run_test()
3068
{
3069
if [ -n "$BACKING_FILE" ]; then
3070
- _make_test_img -b "$BACKING_FILE" $size
3071
+ _make_test_img -b "$BACKING_FILE" -F $IMGFMT $size
3072
else
3073
_make_test_img $size
3074
fi
3075
@@ -XXX,XX +XXX,XX @@ echo
3076
echo "=== -blockdev with NBD server on the backing file ==="
3077
echo
3078
3079
-_make_test_img -b "$TEST_IMG.base" $size
3080
+_make_test_img -b "$TEST_IMG.base" -F $IMGFMT $size
3081
cat <<EOF |
3082
nbd_server_start unix:$SOCK_DIR/nbd
3083
nbd_server_add -w backing-fmt
3084
diff --git a/tests/qemu-iotests/267.out b/tests/qemu-iotests/267.out
3085
index XXXXXXX..XXXXXXX 100644
3086
--- a/tests/qemu-iotests/267.out
3087
+++ b/tests/qemu-iotests/267.out
3088
@@ -XXX,XX +XXX,XX @@ ID TAG VM SIZE DATE VM CLOCK
3089
=== -blockdev with a backing file ===
3090
3091
Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=134217728
3092
-Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728 backing_file=TEST_DIR/t.IMGFMT.base
3093
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
3094
Testing: -blockdev driver=file,filename=TEST_DIR/t.IMGFMT.base,node-name=backing-file -blockdev driver=file,filename=TEST_DIR/t.IMGFMT,node-name=file -blockdev driver=IMGFMT,file=file,backing=backing-file,node-name=fmt
3095
QEMU X.Y.Z monitor - type 'help' for more information
3096
(qemu) savevm snap0
3097
@@ -XXX,XX +XXX,XX @@ ID TAG VM SIZE DATE VM CLOCK
3098
(qemu) loadvm snap0
3099
(qemu) quit
3100
3101
-Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728 backing_file=TEST_DIR/t.IMGFMT.base
3102
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
3103
Testing: -blockdev driver=file,filename=TEST_DIR/t.IMGFMT.base,node-name=backing-file -blockdev driver=IMGFMT,file=backing-file,node-name=backing-fmt -blockdev driver=file,filename=TEST_DIR/t.IMGFMT,node-name=file -blockdev driver=IMGFMT,file=file,backing=backing-fmt,node-name=fmt
3104
QEMU X.Y.Z monitor - type 'help' for more information
3105
(qemu) savevm snap0
3106
@@ -XXX,XX +XXX,XX @@ Internal snapshots on backing file:
3107
3108
=== -blockdev with NBD server on the backing file ===
3109
3110
-Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728 backing_file=TEST_DIR/t.IMGFMT.base
3111
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
3112
Testing: -blockdev driver=file,filename=TEST_DIR/t.IMGFMT.base,node-name=backing-file -blockdev driver=IMGFMT,file=backing-file,node-name=backing-fmt -blockdev driver=file,filename=TEST_DIR/t.IMGFMT,node-name=file -blockdev driver=IMGFMT,file=file,backing=backing-fmt,node-name=fmt
3113
QEMU X.Y.Z monitor - type 'help' for more information
3114
(qemu) nbd_server_start unix:SOCK_DIR/nbd
3115
diff --git a/tests/qemu-iotests/270 b/tests/qemu-iotests/270
3116
index XXXXXXX..XXXXXXX 100755
3117
--- a/tests/qemu-iotests/270
3118
+++ b/tests/qemu-iotests/270
3119
@@ -XXX,XX +XXX,XX @@ $QEMU_IO -c 'write 0 512' "$TEST_IMG.base" | _filter_qemu_io
3120
# We need a large cluster size, see below for why (above the $QEMU_IO
3121
# invocation)
3122
_make_test_img -o cluster_size=2M,data_file="$TEST_IMG.orig" \
3123
- -b "$TEST_IMG.base" 4G
3124
+ -b "$TEST_IMG.base" -F $IMGFMT 4G
3125
3126
# We want a null-co as the data file, because it allows us to quickly
3127
# "write" 2G of data without using any space.
3128
diff --git a/tests/qemu-iotests/270.out b/tests/qemu-iotests/270.out
3129
index XXXXXXX..XXXXXXX 100644
3130
--- a/tests/qemu-iotests/270.out
3131
+++ b/tests/qemu-iotests/270.out
3132
@@ -XXX,XX +XXX,XX @@ QA output created by 270
3133
Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=4294967296
3134
wrote 512/512 bytes at offset 0
3135
512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
3136
-Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=4294967296 backing_file=TEST_DIR/t.IMGFMT.base data_file=TEST_DIR/t.IMGFMT.orig
3137
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=4294967296 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT data_file=TEST_DIR/t.IMGFMT.orig
3138
wrote 2147483136/2147483136 bytes at offset 768
3139
2 GiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
3140
No errors were found on the image.
3141
diff --git a/tests/qemu-iotests/273 b/tests/qemu-iotests/273
3142
index XXXXXXX..XXXXXXX 100755
3143
--- a/tests/qemu-iotests/273
3144
+++ b/tests/qemu-iotests/273
3145
@@ -XXX,XX +XXX,XX @@ run_qemu()
3146
}
3147
3148
TEST_IMG="$TEST_IMG.base" _make_test_img 64M
3149
-TEST_IMG="$TEST_IMG.mid" _make_test_img -b "$TEST_IMG.base"
3150
-_make_test_img -b "$TEST_IMG.mid"
3151
+TEST_IMG="$TEST_IMG.mid" _make_test_img -b "$TEST_IMG.base" -F $IMGFMT
3152
+_make_test_img -b "$TEST_IMG.mid" -F $IMGFMT
3153
3154
run_qemu \
3155
-blockdev file,node-name=base,filename="$TEST_IMG.base" \
3156
diff --git a/tests/qemu-iotests/273.out b/tests/qemu-iotests/273.out
3157
index XXXXXXX..XXXXXXX 100644
3158
--- a/tests/qemu-iotests/273.out
3159
+++ b/tests/qemu-iotests/273.out
3160
@@ -XXX,XX +XXX,XX @@
3161
QA output created by 273
3162
Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=67108864
3163
-Formatting 'TEST_DIR/t.IMGFMT.mid', fmt=IMGFMT size=67108864 backing_file=TEST_DIR/t.IMGFMT.base
3164
-Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864 backing_file=TEST_DIR/t.IMGFMT.mid
3165
+Formatting 'TEST_DIR/t.IMGFMT.mid', fmt=IMGFMT size=67108864 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
3166
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864 backing_file=TEST_DIR/t.IMGFMT.mid backing_fmt=IMGFMT
3167
Testing: -blockdev file,node-name=base,filename=TEST_DIR/t.IMGFMT.base -blockdev file,node-name=midf,filename=TEST_DIR/t.IMGFMT.mid -blockdev {"driver":"IMGFMT","node-name":"mid","file":"midf","backing":null} -blockdev file,node-name=topf,filename=TEST_DIR/t.IMGFMT -blockdev {"driver":"IMGFMT","file":"topf","node-name":"top","backing":null}
3168
{
3169
QMP_VERSION
3170
diff --git a/tests/qemu-iotests/274 b/tests/qemu-iotests/274
3171
index XXXXXXX..XXXXXXX 100755
3172
--- a/tests/qemu-iotests/274
3173
+++ b/tests/qemu-iotests/274
3174
@@ -XXX,XX +XXX,XX @@ size_diff = size_long - size_short
3175
def create_chain() -> None:
3176
iotests.qemu_img_log('create', '-f', iotests.imgfmt, base,
3177
str(size_long))
3178
- iotests.qemu_img_log('create', '-f', iotests.imgfmt, '-b', base, mid,
3179
- str(size_short))
3180
- iotests.qemu_img_log('create', '-f', iotests.imgfmt, '-b', mid, top,
3181
- str(size_long))
3182
+ iotests.qemu_img_log('create', '-f', iotests.imgfmt, '-b', base,
3183
+ '-F', iotests.imgfmt, mid, str(size_short))
3184
+ iotests.qemu_img_log('create', '-f', iotests.imgfmt, '-b', mid,
3185
+ '-F', iotests.imgfmt, top, str(size_long))
3186
3187
iotests.qemu_io_log('-c', 'write -P 1 0 %d' % size_long, base)
3188
3189
@@ -XXX,XX +XXX,XX @@ with iotests.FilePath('base') as base, \
3190
3191
iotests.log('=== preallocation=%s ===' % prealloc)
3192
iotests.qemu_img_log('create', '-f', iotests.imgfmt, base, base_size)
3193
- iotests.qemu_img_log('create', '-f', iotests.imgfmt, '-b', base, top,
3194
- top_size_old)
3195
+ iotests.qemu_img_log('create', '-f', iotests.imgfmt, '-b', base,
3196
+ '-F', iotests.imgfmt, top, top_size_old)
3197
iotests.qemu_io_log('-c', 'write -P 1 %s 64k' % off, base)
3198
3199
# After this, top_size_old to base_size should be allocated/zeroed.
3200
diff --git a/tests/qemu-iotests/274.out b/tests/qemu-iotests/274.out
3201
index XXXXXXX..XXXXXXX 100644
3202
--- a/tests/qemu-iotests/274.out
3203
+++ b/tests/qemu-iotests/274.out
3204
@@ -XXX,XX +XXX,XX @@
3205
== Commit tests ==
3206
Formatting 'TEST_DIR/PID-base', fmt=qcow2 size=2097152 cluster_size=65536 lazy_refcounts=off refcount_bits=16 compression_type=zlib
3207
3208
-Formatting 'TEST_DIR/PID-mid', fmt=qcow2 size=1048576 backing_file=TEST_DIR/PID-base cluster_size=65536 lazy_refcounts=off refcount_bits=16 compression_type=zlib
3209
+Formatting 'TEST_DIR/PID-mid', fmt=qcow2 size=1048576 backing_file=TEST_DIR/PID-base backing_fmt=qcow2 cluster_size=65536 lazy_refcounts=off refcount_bits=16 compression_type=zlib
3210
3211
-Formatting 'TEST_DIR/PID-top', fmt=qcow2 size=2097152 backing_file=TEST_DIR/PID-mid cluster_size=65536 lazy_refcounts=off refcount_bits=16 compression_type=zlib
3212
+Formatting 'TEST_DIR/PID-top', fmt=qcow2 size=2097152 backing_file=TEST_DIR/PID-mid backing_fmt=qcow2 cluster_size=65536 lazy_refcounts=off refcount_bits=16 compression_type=zlib
3213
3214
wrote 2097152/2097152 bytes at offset 0
3215
2 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
3216
@@ -XXX,XX +XXX,XX @@ file format: IMGFMT
3217
virtual size: 2 MiB (2097152 bytes)
3218
cluster_size: 65536
3219
backing file: TEST_DIR/PID-base
3220
+backing file format: IMGFMT
3221
Format specific information:
3222
compat: 1.1
3223
compression type: zlib
3224
@@ -XXX,XX +XXX,XX @@ read 1048576/1048576 bytes at offset 1048576
3225
=== Testing HMP commit (top -> mid) ===
3226
Formatting 'TEST_DIR/PID-base', fmt=qcow2 size=2097152 cluster_size=65536 lazy_refcounts=off refcount_bits=16 compression_type=zlib
3227
3228
-Formatting 'TEST_DIR/PID-mid', fmt=qcow2 size=1048576 backing_file=TEST_DIR/PID-base cluster_size=65536 lazy_refcounts=off refcount_bits=16 compression_type=zlib
3229
+Formatting 'TEST_DIR/PID-mid', fmt=qcow2 size=1048576 backing_file=TEST_DIR/PID-base backing_fmt=qcow2 cluster_size=65536 lazy_refcounts=off refcount_bits=16 compression_type=zlib
3230
3231
-Formatting 'TEST_DIR/PID-top', fmt=qcow2 size=2097152 backing_file=TEST_DIR/PID-mid cluster_size=65536 lazy_refcounts=off refcount_bits=16 compression_type=zlib
3232
+Formatting 'TEST_DIR/PID-top', fmt=qcow2 size=2097152 backing_file=TEST_DIR/PID-mid backing_fmt=qcow2 cluster_size=65536 lazy_refcounts=off refcount_bits=16 compression_type=zlib
3233
3234
wrote 2097152/2097152 bytes at offset 0
3235
2 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
3236
@@ -XXX,XX +XXX,XX @@ file format: IMGFMT
3237
virtual size: 2 MiB (2097152 bytes)
3238
cluster_size: 65536
3239
backing file: TEST_DIR/PID-base
3240
+backing file format: IMGFMT
3241
Format specific information:
3242
compat: 1.1
3243
compression type: zlib
3244
@@ -XXX,XX +XXX,XX @@ read 1048576/1048576 bytes at offset 1048576
3245
=== Testing QMP active commit (top -> mid) ===
3246
Formatting 'TEST_DIR/PID-base', fmt=qcow2 size=2097152 cluster_size=65536 lazy_refcounts=off refcount_bits=16 compression_type=zlib
3247
3248
-Formatting 'TEST_DIR/PID-mid', fmt=qcow2 size=1048576 backing_file=TEST_DIR/PID-base cluster_size=65536 lazy_refcounts=off refcount_bits=16 compression_type=zlib
3249
+Formatting 'TEST_DIR/PID-mid', fmt=qcow2 size=1048576 backing_file=TEST_DIR/PID-base backing_fmt=qcow2 cluster_size=65536 lazy_refcounts=off refcount_bits=16 compression_type=zlib
3250
3251
-Formatting 'TEST_DIR/PID-top', fmt=qcow2 size=2097152 backing_file=TEST_DIR/PID-mid cluster_size=65536 lazy_refcounts=off refcount_bits=16 compression_type=zlib
3252
+Formatting 'TEST_DIR/PID-top', fmt=qcow2 size=2097152 backing_file=TEST_DIR/PID-mid backing_fmt=qcow2 cluster_size=65536 lazy_refcounts=off refcount_bits=16 compression_type=zlib
3253
3254
wrote 2097152/2097152 bytes at offset 0
3255
2 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
3256
@@ -XXX,XX +XXX,XX @@ file format: IMGFMT
3257
virtual size: 2 MiB (2097152 bytes)
3258
cluster_size: 65536
3259
backing file: TEST_DIR/PID-base
3260
+backing file format: IMGFMT
3261
Format specific information:
3262
compat: 1.1
3263
compression type: zlib
3264
@@ -XXX,XX +XXX,XX @@ read 1048576/1048576 bytes at offset 1048576
3265
=== preallocation=off ===
3266
Formatting 'TEST_DIR/PID-base', fmt=qcow2 size=6442450944 cluster_size=65536 lazy_refcounts=off refcount_bits=16 compression_type=zlib
3267
3268
-Formatting 'TEST_DIR/PID-top', fmt=qcow2 size=1073741824 backing_file=TEST_DIR/PID-base cluster_size=65536 lazy_refcounts=off refcount_bits=16 compression_type=zlib
3269
+Formatting 'TEST_DIR/PID-top', fmt=qcow2 size=1073741824 backing_file=TEST_DIR/PID-base backing_fmt=qcow2 cluster_size=65536 lazy_refcounts=off refcount_bits=16 compression_type=zlib
3270
3271
wrote 65536/65536 bytes at offset 5368709120
3272
64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
3273
@@ -XXX,XX +XXX,XX @@ read 65536/65536 bytes at offset 5368709120
3274
=== preallocation=metadata ===
3275
Formatting 'TEST_DIR/PID-base', fmt=qcow2 size=34359738368 cluster_size=65536 lazy_refcounts=off refcount_bits=16 compression_type=zlib
3276
3277
-Formatting 'TEST_DIR/PID-top', fmt=qcow2 size=32212254720 backing_file=TEST_DIR/PID-base cluster_size=65536 lazy_refcounts=off refcount_bits=16 compression_type=zlib
3278
+Formatting 'TEST_DIR/PID-top', fmt=qcow2 size=32212254720 backing_file=TEST_DIR/PID-base backing_fmt=qcow2 cluster_size=65536 lazy_refcounts=off refcount_bits=16 compression_type=zlib
3279
3280
wrote 65536/65536 bytes at offset 33285996544
3281
64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
3282
@@ -XXX,XX +XXX,XX @@ read 65536/65536 bytes at offset 33285996544
3283
=== preallocation=falloc ===
3284
Formatting 'TEST_DIR/PID-base', fmt=qcow2 size=10485760 cluster_size=65536 lazy_refcounts=off refcount_bits=16 compression_type=zlib
3285
3286
-Formatting 'TEST_DIR/PID-top', fmt=qcow2 size=5242880 backing_file=TEST_DIR/PID-base cluster_size=65536 lazy_refcounts=off refcount_bits=16 compression_type=zlib
3287
+Formatting 'TEST_DIR/PID-top', fmt=qcow2 size=5242880 backing_file=TEST_DIR/PID-base backing_fmt=qcow2 cluster_size=65536 lazy_refcounts=off refcount_bits=16 compression_type=zlib
3288
3289
wrote 65536/65536 bytes at offset 9437184
3290
64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
3291
@@ -XXX,XX +XXX,XX @@ read 65536/65536 bytes at offset 9437184
3292
=== preallocation=full ===
3293
Formatting 'TEST_DIR/PID-base', fmt=qcow2 size=16777216 cluster_size=65536 lazy_refcounts=off refcount_bits=16 compression_type=zlib
3294
3295
-Formatting 'TEST_DIR/PID-top', fmt=qcow2 size=8388608 backing_file=TEST_DIR/PID-base cluster_size=65536 lazy_refcounts=off refcount_bits=16 compression_type=zlib
3296
+Formatting 'TEST_DIR/PID-top', fmt=qcow2 size=8388608 backing_file=TEST_DIR/PID-base backing_fmt=qcow2 cluster_size=65536 lazy_refcounts=off refcount_bits=16 compression_type=zlib
3297
3298
wrote 65536/65536 bytes at offset 11534336
3299
64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
3300
@@ -XXX,XX +XXX,XX @@ read 65536/65536 bytes at offset 11534336
3301
=== preallocation=off ===
3302
Formatting 'TEST_DIR/PID-base', fmt=qcow2 size=393216 cluster_size=65536 lazy_refcounts=off refcount_bits=16 compression_type=zlib
3303
3304
-Formatting 'TEST_DIR/PID-top', fmt=qcow2 size=259072 backing_file=TEST_DIR/PID-base cluster_size=65536 lazy_refcounts=off refcount_bits=16 compression_type=zlib
3305
+Formatting 'TEST_DIR/PID-top', fmt=qcow2 size=259072 backing_file=TEST_DIR/PID-base backing_fmt=qcow2 cluster_size=65536 lazy_refcounts=off refcount_bits=16 compression_type=zlib
3306
3307
wrote 65536/65536 bytes at offset 259072
3308
64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
3309
@@ -XXX,XX +XXX,XX @@ read 65536/65536 bytes at offset 259072
3310
=== preallocation=off ===
3311
Formatting 'TEST_DIR/PID-base', fmt=qcow2 size=409600 cluster_size=65536 lazy_refcounts=off refcount_bits=16 compression_type=zlib
3312
3313
-Formatting 'TEST_DIR/PID-top', fmt=qcow2 size=262144 backing_file=TEST_DIR/PID-base cluster_size=65536 lazy_refcounts=off refcount_bits=16 compression_type=zlib
3314
+Formatting 'TEST_DIR/PID-top', fmt=qcow2 size=262144 backing_file=TEST_DIR/PID-base backing_fmt=qcow2 cluster_size=65536 lazy_refcounts=off refcount_bits=16 compression_type=zlib
3315
3316
wrote 65536/65536 bytes at offset 344064
3317
64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
3318
@@ -XXX,XX +XXX,XX @@ read 65536/65536 bytes at offset 344064
3319
=== preallocation=off ===
3320
Formatting 'TEST_DIR/PID-base', fmt=qcow2 size=524288 cluster_size=65536 lazy_refcounts=off refcount_bits=16 compression_type=zlib
3321
3322
-Formatting 'TEST_DIR/PID-top', fmt=qcow2 size=262144 backing_file=TEST_DIR/PID-base cluster_size=65536 lazy_refcounts=off refcount_bits=16 compression_type=zlib
3323
+Formatting 'TEST_DIR/PID-top', fmt=qcow2 size=262144 backing_file=TEST_DIR/PID-base backing_fmt=qcow2 cluster_size=65536 lazy_refcounts=off refcount_bits=16 compression_type=zlib
3324
3325
wrote 65536/65536 bytes at offset 446464
3326
64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
3327
diff --git a/tests/qemu-iotests/279 b/tests/qemu-iotests/279
3328
index XXXXXXX..XXXXXXX 100755
3329
--- a/tests/qemu-iotests/279
3330
+++ b/tests/qemu-iotests/279
3331
@@ -XXX,XX +XXX,XX @@ _unsupported_imgopts "subformat=monolithicFlat" \
3332
"subformat=twoGbMaxExtentFlat" \
3333
3334
TEST_IMG="$TEST_IMG.base" _make_test_img 64M
3335
-TEST_IMG="$TEST_IMG.mid" _make_test_img -b "$TEST_IMG.base"
3336
-_make_test_img -b "$TEST_IMG.mid"
3337
+TEST_IMG="$TEST_IMG.mid" _make_test_img -b "$TEST_IMG.base" -F $IMGFMT
3338
+_make_test_img -b "$TEST_IMG.mid" -F $IMGFMT
3339
3340
echo
3341
echo '== qemu-img info --backing-chain =='
3342
diff --git a/tests/qemu-iotests/279.out b/tests/qemu-iotests/279.out
3343
index XXXXXXX..XXXXXXX 100644
3344
--- a/tests/qemu-iotests/279.out
3345
+++ b/tests/qemu-iotests/279.out
3346
@@ -XXX,XX +XXX,XX @@
3347
QA output created by 279
3348
Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=67108864
3349
-Formatting 'TEST_DIR/t.IMGFMT.mid', fmt=IMGFMT size=67108864 backing_file=TEST_DIR/t.IMGFMT.base
3350
-Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864 backing_file=TEST_DIR/t.IMGFMT.mid
3351
+Formatting 'TEST_DIR/t.IMGFMT.mid', fmt=IMGFMT size=67108864 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
3352
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864 backing_file=TEST_DIR/t.IMGFMT.mid backing_fmt=IMGFMT
3353
3354
== qemu-img info --backing-chain ==
3355
image: TEST_DIR/t.IMGFMT
3356
diff --git a/tests/qemu-iotests/290 b/tests/qemu-iotests/290
3357
index XXXXXXX..XXXXXXX 100755
3358
--- a/tests/qemu-iotests/290
3359
+++ b/tests/qemu-iotests/290
3360
@@ -XXX,XX +XXX,XX @@ $QEMU_IO -c 'write -P 0xff 0 128k' "$BACKING_IMG" | _filter_qemu_io
3361
3362
for qcow2_compat in 0.10 1.1; do
3363
echo "# Create an image with compat=$qcow2_compat and a backing file"
3364
- _make_test_img -o "compat=$qcow2_compat" -b "$BACKING_IMG"
3365
+ _make_test_img -o "compat=$qcow2_compat" -b "$BACKING_IMG" -F $IMGFMT
3366
3367
echo "# Fill all clusters with data and then discard them"
3368
$QEMU_IO -c 'write -P 0x01 0 128k' "$TEST_IMG" | _filter_qemu_io
3369
diff --git a/tests/qemu-iotests/290.out b/tests/qemu-iotests/290.out
3370
index XXXXXXX..XXXXXXX 100644
3371
--- a/tests/qemu-iotests/290.out
3372
+++ b/tests/qemu-iotests/290.out
3373
@@ -XXX,XX +XXX,XX @@ Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=131072
3374
wrote 131072/131072 bytes at offset 0
3375
128 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
3376
# Create an image with compat=0.10 and a backing file
3377
-Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=131072 backing_file=TEST_DIR/t.IMGFMT.base
3378
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=131072 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
3379
# Fill all clusters with data and then discard them
3380
wrote 131072/131072 bytes at offset 0
3381
128 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
3382
@@ -XXX,XX +XXX,XX @@ read 131072/131072 bytes at offset 0
3383
Offset Length Mapped to File
3384
0 0x20000 0x50000 TEST_DIR/t.qcow2
3385
# Create an image with compat=1.1 and a backing file
3386
-Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=131072 backing_file=TEST_DIR/t.IMGFMT.base
3387
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=131072 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
3388
# Fill all clusters with data and then discard them
3389
wrote 131072/131072 bytes at offset 0
3390
128 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
3391
--
3392
2.25.4
3393
3394
diff view generated by jsdifflib
Deleted patch
1
From: Eric Blake <eblake@redhat.com>
2
1
3
For now, this is a mechanical addition; all callers pass false. But
4
the next patch will use it to improve 'qemu-img rebase -u' when
5
selecting a backing file with no format.
6
7
Signed-off-by: Eric Blake <eblake@redhat.com>
8
Reviewed-by: Peter Krempa <pkrempa@redhat.com>
9
Reviewed-by: Ján Tomko <jtomko@redhat.com>
10
Message-Id: <20200706203954.341758-10-eblake@redhat.com>
11
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
12
---
13
include/block/block.h | 4 ++--
14
block.c | 13 ++++++++++---
15
block/qcow2.c | 2 +-
16
block/stream.c | 2 +-
17
blockdev.c | 3 ++-
18
qemu-img.c | 4 ++--
19
6 files changed, 18 insertions(+), 10 deletions(-)
20
21
diff --git a/include/block/block.h b/include/block/block.h
22
index XXXXXXX..XXXXXXX 100644
23
--- a/include/block/block.h
24
+++ b/include/block/block.h
25
@@ -XXX,XX +XXX,XX @@ void bdrv_get_geometry(BlockDriverState *bs, uint64_t *nb_sectors_ptr);
26
void bdrv_refresh_limits(BlockDriverState *bs, Error **errp);
27
int bdrv_commit(BlockDriverState *bs);
28
int bdrv_make_empty(BdrvChild *c, Error **errp);
29
-int bdrv_change_backing_file(BlockDriverState *bs,
30
- const char *backing_file, const char *backing_fmt);
31
+int bdrv_change_backing_file(BlockDriverState *bs, const char *backing_file,
32
+ const char *backing_fmt, bool warn);
33
void bdrv_register(BlockDriver *bdrv);
34
int bdrv_drop_intermediate(BlockDriverState *top, BlockDriverState *base,
35
const char *backing_file_str);
36
diff --git a/block.c b/block.c
37
index XXXXXXX..XXXXXXX 100644
38
--- a/block.c
39
+++ b/block.c
40
@@ -XXX,XX +XXX,XX @@ static int bdrv_backing_update_filename(BdrvChild *c, BlockDriverState *base,
41
}
42
43
ret = bdrv_change_backing_file(parent, filename,
44
- base->drv ? base->drv->format_name : "");
45
+ base->drv ? base->drv->format_name : "",
46
+ false);
47
if (ret < 0) {
48
error_setg_errno(errp, -ret, "Could not update backing file link");
49
}
50
@@ -XXX,XX +XXX,XX @@ int bdrv_check(BlockDriverState *bs,
51
* image file header
52
* -ENOTSUP - format driver doesn't support changing the backing file
53
*/
54
-int bdrv_change_backing_file(BlockDriverState *bs,
55
- const char *backing_file, const char *backing_fmt)
56
+int bdrv_change_backing_file(BlockDriverState *bs, const char *backing_file,
57
+ const char *backing_fmt, bool warn)
58
{
59
BlockDriver *drv = bs->drv;
60
int ret;
61
@@ -XXX,XX +XXX,XX @@ int bdrv_change_backing_file(BlockDriverState *bs,
62
return -EINVAL;
63
}
64
65
+ if (warn && backing_file && !backing_fmt) {
66
+ warn_report("Deprecated use of backing file without explicit "
67
+ "backing format, use of this image requires "
68
+ "potentially unsafe format probing");
69
+ }
70
+
71
if (drv->bdrv_change_backing_file != NULL) {
72
ret = drv->bdrv_change_backing_file(bs, backing_file, backing_fmt);
73
} else {
74
diff --git a/block/qcow2.c b/block/qcow2.c
75
index XXXXXXX..XXXXXXX 100644
76
--- a/block/qcow2.c
77
+++ b/block/qcow2.c
78
@@ -XXX,XX +XXX,XX @@ qcow2_co_create(BlockdevCreateOptions *create_options, Error **errp)
79
}
80
81
ret = bdrv_change_backing_file(blk_bs(blk), qcow2_opts->backing_file,
82
- backing_format);
83
+ backing_format, false);
84
if (ret < 0) {
85
error_setg_errno(errp, -ret, "Could not assign backing file '%s' "
86
"with format '%s'", qcow2_opts->backing_file,
87
diff --git a/block/stream.c b/block/stream.c
88
index XXXXXXX..XXXXXXX 100644
89
--- a/block/stream.c
90
+++ b/block/stream.c
91
@@ -XXX,XX +XXX,XX @@ static int stream_prepare(Job *job)
92
}
93
}
94
bdrv_set_backing_hd(bs, base, &local_err);
95
- ret = bdrv_change_backing_file(bs, base_id, base_fmt);
96
+ ret = bdrv_change_backing_file(bs, base_id, base_fmt, false);
97
if (local_err) {
98
error_report_err(local_err);
99
return -EPERM;
100
diff --git a/blockdev.c b/blockdev.c
101
index XXXXXXX..XXXXXXX 100644
102
--- a/blockdev.c
103
+++ b/blockdev.c
104
@@ -XXX,XX +XXX,XX @@ void qmp_change_backing_file(const char *device,
105
}
106
107
ret = bdrv_change_backing_file(image_bs, backing_file,
108
- image_bs->drv ? image_bs->drv->format_name : "");
109
+ image_bs->drv ? image_bs->drv->format_name : "",
110
+ false);
111
112
if (ret < 0) {
113
error_setg_errno(errp, -ret, "Could not change backing file to '%s'",
114
diff --git a/qemu-img.c b/qemu-img.c
115
index XXXXXXX..XXXXXXX 100644
116
--- a/qemu-img.c
117
+++ b/qemu-img.c
118
@@ -XXX,XX +XXX,XX @@ static int img_rebase(int argc, char **argv)
119
* doesn't change when we switch the backing file.
120
*/
121
if (out_baseimg && *out_baseimg) {
122
- ret = bdrv_change_backing_file(bs, out_baseimg, out_basefmt);
123
+ ret = bdrv_change_backing_file(bs, out_baseimg, out_basefmt, false);
124
} else {
125
- ret = bdrv_change_backing_file(bs, NULL, NULL);
126
+ ret = bdrv_change_backing_file(bs, NULL, NULL, false);
127
}
128
129
if (ret == -ENOSPC) {
130
--
131
2.25.4
132
133
diff view generated by jsdifflib
Deleted patch
1
From: Eric Blake <eblake@redhat.com>
2
1
3
Creating an image that requires format probing of the backing image is
4
potentially unsafe (we've had several CVEs over the years based on
5
probes leaking information to the guest on a subsequent boot, although
6
these days tools like libvirt are aware of the issue enough to prevent
7
the worst effects). For example, if our probing algorithm ever
8
changes, or if other tools like libvirt determine a different probe
9
result than we do, then subsequent use of that backing file under a
10
different format will present corrupted data to the guest.
11
Fortunately, the worst effects occur only when the backing image is
12
originally raw, and we at least prevent commit into a probed raw
13
backing file that would change its probed type.
14
15
Still, it is worth starting a deprecation clock so that future
16
qemu-img can refuse to create backing chains that would rely on
17
probing, to encourage clients to avoid unsafe practices. Most
18
warnings are intentionally emitted from bdrv_img_create() in the block
19
layer, but qemu-img convert uses bdrv_create() which cannot emit its
20
own warning without causing spurious warnings on other code paths. In
21
the end, all command-line image creation or backing file rewriting now
22
performs a check.
23
24
Furthermore, if we probe a backing file as non-raw, then it is safe to
25
explicitly record that result (rather than relying on future probes);
26
only where we probe a raw image do we care about further warnings to
27
the user when using such an image (for example, commits into a
28
probed-raw backing file are prevented), to help them improve their
29
tooling. But whether or not we make the probe results explicit, we
30
still warn the user to remind them to upgrade their workflow to supply
31
-F always.
32
33
iotest 114 specifically wants to create an unsafe image for later
34
amendment rather than defaulting to our new default of recording a
35
probed format, so it needs an update. While touching it, expand it to
36
cover all of the various warnings enabled by this patch. iotest 293
37
also shows a change to qcow messages.
38
39
Signed-off-by: Eric Blake <eblake@redhat.com>
40
Message-Id: <20200706203954.341758-11-eblake@redhat.com>
41
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
42
---
43
docs/system/deprecated.rst | 20 ++++++++++++++++++++
44
block.c | 27 ++++++++++++++++++++++++++-
45
qemu-img.c | 9 ++++++++-
46
tests/qemu-iotests/114 | 12 ++++++++++++
47
tests/qemu-iotests/114.out | 9 +++++++++
48
tests/qemu-iotests/293.out | 4 +++-
49
6 files changed, 78 insertions(+), 3 deletions(-)
50
51
diff --git a/docs/system/deprecated.rst b/docs/system/deprecated.rst
52
index XXXXXXX..XXXXXXX 100644
53
--- a/docs/system/deprecated.rst
54
+++ b/docs/system/deprecated.rst
55
@@ -XXX,XX +XXX,XX @@ image). Rather, any changes to the backing chain should be performed
56
with ``qemu-img rebase -u`` either before or after the remaining
57
changes being performed by amend, as appropriate.
58
59
+qemu-img backing file without format (since 5.1)
60
+''''''''''''''''''''''''''''''''''''''''''''''''
61
+
62
+The use of ``qemu-img create``, ``qemu-img rebase``, or ``qemu-img
63
+convert`` to create or modify an image that depends on a backing file
64
+now recommends that an explicit backing format be provided. This is
65
+for safety: if QEMU probes a different format than what you thought,
66
+the data presented to the guest will be corrupt; similarly, presenting
67
+a raw image to a guest allows a potential security exploit if a future
68
+probe sees a non-raw image based on guest writes.
69
+
70
+To avoid the warning message, or even future refusal to create an
71
+unsafe image, you must pass ``-o backing_fmt=`` (or the shorthand
72
+``-F`` during create) to specify the intended backing format. You may
73
+use ``qemu-img rebase -u`` to retroactively add a backing format to an
74
+existing image. However, be aware that there are already potential
75
+security risks to blindly using ``qemu-img info`` to probe the format
76
+of an untrusted backing image, when deciding what format to add into
77
+an existing image.
78
+
79
Backwards compatibility
80
-----------------------
81
82
diff --git a/block.c b/block.c
83
index XXXXXXX..XXXXXXX 100644
84
--- a/block.c
85
+++ b/block.c
86
@@ -XXX,XX +XXX,XX @@ void bdrv_img_create(const char *filename, const char *fmt,
87
error_append_hint(&local_err, "Could not open backing image.\n");
88
goto out;
89
} else {
90
+ if (!backing_fmt) {
91
+ warn_report("Deprecated use of backing file without explicit "
92
+ "backing format (detected format of %s)",
93
+ bs->drv->format_name);
94
+ if (bs->drv != &bdrv_raw) {
95
+ /*
96
+ * A probe of raw deserves the most attention:
97
+ * leaving the backing format out of the image
98
+ * will ensure bs->probed is set (ensuring we
99
+ * don't accidentally commit into the backing
100
+ * file), and allow more spots to warn the users
101
+ * to fix their toolchain when opening this image
102
+ * later. For other images, we can safely record
103
+ * the format that we probed.
104
+ */
105
+ backing_fmt = bs->drv->format_name;
106
+ qemu_opt_set(opts, BLOCK_OPT_BACKING_FMT, backing_fmt,
107
+ NULL);
108
+ }
109
+ }
110
if (size == -1) {
111
/* Opened BS, have no size */
112
size = bdrv_getlength(bs);
113
@@ -XXX,XX +XXX,XX @@ void bdrv_img_create(const char *filename, const char *fmt,
114
}
115
bdrv_unref(bs);
116
}
117
- } /* (backing_file && !(flags & BDRV_O_NO_BACKING)) */
118
+ /* (backing_file && !(flags & BDRV_O_NO_BACKING)) */
119
+ } else if (backing_file && !backing_fmt) {
120
+ warn_report("Deprecated use of unopened backing file without "
121
+ "explicit backing format, use of this image requires "
122
+ "potentially unsafe format probing");
123
+ }
124
125
if (size == -1) {
126
error_setg(errp, "Image creation needs a size parameter");
127
diff --git a/qemu-img.c b/qemu-img.c
128
index XXXXXXX..XXXXXXX 100644
129
--- a/qemu-img.c
130
+++ b/qemu-img.c
131
@@ -XXX,XX +XXX,XX @@ static int img_convert(int argc, char **argv)
132
goto out;
133
}
134
135
+ if (out_baseimg_param) {
136
+ if (!qemu_opt_get(opts, BLOCK_OPT_BACKING_FMT)) {
137
+ warn_report("Deprecated use of backing file without explicit "
138
+ "backing format");
139
+ }
140
+ }
141
+
142
/* Check if compression is supported */
143
if (s.compressed) {
144
bool encryption =
145
@@ -XXX,XX +XXX,XX @@ static int img_rebase(int argc, char **argv)
146
* doesn't change when we switch the backing file.
147
*/
148
if (out_baseimg && *out_baseimg) {
149
- ret = bdrv_change_backing_file(bs, out_baseimg, out_basefmt, false);
150
+ ret = bdrv_change_backing_file(bs, out_baseimg, out_basefmt, true);
151
} else {
152
ret = bdrv_change_backing_file(bs, NULL, NULL, false);
153
}
154
diff --git a/tests/qemu-iotests/114 b/tests/qemu-iotests/114
155
index XXXXXXX..XXXXXXX 100755
156
--- a/tests/qemu-iotests/114
157
+++ b/tests/qemu-iotests/114
158
@@ -XXX,XX +XXX,XX @@ _unsupported_proto vxhs
159
# qcow2.py does not work too well with external data files
160
_unsupported_imgopts data_file
161
162
+# Intentionally specify backing file without backing format; demonstrate
163
+# the difference in warning messages when backing file could be probed.
164
+# Note that only a non-raw probe result will affect the resulting image.
165
+truncate --size=64M "$TEST_IMG.orig"
166
+_make_test_img -b "$TEST_IMG.orig" 64M
167
168
TEST_IMG="$TEST_IMG.base" _make_test_img 64M
169
+$QEMU_IMG convert -O qcow2 -B "$TEST_IMG.orig" "$TEST_IMG.orig" "$TEST_IMG"
170
_make_test_img -b "$TEST_IMG.base" 64M
171
+_make_test_img -u -b "$TEST_IMG.base" 64M
172
173
# Set an invalid backing file format
174
$PYTHON qcow2.py "$TEST_IMG" add-header-ext 0xE2792ACA "foo"
175
@@ -XXX,XX +XXX,XX @@ _img_info
176
$QEMU_IO -c "open $TEST_IMG" -c "read 0 4k" 2>&1 | _filter_qemu_io | _filter_testdir
177
$QEMU_IO -c "open -o backing.driver=$IMGFMT $TEST_IMG" -c "read 0 4k" | _filter_qemu_io
178
179
+# Rebase the image, to show that omitting backing format triggers a warning,
180
+# but probing now lets us use the backing file.
181
+$QEMU_IMG rebase -u -b "$TEST_IMG.base" "$TEST_IMG"
182
+$QEMU_IO -c "open $TEST_IMG" -c "read 0 4k" 2>&1 | _filter_qemu_io | _filter_testdir
183
+
184
# success, all done
185
echo '*** done'
186
rm -f $seq.full
187
diff --git a/tests/qemu-iotests/114.out b/tests/qemu-iotests/114.out
188
index XXXXXXX..XXXXXXX 100644
189
--- a/tests/qemu-iotests/114.out
190
+++ b/tests/qemu-iotests/114.out
191
@@ -XXX,XX +XXX,XX @@
192
QA output created by 114
193
+qemu-img: warning: Deprecated use of backing file without explicit backing format (detected format of raw)
194
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864 backing_file=TEST_DIR/t.IMGFMT.orig
195
Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=67108864
196
+qemu-img: warning: Deprecated use of backing file without explicit backing format
197
+qemu-img: warning: Deprecated use of backing file without explicit backing format (detected format of IMGFMT)
198
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
199
+qemu-img: warning: Deprecated use of unopened backing file without explicit backing format, use of this image requires potentially unsafe format probing
200
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864 backing_file=TEST_DIR/t.IMGFMT.base
201
image: TEST_DIR/t.IMGFMT
202
file format: IMGFMT
203
@@ -XXX,XX +XXX,XX @@ qemu-io: can't open device TEST_DIR/t.qcow2: Could not open backing file: Unknow
204
no file open, try 'help open'
205
read 4096/4096 bytes at offset 0
206
4 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
207
+qemu-img: warning: Deprecated use of backing file without explicit backing format, use of this image requires potentially unsafe format probing
208
+read 4096/4096 bytes at offset 0
209
+4 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
210
*** done
211
diff --git a/tests/qemu-iotests/293.out b/tests/qemu-iotests/293.out
212
index XXXXXXX..XXXXXXX 100644
213
--- a/tests/qemu-iotests/293.out
214
+++ b/tests/qemu-iotests/293.out
215
@@ -XXX,XX +XXX,XX @@ QA output created by 293
216
217
== qcow backed by qcow ==
218
Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=33554432
219
-Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=33554432 backing_file=TEST_DIR/t.IMGFMT.base
220
+qemu-img: warning: Deprecated use of backing file without explicit backing format (detected format of IMGFMT)
221
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=33554432 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
222
image: TEST_DIR/t.IMGFMT
223
file format: IMGFMT
224
virtual size: 32 MiB (33554432 bytes)
225
@@ -XXX,XX +XXX,XX @@ cluster_size: 512
226
backing file: TEST_DIR/t.IMGFMT.base
227
228
== qcow backed by raw ==
229
+qemu-img: warning: Deprecated use of backing file without explicit backing format (detected format of raw)
230
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=33554432 backing_file=TEST_DIR/t.IMGFMT.base
231
image: TEST_DIR/t.IMGFMT
232
file format: IMGFMT
233
--
234
2.25.4
235
236
diff view generated by jsdifflib