1. 21 7月, 2016 2 次提交
  2. 20 7月, 2016 3 次提交
    • J
      qemu: Disallow usage of luks encryption if aes secret not possible · a53349e6
      John Ferlan 提交于
      Resolves a CI test integration failure with a RHEL6/Centos6 environment.
      
      In order to use a LUKS encrypted device, the design decision was to
      generate an encrypted secret based on the master key. However, commit
      id 'da86c6c2' missed checking for that specifically.
      
      When qemuDomainSecretSetup was implemented, a design decision was made
      to "fall back" to a plain text secret setup if the specific cipher was
      not available (e.g. virCryptoHaveCipher(VIR_CRYPTO_CIPHER_AES256CBC))
      as well as the QEMU_CAPS_OBJECT_SECRET. For the luks encryption setup
      there is no fall back to the plaintext secret, thus if that gets set
      up by qemuDomainSecretSetup, then we need to fail.
      
      Also, while the qemuxml2argvtest has set the QEMU_CAPS_OBJECT_SECRET
      bit, it didn't take into account the second requirement that the
      ability to generate the encrypted secret is possible. So modify the
      test to not attempt to run the luks-disk if we know we don't have
      the encryption algorithm.
      a53349e6
    • J
      qemu: Move setting of encobjAdded for qemuDomainAttachSCSIDisk · 4f5debbe
      John Ferlan 提交于
      A post push realization that the boolean should be set inside the condition
      4f5debbe
    • J
      qemu: Move setting of obj bools for qemuDomainAttachVirtioDiskDevice · c144f14c
      John Ferlan 提交于
      A post push realization that the setting of the boolean needed to be
      inside the if condition.
      c144f14c
  3. 19 7月, 2016 11 次提交
  4. 18 7月, 2016 5 次提交
  5. 13 7月, 2016 2 次提交
  6. 12 7月, 2016 4 次提交
  7. 11 7月, 2016 13 次提交
    • M
      qemuDomainObjPrivateFree: Free @masterKey too · 6b6e2cf9
      Michal Privoznik 提交于
      This one's a bit more complicated. In qemuProcessPrepareDomain()
      a master key for encrypting secret for ciphered disks is created.
      This object lives within qemuDomainObjPrivate object. It is freed
      in qemuProcessStop(), but if nobody calls it (for instance like
      our qemuxml2argvtest does), the key object leaks.
      
      ==17078== 32 bytes in 1 blocks are definitely lost in loss record 633 of 707
      ==17078==    at 0x4C2C070: calloc (vg_replace_malloc.c:623)
      ==17078==    by 0xAD924DF: virAllocN (viralloc.c:191)
      ==17078==    by 0x5050BA6: virCryptoGenerateRandom (qemuxml2argvmock.c:166)
      ==17078==    by 0x453DC8: qemuDomainMasterKeyCreate (qemu_domain.c:678)
      ==17078==    by 0x47A36B: qemuProcessPrepareDomain (qemu_process.c:4913)
      ==17078==    by 0x47C728: qemuProcessCreatePretendCmd (qemu_process.c:5542)
      ==17078==    by 0x433698: testCompareXMLToArgvFiles (qemuxml2argvtest.c:332)
      ==17078==    by 0x4339AC: testCompareXMLToArgvHelper (qemuxml2argvtest.c:413)
      ==17078==    by 0x446E7A: virTestRun (testutils.c:179)
      ==17078==    by 0x445BD9: mymain (qemuxml2argvtest.c:2022)
      ==17078==    by 0x44886F: virTestMain (testutils.c:969)
      ==17078==    by 0x445D9B: main (qemuxml2argvtest.c:2036)
      Signed-off-by: NMichal Privoznik <mprivozn@redhat.com>
      6b6e2cf9
    • M
      qemuBuildCpuCommandLine: Don't leak @buf · 87df9452
      Michal Privoznik 提交于
      Just like every other qemuBuild*CommandLine() function, this uses
      a buffer to hold partial cmd line strings too. However, if
      there's an error, the control jumps to 'cleanup' label leaving
      the buffer behind and thus leaking it.
      
      ==2013== 1,006 bytes in 1 blocks are definitely lost in loss record 701 of 711
      ==2013==    at 0x4C29F80: malloc (vg_replace_malloc.c:296)
      ==2013==    by 0x4C2C32F: realloc (vg_replace_malloc.c:692)
      ==2013==    by 0xAD925A8: virReallocN (viralloc.c:245)
      ==2013==    by 0xAD95EA8: virBufferGrow (virbuffer.c:130)
      ==2013==    by 0xAD95F78: virBufferAdd (virbuffer.c:165)
      ==2013==    by 0x5097F5: qemuBuildCpuModelArgStr (qemu_command.c:6339)
      ==2013==    by 0x509CC3: qemuBuildCpuCommandLine (qemu_command.c:6437)
      ==2013==    by 0x51142C: qemuBuildCommandLine (qemu_command.c:9174)
      ==2013==    by 0x47CA3A: qemuProcessCreatePretendCmd (qemu_process.c:5546)
      ==2013==    by 0x433698: testCompareXMLToArgvFiles (qemuxml2argvtest.c:332)
      ==2013==    by 0x4339AC: testCompareXMLToArgvHelper (qemuxml2argvtest.c:413)
      ==2013==    by 0x446E7A: virTestRun (testutils.c:179)
      Signed-off-by: NMichal Privoznik <mprivozn@redhat.com>
      87df9452
    • M
    • M
    • M
      qemu: Add qemuProcessSetupPid() and use it in qemuProcessSetupIOThread() · 71e419bb
      Martin Kletzander 提交于
      Setting up cgroups and other things for all kinds of threads (the
      emulator thread, vCPU threads, I/O threads) was copy-pasted every time
      new thing was added.  Over time each one of those functions changed a
      bit differently.  So create one function that does all that setup and
      start using it, starting with I/O thread setup.  That will shave some
      duplicated code and maybe fix some bugs as well.
      Signed-off-by: NMartin Kletzander <mkletzan@redhat.com>
      71e419bb
    • D
      Fix logic in qemuDomainObjPrivateXMLParseVcpu · ed1fbd7c
      Daniel P. Berrange 提交于
      The code in qemuDomainObjPrivateXMLParseVcpu for parsing
      the 'idstr' string was comparing the overall boolean
      result against 0 which was always true
      
      qemu/qemu_domain.c: In function 'qemuDomainObjPrivateXMLParseVcpu':
      qemu/qemu_domain.c:1482:59: error: comparison of constant '0' with boolean expression is always false [-Werror=bool-compare]
           if ((idstr && virStrToLong_uip(idstr, NULL, 10, &idx)) < 0 ||
                                                                 ^
      
      It was further performing two distinct error checks in
      the same conditional and reporting a single error message,
      which was misleading in one of the two cases.
      
      This splits the conditional check into two parts with
      distinct error messages and fixes the logic error.
      
      Fixes the bug in
      
        commit 5184f398
        Author: Peter Krempa <pkrempa@redhat.com>
        Date:   Fri Jul 1 14:56:14 2016 +0200
      
          qemu: Store vCPU thread ids in vcpu private data objects
      Signed-off-by: NDaniel P. Berrange <berrange@redhat.com>
      ed1fbd7c
    • A
      qemu: capabilities: Make virHostCPUGetKVMMaxVCPUs() errors fatal · 4074a82c
      Andrea Bolognani 提交于
      An error in virHostCPUGetKVMMaxVCPUs() means we've been unable
      to access /dev/kvm, or we're running on a platform that doesn't
      support KVM in the first place.
      
      If that's the case, we shouldn't ignore the error and report
      domcapabilities even though we know the user won't be able to
      start any KVM guest.
      4074a82c
    • P
      qemu: Store vCPU thread ids in vcpu private data objects · 5184f398
      Peter Krempa 提交于
      Rather than storing them in an external array store them directly.
      5184f398
    • P
      qemu: Add cpu ID to the vCPU pid list in the status XML · 3f57ce4a
      Peter Krempa 提交于
      Note the vcpu ID so that once we allow non-contiguous vCPU topologies it
      will be possible to pair thread id's with the vcpus.
      3f57ce4a
    • P
      qemu: domain: Extract formating and parsing of vCPU thread ids · b91335af
      Peter Krempa 提交于
      Further patches will be adding index and modifying the source variables
      so this will make it more clear.
      b91335af
    • P
      qemu: domain: Add vcpu private data structure · 2540c932
      Peter Krempa 提交于
      Members will be added in follow-up patches.
      2540c932
    • P
      conf: Add private data for virDomainVcpuDef · 5fe0b6b0
      Peter Krempa 提交于
      Allow to store driver specific data on a per-vcpu basis.
      
      Move of the virDomainDef*Vcpus* functions was necessary as
      virDomainXMLOptionPtr was declared below this block and I didn't want to
      split the function headers.
      5fe0b6b0
    • P
      conf: Don't report errors from virDomainDefGetVcpu · 9cc931f0
      Peter Krempa 提交于
      Most callers make sure that it's never called with an out of range vCPU.
      Every other caller reports a different error explicitly. Drop the error
      reporting and clean up some dead code paths.
      9cc931f0