1. 05 10月, 2017 14 次提交
  2. 04 10月, 2017 3 次提交
  3. 28 9月, 2017 3 次提交
    • A
      qemu: Add TLS support for Veritas HyperScale (VxHS) · 6885b51e
      Ashish Mittal 提交于
      Alter qemu command line generation in order to possibly add TLS for
      a suitably configured domain.
      
      Sample TLS args generated by libvirt -
      
          -object tls-creds-x509,id=objvirtio-disk0_tls0,dir=/etc/pki/qemu,\
          endpoint=client,verify-peer=yes \
          -drive file.driver=vxhs,file.tls-creds=objvirtio-disk0_tls0,\
          file.vdisk-id=eb90327c-8302-4725-9e1b-4e85ed4dc251,\
          file.server.type=tcp,file.server.host=192.168.0.1,\
          file.server.port=9999,format=raw,if=none,\
          id=drive-virtio-disk0,cache=none \
          -device virtio-blk-pci,bus=pci.0,addr=0x4,drive=drive-virtio-disk0,\
          id=virtio-disk0
      
      Update the qemuxml2argvtest with a couple of examples. One for a
      simple case and the other a bit more complex where multiple VxHS disks
      are added where at least one uses a VxHS that doesn't require TLS
      credentials and thus sets the domain disk source attribute "tls = 'no'".
      
      Update the hotplug to be able to handle processing the tlsAlias whether
      it's to add the TLS object when hotplugging a disk or to remove the TLS
      object when hot unplugging a disk.  The hot plug/unplug code is largely
      generic, but the addition code does make the VXHS specific checks only
      because it needs to grab the correct config directory and generate the
      object as the command line would do.
      Signed-off-by: NAshish Mittal <Ashish.Mittal@veritas.com>
      Signed-off-by: NJohn Ferlan <jferlan@redhat.com>
      6885b51e
    • J
      qemu: Introduce qemuDomainPrepareDiskSource · 5c09486c
      John Ferlan 提交于
      Introduce a function to setup any TLS needs for a disk source.
      
      If there's a configuration or other error setting up the disk source
      for TLS, then cause the domain startup to fail.
      
      For VxHS, follow the chardevTLS model where if the src->haveTLS hasn't
      been configured, then take the system/global cfg->haveTLS setting for
      the storage source *and* mark that we've done so via the tlsFromConfig
      setting in storage source.
      
      Next, if we are using TLS, then generate an alias into a virStorageSource
      'tlsAlias' field that will be used to create the TLS object and added to
      the disk object in order to link the two together for QEMU.
      Signed-off-by: NJohn Ferlan <jferlan@redhat.com>
      5c09486c
    • A
      conf: Introduce TLS options for VxHS block device clients · bd6fdcd8
      Ashish Mittal 提交于
      Add a new TLS X.509 certificate type - "vxhs". This will handle the
      creation of a TLS certificate capability for properly configured
      VxHS network block device clients.
      
      The following describes the behavior of TLS for VxHS block device:
      
        (1) Two new options have been added in /etc/libvirt/qemu.conf
            to control TLS behavior with VxHS block devices
            "vxhs_tls" and "vxhs_tls_x509_cert_dir".
        (2) Setting "vxhs_tls=1" in /etc/libvirt/qemu.conf will enable
            TLS for VxHS block devices.
        (3) "vxhs_tls_x509_cert_dir" can be set to the full path where the
            TLS CA certificate and the client certificate and keys are saved.
            If this value is missing, the "default_tls_x509_cert_dir" will be
            used instead. If the environment is not configured properly the
            authentication to the VxHS server will fail.
      Signed-off-by: NAshish Mittal <Ashish.Mittal@veritas.com>
      Signed-off-by: NJohn Ferlan <jferlan@redhat.com>
      bd6fdcd8
  4. 27 9月, 2017 4 次提交
  5. 26 9月, 2017 2 次提交
  6. 25 9月, 2017 3 次提交
  7. 22 9月, 2017 5 次提交
  8. 21 9月, 2017 6 次提交
    • M
      qemu: Introduce a wrapper over virFileWrapperFdClose · 92524d3e
      Michal Privoznik 提交于
      https://bugzilla.redhat.com/show_bug.cgi?id=1448268
      
      When migrating to a file (e.g. when doing 'virsh save file'),
      couple of things are happening in the thread that is executing
      the API:
      
      1) the domain obj is locked
      2) iohelper is spawned as a separate process to handle all I/O
      3) the thread waits for iohelper to finish
      4) the domain obj is unlocked
      
      Now, the problem is that while the thread waits in step 3 for
      iohelper to finish this may take ages because iohelper calls
      fdatasync(). And unfortunately, we are waiting the whole time
      with the domain locked. So if another thread wants to jump in and
      say copy the domain name ('virsh list' for instance), they are
      stuck.
      
      The solution is to unlock the domain whenever waiting for I/O and
      lock it back again when it finished.
      Signed-off-by: NMichal Privoznik <mprivozn@redhat.com>
      Reviewed-by: NJohn Ferlan <jferlan@redhat.com>
      92524d3e
    • J
      qemu: Be more selective when determining cdrom for taint messaging · ed2a741e
      John Ferlan 提交于
      https://bugzilla.redhat.com/show_bug.cgi?id=1471225
      
      Commit id '99a2d6af' was a bit too aggressive with determining whether
      the provided path was a "physical" cd-rom in order to generate a taint
      message due to the possibility of some guest and host trying to control
      the tray. For cd-rom guest devices backed to some VIR_STORAGE_TYPE_FILE
      storage, this wouldn't be a problem and as such it shouldn't be a problem
      for guest devices using some sort of block device on the host such as
      iSCSI, LVM, or a Disk pool would present.
      
      So before issuing a taint message, let's check if the provided path of
      the VIR_STORAGE_TYPE_BLOCK backed device is a "known" physical cdrom name
      by comparing the beginning of the path w/ "/dev/cdrom" and "/dev/sr".
      Also since it's possible the provided path could resolve to some /dev/srN
      device, let's get that path as well and perform the same check.
      Signed-off-by: NJohn Ferlan <jferlan@redhat.com>
      ed2a741e
    • M
      qemuBuildHostNetStr: Don't leak @addr · 57d8afcf
      Michal Privoznik 提交于
      The virSocketAddrFormat() allocates the string and it's caller
      responsibility to free it afterwards.
      
      ==28857== 11 bytes in 1 blocks are definitely lost in loss record 37 of 168
      ==28857==    at 0x4C2BEDF: malloc (vg_replace_malloc.c:299)
      ==28857==    by 0x9A81D79: strdup (in /lib64/libc-2.23.so)
      ==28857==    by 0x5DA3BF0: virStrdup (virstring.c:902)
      ==28857==    by 0x5D96182: virSocketAddrFormatFull (virsocketaddr.c:427)
      ==28857==    by 0x5D95E13: virSocketAddrFormat (virsocketaddr.c:352)
      ==28857==    by 0x5706890: qemuBuildHostNetStr (qemu_command.c:3891)
      ==28857==    by 0x57138D3: qemuBuildInterfaceCommandLine (qemu_command.c:8597)
      ==28857==    by 0x5713D6A: qemuBuildNetCommandLine (qemu_command.c:8699)
      ==28857==    by 0x57176F6: qemuBuildCommandLine (qemu_command.c:10027)
      ==28857==    by 0x5769D61: qemuProcessCreatePretendCmd (qemu_process.c:6004)
      ==28857==    by 0x4056EC: testCompareXMLToArgv (qemuxml2argvtest.c:502)
      ==28857==    by 0x41DF40: virTestRun (testutils.c:180)
      Signed-off-by: NMichal Privoznik <mprivozn@redhat.com>
      Reviewed-by: NJohn Ferlan <jferlan@redhat.com>
      57d8afcf
    • J
      qemu: Don't update CPU when formatting live def · 06f75ff2
      Jiri Denemark 提交于
      Since commit v2.2.0-199-g7ce711a3 libvirt stores an updated guest CPU
      in domain's live definition and there's no need to update it every time
      we want to format the definition. The commit itself tried to address
      this in qemuDomainFormatXML, but forgot to fix qemuDomainDefFormatLive.
      Not to mention that masking a previously set flag is only acceptable if
      the flag was set by a public API user. Internally, libvirt should have
      never set the flag in the first place.
      
      https://bugzilla.redhat.com/show_bug.cgi?id=1485022Signed-off-by: NJiri Denemark <jdenemar@redhat.com>
      06f75ff2
    • J
      qemu: Use correct host model for updating guest cpu · 7e874326
      Jiri Denemark 提交于
      When a user requested a domain XML description with
      VIR_DOMAIN_XML_UPDATE_CPU flag, libvirt would use the host CPU
      definition from host capabilities rather than the one which will
      actually be used once the domain is started.
      
      https://bugzilla.redhat.com/show_bug.cgi?id=1481309Signed-off-by: NJiri Denemark <jdenemar@redhat.com>
      7e874326
    • J
      cpu_conf: Drop updateCPU from virCPUDefFormat · 4fd179f5
      Jiri Denemark 提交于
      In the past we updated host-model CPUs with host CPU data by adding a
      model and features, but keeping the host-model mode. And since the CPU
      model is not normally formatted for host-model CPU defs, we had to pass
      the updateCPU flag to the formatting code to be able to properly output
      updated host-model CPUs. Libvirt doesn't do this anymore, host-model
      CPUs are turned into custom mode CPUs once updated with host CPU data
      and thus there's no reason for keeping the hacks inside CPU XML
      formatters.
      Signed-off-by: NJiri Denemark <jdenemar@redhat.com>
      4fd179f5