1. 04 4月, 2017 4 次提交
  2. 27 3月, 2017 1 次提交
    • E
      conf: Introduce new hostdev device type mdev · ec783d7c
      Erik Skultety 提交于
      A mediated device will be identified by a UUID (with 'model' now being
      a mandatory <hostdev> attribute to represent the mediated device API) of
      the user pre-created mediated device. We also need to make sure that if
      user explicitly provides a guest address for a mdev device, the address
      type will be matching the device API supported on that specific mediated
      device and error out with an incorrect XML message.
      
      The resulting device XML:
      <devices>
        <hostdev mode='subsystem' type='mdev' model='vfio-pci'>
          <source>
            <address uuid='c2177883-f1bb-47f0-914d-32a22e3a8804'>
          </source>
        </hostdev>
      </devices>
      Signed-off-by: NErik Skultety <eskultet@redhat.com>
      ec783d7c
  3. 25 3月, 2017 1 次提交
  4. 16 3月, 2017 1 次提交
  5. 15 3月, 2017 4 次提交
  6. 10 3月, 2017 2 次提交
  7. 09 3月, 2017 6 次提交
  8. 06 3月, 2017 1 次提交
    • M
      qemu: Enforce qemuSecurity wrappers · 4da534c0
      Michal Privoznik 提交于
      Now that we have some qemuSecurity wrappers over
      virSecurityManager APIs, lets make sure everybody sticks with
      them. We have them for a reason and calling virSecurityManager
      API directly instead of wrapper may lead into accidentally
      labelling a file on the host instead of namespace.
      Signed-off-by: NMichal Privoznik <mprivozn@redhat.com>
      4da534c0
  9. 01 3月, 2017 1 次提交
  10. 22 2月, 2017 1 次提交
  11. 21 2月, 2017 1 次提交
  12. 08 2月, 2017 4 次提交
    • M
      qemuDomainNamespace{Setup,Teardown}Disk: Don't pass pointer to full disk · 18ce9d13
      Michal Privoznik 提交于
      These functions do not need to see the whole virDomainDiskDef.
      Moreover, they are going to be called from places where we don't
      have access to the full disk definition. Sticking with
      virStorageSource is more than enough.
      Signed-off-by: NMichal Privoznik <mprivozn@redhat.com>
      18ce9d13
    • M
      qemuDomainAttachSCSIVHostDevice: manage /dev entry · 45599e40
      Michal Privoznik 提交于
      Again, one missed bit. This time without this commit there is no
      /dev entry in the namespace of the qemu process when attaching
      vhost SCSI device.
      Signed-off-by: NMichal Privoznik <mprivozn@redhat.com>
      45599e40
    • M
      qemuDomainAttachSCSIVHostDevice: Prefer qemuSecurity wrappers · 7d93a885
      Michal Privoznik 提交于
      Since we have qemuSecurity wrappers over
      virSecurityManagerSetHostdevLabel and
      virSecurityManagerRestoreHostdevLabel we ought to use them
      instead of calling secdriver APIs directly.  Without those
      wrappers the labelling won't be done in the correct namespace
      and thus won't apply to the nodes seen by qemu itself.
      Signed-off-by: NMichal Privoznik <mprivozn@redhat.com>
      7d93a885
    • L
      qemu: propagate bridge MTU into qemu "host_mtu" option · 2841e675
      Laine Stump 提交于
      libvirt was able to set the host_mtu option when an MTU was explicitly
      given in the interface config (with <mtu size='n'/>), set the MTU of a
      libvirt network in the network config (with the same named
      subelement), and would automatically set the MTU of any tap device to
      the MTU of the network.
      
      This patch ties that all together (for networks based on tap devices
      and either Linux host bridges or OVS bridges) by learning the MTU of
      the network (i.e. the bridge) during qemuInterfaceBridgeConnect(), and
      returning that value so that it can then be passed to
      qemuBuildNicDevStr(); qemuBuildNicDevStr() then sets host_mtu in the
      interface's commandline options.
      
      The result is that a higher MTU for all guests connecting to a
      particular network will be plumbed top to bottom by simply changing
      the MTU of the network (in libvirt's config for libvirt-managed
      networks, or directly on the bridge device for simple host bridges or
      OVS bridges managed outside of libvirt).
      
      One question I have about this - it occurred to me that in the case of
      migrating a guest from a host with an older libvirt to one with a
      newer libvirt, the guest may have *not* had the host_mtu option on the
      older machine, but *will* have it on the newer machine. I'm curious if
      this could lead to incompatibilities between source and destination (I
      guess it all depends on whether or not the setting of host_mtu has a
      practical effect on a guest that is already running - Maxime?)
      
      Likewise, we could run into problems when migrating from a newer
      libvirt to older libvirt - The guest would have been told of the
      higher MTU on the newer libvirt, then migrated to a host that didn't
      understand <mtu size='blah'/>. (If this really is a problem, it would
      be a problem with or without the current patch).
      2841e675
  13. 07 2月, 2017 1 次提交
    • M
      qemuDomainPrepareDisk: Fix ordering · 0a465238
      Michal Privoznik 提交于
      The current ordering is as follows:
      1) set label
      2) create the device in namespace
      3) allow device in the cgroup
      
      While this might work for now, it will definitely not work if the
      security driver would use transactions as in that case there
      would be no device to relabel in the domain namespace as the
      device is created in the second step.
      Swap steps 1) and 2) to allow security driver to use more
      transactions.
      Signed-off-by: NMichal Privoznik <mprivozn@redhat.com>
      0a465238
  14. 30 1月, 2017 1 次提交
  15. 20 1月, 2017 1 次提交
  16. 18 1月, 2017 1 次提交
  17. 04 1月, 2017 1 次提交
    • J
      qemu: Don't assume secret provided for LUKS encryption · 7f7d9904
      John Ferlan 提交于
      https://bugzilla.redhat.com/show_bug.cgi?id=1405269
      
      If a secret was not provided for what was determined to be a LUKS
      encrypted disk (during virStorageFileGetMetadata processing when
      called from qemuDomainDetermineDiskChain as a result of hotplug
      attach qemuDomainAttachDeviceDiskLive), then do not attempt to
      look it up (avoiding a libvirtd crash) and do not alter the format
      to "luks" when adding the disk; otherwise, the device_add would
      fail with a message such as:
      
         "unable to execute QEMU command 'device_add': Property 'scsi-hd.drive'
          can't find value 'drive-scsi0-0-0-0'"
      
      because of assumptions that when the format=luks that libvirt would have
      provided the secret to decrypt the volume.
      
      Access to unlock the volume will thus be left to the application.
      7f7d9904
  18. 15 12月, 2016 4 次提交
  19. 01 12月, 2016 3 次提交
    • G
      qemuDomainAttachNetDevice: pass mq and vectors for vhost-user with multiqueue · f81b33b5
      gaohaifeng 提交于
      Two reasons:
      1.in none hotplug, we will pass it. We can see from libvirt function
      qemuBuildVhostuserCommandLine
      2.qemu will use this vetcor num to init msix table. If we don't pass, qemu
      will use default value, this will cause VM can only use default value
      interrupts at most.
      Signed-off-by: Ngaohaifeng <gaohaifeng.gao@huawei.com>
      f81b33b5
    • E
      qemu: Prevent detaching SCSI controller used by hostdev · 655429a0
      Eric Farman 提交于
      Consider the following XML snippets:
      
        $ cat scsicontroller.xml
            <controller type='scsi' model='virtio-scsi' index='0'/>
        $ cat scsihostdev.xml
            <hostdev mode='subsystem' type='scsi'>
              <source>
                <adapter name='scsi_host0'/>
                <address bus='0' target='8' unit='1074151456'/>
              </source>
            </hostdev>
      
      If we create a guest that includes the contents of scsihostdev.xml,
      but forget the virtio-scsi controller described in scsicontroller.xml,
      one is silently created for us.  The same holds true when attaching
      a hostdev before the matching virtio-scsi controller.
      (See qemuDomainFindOrCreateSCSIDiskController for context.)
      
      Detaching the hostdev, followed by the controller, works well and the
      guest behaves appropriately.
      
      If we detach the virtio-scsi controller device first, any associated
      hostdevs are detached for us by the underlying virtio-scsi code (this
      is fine, since the connection is broken).  But all is not well, as the
      guest is unable to receive new virtio-scsi devices (the attach commands
      succeed, but devices never appear within the guest), nor even be
      shutdown, after this point.
      
      While this is not libvirt's problem, we can prevent falling into this
      scenario by checking if a controller is being used by any hostdev
      devices.  The same is already done for disk elements today.
      
      Applying this patch and then using the XML snippets from earlier:
      
        $ virsh detach-device guest_01 scsicontroller.xml
        error: Failed to detach device from scsicontroller.xml
        error: operation failed: device cannot be detached: device is busy
      
        $ virsh detach-device guest_01 scsihostdev.xml
        Device detached successfully
      
        $ virsh detach-device guest_01 scsicontroller.xml
        Device detached successfully
      Signed-off-by: NEric Farman <farman@linux.vnet.ibm.com>
      Reviewed-by: NBjoern Walk <bwalk@linux.vnet.ibm.com>
      Reviewed-by: NBoris Fiuczynski <fiuczy@linux.vnet.ibm.com>
      655429a0
    • L
      qemu: propagate virQEMUDriver object to qemuDomainDeviceCalculatePCIConnectFlags · 9b0848d5
      Laine Stump 提交于
      If libvirtd is running unprivileged, it can open a device's PCI config
      data in sysfs, but can only read the first 64 bytes. But as part of
      determining whether a device is Express or legacy PCI,
      qemuDomainDeviceCalculatePCIConnectFlags() will be updated in a future
      patch to call virPCIDeviceIsPCIExpress(), which tries to read beyond
      the first 64 bytes of the PCI config data and fails with an error log
      if the read is unsuccessful.
      
      In order to avoid creating a parallel "quiet" version of
      virPCIDeviceIsPCIExpress(), this patch passes a virQEMUDriverPtr down
      through all the call chains that initialize the
      qemuDomainFillDevicePCIConnectFlagsIterData, and saves the driver
      pointer with the rest of the iterdata so that it can be used by
      qemuDomainDeviceCalculatePCIConnectFlags(). This pointer isn't used
      yet, but will be used in an upcoming patch (that detects Express vs
      legacy PCI for VFIO assigned devices) to examine driver->privileged.
      9b0848d5
  20. 25 11月, 2016 1 次提交
    • E
      qemu: Allow hotplug of vhost-scsi device · 8c6d3653
      Eric Farman 提交于
      Adjust the device string that is built for vhost-scsi devices so that it
      can be invoked from hotplug.
      
      From the QEMU command line, the file descriptors are expect to be numeric only.
      However, for hotplug, the file descriptors are expected to begin with at least
      one alphabetic character else this error occurs:
      
        # virsh attach-device guest_0001 ~/vhost.xml
        error: Failed to attach device from /root/vhost.xml
        error: internal error: unable to execute QEMU command 'getfd':
        Parameter 'fdname' expects a name not starting with a digit
      
      We also close the file descriptor in this case, so that shutting down the
      guest cleans up the host cgroup entries and allows future guests to use
      vhost-scsi devices.  (Otherwise the guest will silently end.)
      Signed-off-by: NEric Farman <farman@linux.vnet.ibm.com>
      8c6d3653