1. 05 3月, 2018 16 次提交
  2. 20 2月, 2018 1 次提交
    • D
      conf: add enum constants for default controller models · a302480d
      Daniel P. Berrangé 提交于
      The controller model is slightly unusual in that the default value is
      -1, not 0. As a result the default value is not covered by any of the
      existing enum cases. This in turn means that any switch() statements
      that think they have covered all cases, will in fact not match the
      default value at all. In the qemuDomainDeviceCalculatePCIConnectFlags()
      method this has caused a serious mistake where we fallthrough from the
      SCSI controller case, to the VirtioSerial controller case, and from
      the USB controller case to the IDE controller case.
      
      By adding explicit enum constant starting at -1, we can ensure switches
      remember to handle the default case.
      Reviewed-by: NJohn Ferlan <jferlan@redhat.com>
      Signed-off-by: NDaniel P. Berrangé <berrange@redhat.com>
      a302480d
  3. 03 2月, 2018 1 次提交
    • L
      vbox: fix SEGV during dumpxml of a serial port · 9c27e464
      Laine Stump 提交于
      commit 77a12987 changed the "virDomainChrSourceDef source" inside
      virDomainChrDef to "virDomainChrSourceDefPtr source", and started
      allocating source inside virDomainChrDefNew(), but vboxDumpSerial()
      was allocating a virDomainChrDef with a simple VIR_ALLOC() (i.e. never
      calling virDomainChrDefNew()), so source was never initialized,
      leading to a SEGV any time a serial port was present. The same problem
      was created in vboxDumpParallel().
      
      This patch changes vboxDumpSerial() and vboxDumpParallel() to use
      virDomainChrDefNew() instead of VIR_ALLOC(), and changes both of those
      functions to return an error if virDomainChrDef() (or any other
      allocation) fails.
      
      This resolves: https://bugzilla.redhat.com/1536649
      9c27e464
  4. 01 2月, 2018 1 次提交
    • J
      conf: Rework and rename virDomainDeviceFindControllerModel · 932862b8
      John Ferlan 提交于
      As it turns out virDomainDeviceFindControllerModel was only ever
      called for SCSI controllers using VIR_DOMAIN_CONTROLLER_TYPE_SCSI
      as a parameter.
      
      So rename to virDomainDeviceFindSCSIController and rather than
      return a model, let's return a virDomainControllerDefPtr to let
      the caller reference whatever it wants.
      932862b8
  5. 25 11月, 2017 1 次提交
  6. 08 11月, 2017 12 次提交
    • D
      vbox: Add SAS controller support · 8b5eefb6
      Dawid Zamirski 提交于
      In VirtualBox SAS and SCSI are separate controller types whereas libvirt
      does not make such distinction. This patch adds support for attaching
      the VBOX SAS controllers by mapping the 'lsisas1068' controller model in
      libvirt XML to VBOX SAS controller type. If VBOX VM has disks attached
      to both SCSI and SAS controller libvirt domain XML will have two
      <controller type='scsci'> elements with index and model attributes set
      accordingly. In this case, each respective <disk> element must have
      <address> element specified to assign it to respective SCSI controller.
      8b5eefb6
    • D
      vbox: Generate disk address element in dumpxml · e0054c0e
      Dawid Zamirski 提交于
      This patch adds <address> element to each <disk> device since device
      names alone won't adequately reflect the storage device layout in the
      VM. With this patch, the ouput produced by dumpxml will faithfully
      reproduce the storage layout of the VM if used with define.
      e0054c0e
    • D
      vbox: Process empty removable disks in dumpxml · 7c0a85e5
      Dawid Zamirski 提交于
      Previously any removable storage device without media attached was
      omitted from domain XML dump. They're still (rightfully) omitted in
      snapshot XML dump but need to be accounted properly to for the device
      names to stay in 'sync' between domain and snapshot XML dumps.
      7c0a85e5
    • D
      vbox: Cleanup vboxDumpDisks implementation · 08b995c8
      Dawid Zamirski 提交于
      Primer the code for further changes:
      
      * move variable declarations to the top of the function
      * group together free/release statements
      * error check and report VBOX API calls used
      08b995c8
    • D
      vbox: Correctly generate drive name in dumpxml · a4919338
      Dawid Zamirski 提交于
      If a VBOX VM has e.g. a SATA and SCSI disk attached, the XML generated
      by dumpxml used to produce "sda" for both of those disks. This is an
      invalid domain XML as libvirt does not allow duplicate device names. To
      address this, keep the running total of disks that will use "sd" prefix
      for device name and pass it to the vboxGenerateMediumName which no
      longer tries to "compute" the value based only on current and max
      port and slot values. After this the vboxGetMaxPortSlotValues is not
      needed and was deleted.
      a4919338
    • D
      vbox: Swap vboxSnapshotGetReadOnlyDisks arguments · 32a94411
      Dawid Zamirski 提交于
      So that the function signature matches vboxSnapshotGetReadWriteDisks
      32a94411
    • D
      vbox: Do not free disk definitions on cleanup · 03a24da4
      Dawid Zamirski 提交于
      Both vboxSnapshotGetReadWriteDisks and vboxSnapshotGetReadWriteDisks do
      not need to free the def->disks on cleanup because it's being done by
      the caller via virDomainSnaphotDefFree
      03a24da4
    • D
      vbox: Cleanup/prepare snasphot dumpxml functions · 60c519ee
      Dawid Zamirski 提交于
      This patch prepares the vboxSnapshotGetReadOnlyDisks and
      vboxSnapshotGetReadWriteDisks functions for further changes so that
      the code movement does not obstruct the gist of those future changes.
      This is done primarily because we'll need to know the type of vbox
      storage controller as early as possible and make decisions based on
      that info.
      60c519ee
    • D
      vbox: Rename vboxDumpIDEHDDs to vboxDumpDisks · c27f79a8
      Dawid Zamirski 提交于
      Because it deals with other disk types as well not just IDE. Also this
      function now returns -1 on error
      c27f79a8
    • D
      vbox: Add vboxDumpStorageControllers · 8339d273
      Dawid Zamirski 提交于
      8339d273
    • D
      vbox: Process <controller> element in domain XML · 1cad92c4
      Dawid Zamirski 提交于
      With this patch, the vbox driver will no longer attach all supported
      storage controllers by default even if no disk devices are associated
      with them. Instead, it will attach only those that are implicitly added
      by virDomainDefAddImplicitController based on <disk> element or if
      explicitly specified via the <controller> element.
      1cad92c4
    • D
      vbox: Cleanup partially-defined VM on failure · 8442d01a
      Dawid Zamirski 提交于
      Since the VBOX API requires to register an initial VM before proceeding
      to attach any remaining devices to it, any failure to attach such
      devices should result in automatic cleanup of the initially registered
      VM so that the state of VBOX registry remains clean without any leftover
      "aborted" VMs in it. Failure to cleanup of such partial VMs results in a
      warning log so that actual define error stays on the top of the error
      stack.
      8442d01a
  7. 04 11月, 2017 5 次提交
    • D
      vbox: Support empty removable drives. · 1bf7e977
      Dawid Zamirski 提交于
      Original code was checking for non empty disk source before proceeding
      to actually attach disk device to VM. This prevented from creating
      empty removable devices like DVD or floppy. Therefore, this patch
      re-organizes the loop work-flow to allow such configurations as well as
      makes the code follow better libvirt practices. Additionally, adjusted
      debug logs to be more helpful - removed old ones and added new which
      give more valuable info for troubleshooting.
      1bf7e977
    • D
      vbox: Errors in vboxAttachDrives are now critical · e3ecf4b8
      Dawid Zamirski 提交于
      Previously, if one tried to define a VBOX VM and the API failed to
      perform the requested actions for some reason, it would just log the
      error and move on to process remaining disk definitions. This is not
      desired as it could result in incorrectly defined VM without the caller
      even knowing about it. So now all the code paths that call
      virReportError are now treated as hard failures as they should have
      been.
      e3ecf4b8
    • D
      vbox: Remove unused mediumEmpty · 60227fd5
      Dawid Zamirski 提交于
      Remove the setting since it's unused as of commit 34364df3 which should
      have never copied it in from the old code which ended up getting removed
      as part of commit c7c286c6.
      60227fd5
    • D
      vbox: Cleanup vboxAttachDrives implementation · ff67685b
      Dawid Zamirski 提交于
      This commit primes vboxAttachDrives for further changes so when they
      are made, the diff is less noisy:
      
      * move variable declarations to the top of the function
      * add disk variable to replace all the def->disks[i] instances
      * add cleanup at the end of the loop body, so it's all in one place
        rather than scattered through the loop body. It's purposefully
        called 'cleanup' rather than 'skip' or 'continue' because future
        commit will treat errors as hard-failures.
      ff67685b
    • D
      vbox: vboxAttachDrives now relies on address info · c739a6bd
      Dawid Zamirski 提交于
      Previously, the driver was computing VBOX's devicePort/deviceSlot values
      based on device name and max port/slot values. While this worked, it
      completely ignored <address> values. Additionally, libvirt's built-in
      virDomainDiskDefAssignAddress already does a good job  setting default
      values on virDomainDeviceDriveAddress struct which we can use to set
      devicePort and deviceSlot and accomplish the same result while allowing
      the customizing those via XML. Also, this allows to remove some code
      which will make further patches smaller.
      c739a6bd
  8. 26 10月, 2017 1 次提交
    • D
      vbox: Read runtime RDP port and handle autoport · 55223c2b
      Dawid Zamirski 提交于
      VirutalBox has a IVRDEServerInfo structure available that
      gives the effective runtime port that the VM is using when it's
      running. This is useful when the "TCP/Ports" VBox property was set to
      port range (e.g. via autoport = "yes" or via VBoxManage) in which
      case it would be impossible to get the "active" port otherwise.
      55223c2b
  9. 21 7月, 2017 1 次提交
  10. 07 6月, 2017 1 次提交