@@ -57,13 +57,14 @@ let checksum rpc session_id vdi =
5757 Digest. to_hex (Digest. file path)
5858 )
5959
60- let check_vdi_unchanged rpc session_id ~vdi_size ~prepare_vdi ~vdi_op sr_info ()
61- =
60+ let check_vdi_unchanged rpc session_id ~vdi_size ~prepare_vdi ~vdi_op
61+ ~ backing_format sr_info () =
6262 let sR = sr_info.Qt. sr in
63- Qt.VDI. with_new ~virtual_size: vdi_size rpc session_id sR (fun vdi ->
63+ Qt.VDI. with_new ~virtual_size: vdi_size ~backing_format rpc session_id sR
64+ (fun vdi ->
6465 prepare_vdi rpc session_id vdi ;
6566 let checksum_original = checksum rpc session_id vdi in
66- let new_vdi = vdi_op rpc session_id sR vdi in
67+ let new_vdi = vdi_op rpc session_id sR vdi backing_format in
6768 Qt.VDI. with_destroyed rpc session_id new_vdi (fun () ->
6869 let checksum_copy = checksum rpc session_id new_vdi in
6970 if checksum_copy <> checksum_original then
@@ -77,11 +78,12 @@ let check_vdi_unchanged rpc session_id ~vdi_size ~prepare_vdi ~vdi_op sr_info ()
7778 )
7879
7980let check_vdi_delta rpc session_id ~vdi_size ~prepare_vdi ~prepare_vdi_base
80- ~vdi_op sr_info () =
81+ ~vdi_op ~ backing_format sr_info () =
8182 let sR = sr_info.Qt. sr in
82- Qt.VDI. with_new ~virtual_size: vdi_size rpc session_id sR
83+ Qt.VDI. with_new ~virtual_size: vdi_size ~backing_format rpc session_id sR
8384 @@ fun vdi_original ->
84- Qt.VDI. with_new ~virtual_size: vdi_size rpc session_id sR @@ fun base_vdi ->
85+ Qt.VDI. with_new ~virtual_size: vdi_size ~backing_format rpc session_id sR
86+ @@ fun base_vdi ->
8587 prepare_vdi rpc session_id vdi_original ;
8688 let checksum_original = checksum rpc session_id vdi_original in
8789 prepare_vdi_base rpc session_id base_vdi ;
@@ -96,7 +98,7 @@ let check_vdi_delta rpc session_id ~vdi_size ~prepare_vdi ~prepare_vdi_base
9698 checksum_copy checksum_original
9799 )
98100
99- let copy_vdi rpc session_id sr vdi =
101+ let copy_vdi rpc session_id sr vdi _ =
100102 Client.Client.VDI. copy ~rpc ~session_id ~vdi ~base_vdi: API.Ref. null
101103 ~into_vdi: API.Ref. null ~sr
102104
@@ -117,14 +119,15 @@ let export_vdi_to_file ~rpc ~session_id ~exportformat ?base_vdi ~vdi () =
117119 |> ignore ;
118120 file
119121
120- let create_new_vdi ~rpc ~session_id ~sR ~vdi =
122+ let create_new_vdi ~rpc ~session_id ~sR ~vdi ~ backing_format =
121123 let virtual_size =
122124 Client.Client.VDI. get_virtual_size ~rpc ~session_id ~self: vdi
123125 in
126+ let sm_config = [(" image-format" , backing_format)] in
124127 let new_vdi =
125128 Client.Client.VDI. create ~rpc ~session_id ~name_label: " "
126129 ~name_description: " " ~s R ~virtual_size ~_type:`user ~sharable: false
127- ~read_only: false ~other_config: [] ~xenstore_data: [] ~sm_config: [] ~tags: []
130+ ~read_only: false ~other_config: [] ~xenstore_data: [] ~sm_config ~tags: []
128131 in
129132 let new_vdi_uuid =
130133 Client.Client.VDI. get_uuid ~rpc ~session_id ~self: new_vdi
@@ -141,11 +144,13 @@ let import_file_into_vdi ~file ~vdi_uuid ~exportformat =
141144 ]
142145 |> ignore
143146
144- let export_import_vdi rpc session_id ~exportformat sR vdi =
147+ let export_import_vdi rpc session_id ~exportformat sR vdi backing_format =
145148 let file = export_vdi_to_file ~rpc ~session_id ~exportformat ~vdi () in
146149 Xapi_stdext_pervasives.Pervasiveext. finally
147150 (fun () ->
148- let new_vdi_uuid, new_vdi = create_new_vdi ~rpc ~session_id ~s R ~vdi in
151+ let new_vdi_uuid, new_vdi =
152+ create_new_vdi ~rpc ~session_id ~s R ~vdi ~backing_format
153+ in
149154 import_file_into_vdi ~file ~vdi_uuid: new_vdi_uuid ~exportformat ;
150155 new_vdi
151156 )
@@ -177,79 +182,83 @@ let delta_export_import_vhd = export_delta_import_vdi ~exportformat:"vhd"
177182
178183let delta_export_import_qcow = export_delta_import_vdi ~exportformat: " qcow2"
179184
180- let data_integrity_tests vdi_op op_name =
185+ let data_integrity_tests vdi_op op_name backing_format =
181186 [
182187 ( op_name ^ " : small empty VDI"
183188 , `Slow
184- , check_vdi_unchanged ~vdi_size: Sizes. (4L ** mib) ~prepare_vdi: noop ~vdi_op
189+ , check_vdi_unchanged
190+ ~vdi_size: Sizes. (4L ** mib)
191+ ~prepare_vdi: noop ~vdi_op ~backing_format
185192 )
186193 ; ( op_name ^ " : small random VDI"
187194 , `Slow
188195 , check_vdi_unchanged
189196 ~vdi_size: Sizes. (4L ** mib)
190- ~prepare_vdi: write_random_data ~vdi_op
197+ ~prepare_vdi: write_random_data ~vdi_op ~backing_format
191198 )
192199 ; ( op_name ^ " : small full VDI"
193200 , `Slow
194- , check_vdi_unchanged ~vdi_size: Sizes. (4L ** mib) ~prepare_vdi: fill ~vdi_op
201+ , check_vdi_unchanged
202+ ~vdi_size: Sizes. (4L ** mib)
203+ ~prepare_vdi: fill ~vdi_op ~backing_format
195204 )
196205 ]
197206
198- let delta_data_integrity_tests vdi_op op_name =
207+ let delta_data_integrity_tests vdi_op op_name backing_format =
199208 [
200209 ( op_name ^ " : delta between empty & empty VDI"
201210 , `Slow
202- , check_vdi_delta
211+ , check_vdi_delta ~backing_format
203212 ~vdi_size: Sizes. (4L ** mib)
204213 ~prepare_vdi: noop ~prepare_vdi_base: noop ~vdi_op
205214 )
206215 ; ( op_name ^ " : delta between random & empty VDI"
207216 , `Slow
208- , check_vdi_delta
217+ , check_vdi_delta ~backing_format
209218 ~vdi_size: Sizes. (4L ** mib)
210219 ~prepare_vdi: write_random_data ~prepare_vdi_base: noop ~vdi_op
211220 )
212221 ; ( op_name ^ " : delta between random & random VDI"
213222 , `Slow
214- , check_vdi_delta
223+ , check_vdi_delta ~backing_format
215224 ~vdi_size: Sizes. (4L ** mib)
216225 ~prepare_vdi: write_random_data ~prepare_vdi_base: write_random_data
217226 ~vdi_op
218227 )
219228 ; ( op_name ^ " : delta between full and empty VDI"
220229 , `Slow
221- , check_vdi_delta
230+ , check_vdi_delta ~backing_format
222231 ~vdi_size: Sizes. (4L ** mib)
223232 ~prepare_vdi: fill ~prepare_vdi_base: noop ~vdi_op
224233 )
225234 ; ( op_name ^ " : delta between full and random VDI"
226235 , `Slow
227- , check_vdi_delta
236+ , check_vdi_delta ~backing_format
228237 ~vdi_size: Sizes. (4L ** mib)
229238 ~prepare_vdi: fill ~prepare_vdi_base: write_random_data ~vdi_op
230239 )
231240 ; ( op_name ^ " : delta between full and full VDI"
232241 , `Slow
233- , check_vdi_delta
242+ , check_vdi_delta ~backing_format
234243 ~vdi_size: Sizes. (4L ** mib)
235244 ~prepare_vdi: fill ~prepare_vdi_base: fill ~vdi_op
236245 )
237246 ]
238247
239- let large_data_integrity_tests vdi_op op_name =
248+ let large_data_integrity_tests vdi_op op_name backing_format =
240249 let b = Random. int64 16L in
241250 [
242251 ( op_name ^ " : ~2GiB empty VDI"
243252 , `Slow
244253 , check_vdi_unchanged
245254 ~vdi_size: Sizes. ((2L ** gib) +* b)
246- ~prepare_vdi: noop ~vdi_op
255+ ~prepare_vdi: noop ~vdi_op ~backing_format
247256 )
248257 ; ( op_name ^ " : ~2GiB random VDI"
249258 , `Slow
250259 , check_vdi_unchanged
251260 ~vdi_size: Sizes. ((2L ** gib) +* b)
252- ~prepare_vdi: write_random_data ~vdi_op
261+ ~prepare_vdi: write_random_data ~vdi_op ~backing_format
253262 )
254263 ]
255264
@@ -266,30 +275,33 @@ let supported_gfs2_srs test_case =
266275 test_case |> conn |> sr (sr_with_vdi_create_destroy |> SR. has_type " gfs2" )
267276
268277let tests () =
269- (data_integrity_tests copy_vdi " VDI.copy" |> supported_srs)
270- @ (large_data_integrity_tests copy_vdi " VDI.copy" |> supported_srs)
278+ (data_integrity_tests copy_vdi " VDI.copy" " vhd " |> supported_srs)
279+ @ (large_data_integrity_tests copy_vdi " VDI.copy" " vhd " |> supported_srs)
271280 @ (data_integrity_tests export_import_raw " VDI export/import to/from raw file"
281+ " vhd"
272282 |> supported_srs
273283 )
274284 @ (data_integrity_tests export_import_vhd " VDI export/import to/from VHD file"
285+ " vhd"
275286 |> supported_srs
276287 )
277288 @ (delta_data_integrity_tests delta_export_import_vhd
278- " VDI delta export/import to/from VHD file"
289+ " VDI delta export/import to/from VHD file" " vhd "
279290 |> supported_srs ~f: Qt_filter.SR. smapiv1
280291 )
281- @ (data_integrity_tests export_import_tar " VDI export/import to/from TAR file"
292+ @ (data_integrity_tests export_import_tar
293+ " VDI export/import to/from TAR file" " vhd"
282294 |> supported_srs
283295 )
284296 @ (data_integrity_tests export_import_qcow
285- " VDI export/import to/from QCOW file"
297+ " VDI export/import to/from QCOW file" " qcow2 "
286298 |> supported_srs
287299 )
288300 @ (delta_data_integrity_tests delta_export_import_qcow
289- " VDI delta export/import to/from QCOW file"
301+ " VDI delta export/import to/from QCOW file" " qcow2 "
290302 |> supported_srs
291303 )
292304 @ (large_data_integrity_tests export_import_tar
293- " VDI export/import to/from TAR file"
305+ " VDI export/import to/from TAR file" " vhd "
294306 |> supported_gfs2_srs
295307 )
0 commit comments