@@ -16,7 +16,7 @@ use propolis_client::{
1616use uuid:: Uuid ;
1717
1818use crate :: {
19- disk:: { DiskConfig , DiskSource } ,
19+ disk:: { DeviceName , DiskConfig , DiskSource } ,
2020 test_vm:: spec:: VmSpec ,
2121 Framework ,
2222} ;
@@ -268,30 +268,27 @@ impl<'dr> VmConfig<'dr> {
268268 let all_disks = self . disks . iter ( ) . zip ( disk_handles. iter ( ) ) ;
269269 for ( req, hdl) in all_disks {
270270 let pci_path = PciPath :: new ( 0 , req. pci_device_num , 0 ) . unwrap ( ) ;
271- let ( device_name, backend_spec) = hdl. backend_spec ( ) ;
272- // propolis-server uses a disk's name from the API as its device
273- // name. It then derives a backend name from the disk name. Match
274- // that name derivation here so PHD tests match the API as used by
275- // Nexus.
276- let backend_name = format ! ( "{}-backend" , device_name) ;
271+ let backend_spec = hdl. backend_spec ( ) ;
272+ let device_name = hdl. device_name ( ) . clone ( ) ;
273+ let backend_name = device_name. clone ( ) . into_backend_name ( ) ;
277274 let device_spec = match req. interface {
278275 DiskInterface :: Virtio => {
279276 StorageDeviceV0 :: VirtioDisk ( VirtioDisk {
280- backend_name : backend_name. clone ( ) ,
277+ backend_name : backend_name. clone ( ) . into_string ( ) ,
281278 pci_path,
282279 } )
283280 }
284281 DiskInterface :: Nvme => StorageDeviceV0 :: NvmeDisk ( NvmeDisk {
285- backend_name : backend_name. clone ( ) ,
282+ backend_name : backend_name. clone ( ) . into_string ( ) ,
286283 pci_path,
287284 } ) ,
288285 } ;
289286
290287 spec_builder
291288 . add_storage_device (
292- device_name,
289+ device_name. into_string ( ) ,
293290 device_spec,
294- backend_name,
291+ backend_name. into_string ( ) ,
295292 backend_spec,
296293 )
297294 . context ( "adding storage device to spec" ) ?;
@@ -334,22 +331,24 @@ impl<'dr> VmConfig<'dr> {
334331}
335332
336333async fn make_disk < ' req > (
337- name : String ,
334+ device_name : String ,
338335 framework : & Framework ,
339336 req : & DiskRequest < ' req > ,
340337) -> anyhow:: Result < Arc < dyn DiskConfig > > {
338+ let device_name = DeviceName :: new ( device_name) ;
339+
341340 Ok ( match req. backend {
342341 DiskBackend :: File => framework
343342 . disk_factory
344- . create_file_backed_disk ( name , & req. source )
343+ . create_file_backed_disk ( device_name , & req. source )
345344 . await
346345 . with_context ( || {
347346 format ! ( "creating new file-backed disk from {:?}" , req. source, )
348347 } ) ? as Arc < dyn DiskConfig > ,
349348 DiskBackend :: Crucible { min_disk_size_gib, block_size } => framework
350349 . disk_factory
351350 . create_crucible_disk (
352- name ,
351+ device_name ,
353352 & req. source ,
354353 min_disk_size_gib,
355354 block_size,
@@ -364,7 +363,7 @@ async fn make_disk<'req>(
364363 as Arc < dyn DiskConfig > ,
365364 DiskBackend :: InMemory { readonly } => framework
366365 . disk_factory
367- . create_in_memory_disk ( name , & req. source , readonly)
366+ . create_in_memory_disk ( device_name , & req. source , readonly)
368367 . await
369368 . with_context ( || {
370369 format ! ( "creating new in-memory disk from {:?}" , req. source)
0 commit comments