1. 09 9月, 2016 6 次提交
    • J
      qemu: Add the ability to hotplug the TLS X.509 environment · 2c322378
      John Ferlan 提交于
      If the incoming XML defined a path to a TLS X.509 certificate environment,
      add the necessary 'tls-creds-x509' object to the VIR_DOMAIN_CHR_TYPE_TCP
      character device.
      
      Likewise, if the environment exists the hot unplug needs adjustment as
      well.  Note that all the return ret were changed to goto cleanup since
      the cfg needs to be unref'd
      Signed-off-by: NJohn Ferlan <jferlan@redhat.com>
      2c322378
    • J
      qemu: Add support for TLS X.509 path to TCP chardev backend · ce61c164
      John Ferlan 提交于
      When building a chardev device string for tcp, add the necessary pieces to
      access provide the TLS X.509 path to qemu.  This includes generating the
      'tls-creds-x509' object and then adding the 'tls-creds' parameter to the
      VIR_DOMAIN_CHR_TYPE_TCP command line.
      
      Finally add the tests for the qemu command line. This test will make use
      of the "new(ish)" /etc/pki/qemu setting for a TLS certificate environment
      by *not* "resetting" the chardevTLSx509certdir prior to running the test.
      Also use the default "verify" option (which is "no").
      Signed-off-by: NJohn Ferlan <jferlan@redhat.com>
      ce61c164
    • J
      conf: Introduce chartcp_tls_x509_cert_dir · 3f60a9c3
      John Ferlan 提交于
      Add a new TLS X.509 certificate type - "chardev". This will handle the
      creation of a TLS certificate capability (and possibly repository) for
      properly configured character device TCP backends.
      
      Unlike the vnc and spice there is no "listen" or "passwd" associated. The
      credentials eventually will be handled via a libvirt secret provided to
      a specific backend.
      
      Make use of the default verify option as well.
      Signed-off-by: NJohn Ferlan <jferlan@redhat.com>
      3f60a9c3
    • J
      conf: Add new default TLS X.509 certificate default directory · c12cb5ed
      John Ferlan 提交于
      Rather than specify perhaps multiple TLS X.509 certificate directories,
      let's create a "default" directory which can then be used if the service
      (e.g. for now vnc and spice) does not supply a default directory.
      
      Since the default for vnc and spice may have existed before without being
      supplied, the default check will first check if the service specific path
      exists and if so, set the cfg entry to that; otherwise, the default will
      be set to the (now) new defaultTLSx509certdir.
      
      Additionally add a "default_tls_x509_verify" entry which can also be used
      to force the peer verification option (for vnc it's a x509verify option).
      Add/alter the macro for the option being found in the config file to accept
      the default value.
      Signed-off-by: NJohn Ferlan <jferlan@redhat.com>
      c12cb5ed
    • J
      qemu: Remove stale transient def when migration fails · 66278d4b
      Jiri Denemark 提交于
      If a migration of a domain which is already defined on the destination
      host failed early (before we tried to start QEMU), we would forget to
      remove the incoming transient definition. Later on when someone starts
      the domain on the destination host, we will use the stale incoming
      definition and the persistent definition will just be ignored.
      
      https://bugzilla.redhat.com/show_bug.cgi?id=1368774Signed-off-by: NJiri Denemark <jdenemar@redhat.com>
      66278d4b
    • J
      Add helper for removing transient definition · 97a87333
      Jiri Denemark 提交于
      The code for replacing domain's transient definition with the persistent
      one is repeated in several places and we'll need to add one more. Let's
      make a nice helper for it.
      Signed-off-by: NJiri Denemark <jdenemar@redhat.com>
      97a87333
  2. 08 9月, 2016 2 次提交
    • J
      security: Fixing wrong label in virt-aa-helper.c. · fe94ee5d
      Julio Faracco 提交于
      There is an issue with a wrong label inside vah_add_path().
      The compilation fails with the error:
      make[3]: Entering directory '/tmp/libvirt/src'
        CC       security/virt_aa_helper-virt-aa-helper.o
      security/virt-aa-helper.c: In function 'vah_add_path':
      security/virt-aa-helper.c:769:9: error: label 'clean' used but not defined
               goto clean;
      
      This patch moves 'clean' label to 'cleanup' label.
      Signed-off-by: NJulio Faracco <jcfaracco@gmail.com>
      fe94ee5d
    • R
      Avoid segfault in virt-aa-helper when handling read-only filesystems · b3c1bcb9
      Rufo Dogav 提交于
      This patch fixes a segfault in virt-aa-helper caused by attempting to
      modify a static string literal. It is triggered when a domain has a
      <filesystem> with type='mount' configured read-only and libvirt is
      using the AppArmor security driver for sVirt confinement. An "R" is
      passed into the function and converted to 'r'.
      b3c1bcb9
  3. 07 9月, 2016 5 次提交
    • P
      qemu: driver: Remove unnecessary condition · b871b789
      Peter Krempa 提交于
      At this point it's guaranteed that 'persistentDef' is non-NULL so we
      don't need to check it again.
      b871b789
    • P
      qemu: process: Fix start with unpluggable vcpus with NUMA pinning · 68115fe0
      Peter Krempa 提交于
      Similarly to vcpu hotplug the emulator thread cgroup numa mapping needs
      to be relaxed while hot-adding vcpus so that the threads can allocate
      data in the DMA zone.
      
      Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1370084
      68115fe0
    • P
      qemu: cgroup: Extract temporary relaxing of cgroup setting for vcpu hotplug · eb5dee35
      Peter Krempa 提交于
      When hot-adding vcpus qemu needs to allocate some structures in the DMA
      zone which may be outside of the numa pinning. Extract the code doing
      this in a set of helpers so that it can be reused.
      eb5dee35
    • M
      util: fix crash in virClassIsDerivedFrom for CloseCallbacks objects · f47b9114
      Maxim Nestratov 提交于
      There is a possibility that qemu driver frees by unreferencing its
      closeCallbacks pointer as it has the only reference to the object,
      while in fact not all users of CloseCallbacks called thier
      virCloseCallbacksUnset.
      
      Backtrace is the following:
      Thread #1:
      0  in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0
      1  in virCondWait (c=<optimized out>, m=<optimized out>)
          at util/virthread.c:154
      2  in virThreadPoolFree (pool=0x7f0810110b50)
          at util/virthreadpool.c:266
      3  in qemuStateCleanup () at qemu/qemu_driver.c:1116
      4  in virStateCleanup () at libvirt.c:808
      5  in main (argc=<optimized out>, argv=<optimized out>)
          at libvirtd.c:1660
      
      Thread #2:
      0  in virClassIsDerivedFrom (klass=0xdeadbeef, parent=0x7f0837c694d0) at util/virobject.c:169
      1  in virObjectIsClass (anyobj=anyobj@entry=0x7f08101d4760, klass=<optimized out>) at util/virobject.c:365
      2  in virObjectLock (anyobj=0x7f08101d4760) at util/virobject.c:317
      3  in virCloseCallbacksUnset (closeCallbacks=0x7f08101d4760, vm=vm@entry=0x7f08101d47b0, cb=cb@entry=0x7f081d078fc0 <qemuProcessAutoDestroy>) at util/virclosecallbacks.c:163
      4  in qemuProcessAutoDestroyRemove (driver=driver@entry=0x7f081018be50, vm=vm@entry=0x7f08101d47b0) at qemu/qemu_process.c:6368
      5  in qemuProcessStop (driver=driver@entry=0x7f081018be50, vm=vm@entry=0x7f08101d47b0, reason=reason@entry=VIR_DOMAIN_SHUTOFF_SHUTDOWN, asyncJob=asyncJob@entry=QEMU_ASYNC_JOB_NONE, flags=flags@entry=0) at qemu/qemu_process.c:5854
      6  in processMonitorEOFEvent (vm=0x7f08101d47b0, driver=0x7f081018be50) at qemu/qemu_driver.c:4585
      7  qemuProcessEventHandler (data=<optimized out>, opaque=0x7f081018be50) at qemu/qemu_driver.c:4629
      8  in virThreadPoolWorker (opaque=opaque@entry=0x7f0837c4f820) at util/virthreadpool.c:145
      9  in virThreadHelper (data=<optimized out>) at util/virthread.c:206
      10 in start_thread () from /lib64/libpthread.so.0
      
      Let's reference CloseCallbacks object in virCloseCallbacksSet and
      unreference in virCloseCallbacksUnset.
      Signed-off-by: NMaxim Nestratov <mnestratov@virtuozzo.com>
      f47b9114
    • Y
      qemu: guest agent: introduce new error code VIR_ERR_AGENT_UNSYNCED · 914d5e1c
      Yuri Pudgorodskiy 提交于
      A separate error code will help recognize real failures from
      necessity to try again
      Signed-off-by: NMaxim Nestratov <mnestratov@virtuozzo.com>
      914d5e1c
  4. 06 9月, 2016 8 次提交
    • M
      Make sure sys/types.h is included after sys/sysmacros.h · f3f15cc2
      Michal Privoznik 提交于
      In the latest glibc, major() and minor() functions are marked as
      deprecated (glibc commit dbab6577):
      
        CC       util/libvirt_util_la-vircgroup.lo
      util/vircgroup.c: In function 'virCgroupGetBlockDevString':
      util/vircgroup.c:768:5: error: '__major_from_sys_types' is deprecated:
        In the GNU C Library, `major' is defined by <sys/sysmacros.h>.
        For historical compatibility, it is currently defined by
        <sys/types.h> as well, but we plan to remove this soon.
        To use `major', include <sys/sysmacros.h> directly.
        If you did not intend to use a system-defined macro `major',
        you should #undef it after including <sys/types.h>.
        [-Werror=deprecated-declarations]
           if (virAsprintf(&ret, "%d:%d ", major(sb.st_rdev), minor(sb.st_rdev)) < 0)
           ^~
      In file included from /usr/include/features.h:397:0,
                       from /usr/include/bits/libc-header-start.h:33,
                       from /usr/include/stdio.h:28,
                       from ../gnulib/lib/stdio.h:43,
                       from util/vircgroup.c:26:
      /usr/include/sys/sysmacros.h:87:1: note: declared here
       __SYSMACROS_DEFINE_MAJOR (__SYSMACROS_FST_IMPL_TEMPL)
       ^
      
      Moreover, in the glibc commit, there's suggestion to keep
      ordering of including of header files as implemented here.
      Signed-off-by: NMichal Privoznik <mprivozn@redhat.com>
      f3f15cc2
    • R
      util: hostcpu: improve CPU freq code for FreeBSD · f8435a43
      Roman Bogorodskiy 提交于
      Current implementation uses the dev.cpu.0.freq sysctl that is
      provided by the cpufreq(4) framework and returns the actual
      CPU frequency. However, there are environments where it's not available,
      e.g. when running nested in KVM. In this case fall back to hw.clockrate
      that reports CPU frequency at the boot time.
      
      Resolves (hopefully):
      https://bugzilla.redhat.com/show_bug.cgi?id=1369964
      f8435a43
    • A
      virtlogd.socket: Tie lifecycle to libvirtd.service · 839a0608
      Andrea Bolognani 提交于
      We already guarantee that virtlogd.socket is enabled/disabled
      along with libvirtd.service, but if libvirtd.service has just
      been installed and is started before rebooting, then
      virtlogd.socket will not be running and guest startup will
      fail.
      
      Add Requires=virtlogd.socket to libvirtd.service to make sure
      virtlogd.socket is always started along with libvirtd.service,
      and add Before=libvirtd.service to both virtlogd.socket and
      virtlogd.service so that virtlogd never disappears before
      libvirtd has exited.
      
      Also add PartOf=libvirtd.service to both virtlogd.socket and
      virtlogd.service, so that virtlogd can be shut down when not
      needed.
      
      Resolves: https://bugzilla.redhat.com/1372576
      839a0608
    • J
      qemu: Don't warn about missing device in DEVICE_DELETED event · 5ead7f93
      Jiri Denemark 提交于
      Debug priority is good enough for this.
      Signed-off-by: NJiri Denemark <jdenemar@redhat.com>
      5ead7f93
    • D
      qemu: allow turning off QEMU guest RAM dump globally · 90e178f8
      Daniel P. Berrange 提交于
      We already have the ability to turn off dumping of guest
      RAM via the domain XML. This is not particularly useful
      though, as it is under control of the management application.
      What is needed is a way for the sysadmin to turn off guest
      RAM defaults globally, regardless of whether the mgmt app
      provides its own way to set this in the domain XML.
      
      So this adds a 'dump_guest_core' option in /etc/libvirt/qemu.conf
      which defaults to false. ie guest RAM will never be included in
      the QEMU core dumps by default. This default is different from
      historical practice, but is considered to be more suitable as
      a default because
      
       a) guest RAM can be huge and so inflicts a DOS on the host
          I/O subsystem when dumping core for QEMU crashes
      
       b) guest RAM can contain alot of sensitive data belonging
          to the VM owner. This should not generally be copied
          around inside QEMU core dumps submitted to vendors for
          debugging
      
       c) guest RAM contents are rarely useful in diagnosing
          QEMU crashes
      Signed-off-by: NDaniel P. Berrange <berrange@redhat.com>
      90e178f8
    • D
      qemu: add a max_core setting to qemu.conf for core dump size · fa1ce979
      Daniel P. Berrange 提交于
      Currently the QEMU processes inherit their core dump rlimit
      from libvirtd, which is really suboptimal. This change allows
      their limit to be directly controlled from qemu.conf instead.
      fa1ce979
    • P
      util: storage: Add json pseudo protocol support for legacy RBD strings · 3de7da94
      Peter Krempa 提交于
      RBD in qemu still uses only the legacy 'filename' syntax.
      
      Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1371758
      3de7da94
    • P
      util: storage: Properly set protocol type when parsing gluster json string · b7a650c9
      Peter Krempa 提交于
      Commit 2ed772cd forgot to set proper protocol. This was also present in
      the test data.
      
      Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1372251
      b7a650c9
  5. 03 9月, 2016 10 次提交
  6. 02 9月, 2016 3 次提交
  7. 30 8月, 2016 1 次提交
    • J
      libxl: advertise support for migration V3 · 36f57ad7
      Jim Fehlig 提交于
      The libxl driver has long supported migration V3 but has never
      indicated so in the connectSupportsFeature API. As a result, apps
      such as virt-manager that use the more generic virDomainMigrate API
      fail with
      
      libvirtError: this function is not supported by the connection driver:
      virDomainMigrate
      
      Add VIR_DRV_FEATURE_MIGRATION_V3 to the list of features marked as
      supported in the connectSupportsFeature API.
      36f57ad7
  8. 29 8月, 2016 2 次提交
    • R
      tests: fix segfault in objecteventtest · 61148074
      Roman Bogorodskiy 提交于
      Test 12 from objecteventtest (createXML add event) segaults on FreeBSD
      with bus error.
      
      At some point it calls testNodeDeviceDestroy() from the test driver. And
      it fails when it tries to unlock the device in the "out:" label of this
      function.
      
      Unlocking fails because the previous step was a call to
      virNodeDeviceObjRemove from conf/node_device_conf.c. This function
      removes the given device from the device list and cleans up the object,
      including destroying of its mutex. However, it does not nullify the pointer
      that was given to it.
      
      As a result, we end up in testNodeDeviceDestroy() here:
      
       out:
          if (obj)
              virNodeDeviceObjUnlock(obj);
      
      And instead of skipping this, we try to do Unlock and fail because of
      malformed mutex.
      
      Change virNodeDeviceObjRemove to use double pointer and set pointer to
      NULL.
      61148074
    • R
      bhyve: fix disks address allocation · 25ee22bd
      Roman Bogorodskiy 提交于
      As bhyve currently doesn't use controller addressing and simply
      uses 1 implicit controller for 1 disk device, the scheme looks the
      following:
      
       pci addrees -> (implicit controller) -> disk device
      
      So in fact we identify disk devices by pci address of implicit
      controller and just pass it this way to bhyve in a form:
      
       -s pci_addr,ahci-(cd|hd),/path/to/disk
      
      Therefore, we cannot use virDeviceInfoPCIAddressWanted() because it
      does not expect that disk devices might need PCI address assignment.
      
      As a result, if a disk was specified without address, it will not be
      generated and domain will to start.
      
      Until proper controller addressing is implemented in the bhyve
      driver, force each disk to have PCI address generated if it was not
      specified by user.
      25ee22bd
  9. 26 8月, 2016 3 次提交