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 |