On Wednesday 01 July 2015 18:54:49 Richard W.M. Jones wrote:
The target VM will have several buses to which disks can be
attached.
Commonly it will have an IDE bus, and possibly a virtio-blk "bus" (not
really a bus) and/or a SCSI bus.
Virt-v2v does not model this at the moment. Disks are just added to
the output XML in the order that we write them, and so they can move
around with respect to the target VM.
This commit introduces the idea that we should model the target disk
buses, and we should try to assign fixed and removable disks to slots
on each of those buses. In this commit, the modelling is not used by
any output mode, but that will be fixed in the next commit.
---
[...]
+ (* Now try to add the removable disks to the bus at the same slot
+ * they originally occupied, but if the slot is occupied, emit a
+ * a warning and insert the disk in the next empty slot in that bus.
+ *)
+ List.iter (
+ fun r ->
+ let bus = match r.s_removable_controller with
+ | None -> ide_bus (* Wild guess, but should be safe. *)
+ | Some Source_virtio_blk -> virtio_blk_bus
+ | Some Source_IDE -> ide_bus
+ | Some Source_SCSI -> scsi_bus in
+ match r.s_removable_slot with
+ | None -> ignore (insert_after bus 0 (BusSlotRemovable r))
+ | Some desired_slot_nr ->
+ if not (insert_after bus desired_slot_nr (BusSlotRemovable r)) then
+ warning (f_"removable %s device in slot %d clashes with another disk, so
it has been moved to a higher numbered slot on the same bus. This may mean that this
removable device has a different name inside the guest (for example a CD-ROM originally
called /dev/hdc might move to /dev/hdd, or from D: to E: on a Windows guest).")
+ (match r.s_removable_type with
+ | CDROM -> s_"CD-ROM"
+ | Floppy -> s_"floppy disk")
+ desired_slot_nr
Imagine that first we get a source with no specified slot, so we insert
it at 0, and then we get a source which specifies the slot zero which
is then taken.
Maybe this iteration should be split into two separate, first adding all
the sources which specify a slot, and then all the ones which have no
specific slot. This way there is more probability to assign the slots
matching how they were originally, I think.
--
Pino Toscano