1. 05 3月, 2013 3 次提交
  2. 04 3月, 2013 4 次提交
    • G
      util: use string libvirt to prefix error message instead of libvir · b95c13cd
      Guannan Ren 提交于
      BZ:https://bugzilla.redhat.com/show_bug.cgi?id=912021
      Without error handler set, virDefaultErrorFunc will be called, the
      error message is prefixed with "libvir:". It become a little better
      by using prefix "libvirt:" when working with upper application.
      
      For example:
      1, stop libvirtd daemon
      2, run virt-top.
      libvir: XML-RPC error : Failed to connect \
              socket to '/var/run/libvirt/libvirt-sock-ro': \
              No such file or directory
      libvirt: VIR_ERR_SYSTEM_ERROR: VIR_FROM_RPC: \
              Failed to connect socket to '/var/run/libvirt/libvirt-sock-ro': \
              No such file or directory
      b95c13cd
    • F
      libvirt does not logout of iscsi targets, causing system hang on shutdown · 443ec5c8
      Fritz Elfert 提交于
      There's a quite old bug entry here:
      
      https://bugzilla.redhat.com/show_bug.cgi?id=700010
      
      I just stumbled over that very issue on F18. Doing a little bit
      debugging of the shutdown sequence, it turns out that - at least on my
      F18 installation - libvirtd is shutdown *after* iscsid, which makes it
      impossible for libvirt to perform the logout of the iscsi session properly.
      
      This patch simply adds another startup dependancy on iscsid.service
      which in turn delays iscsid shutdown until after libvirtd has stopped.
      Having that applied, the system shuts down properly again.
      Signed-off-by: NEric Blake <eblake@redhat.com>
      443ec5c8
    • P
      qemu: Remove managed save flag from VM when starting with --force-boot · 9933a6b2
      Peter Krempa 提交于
      At the start of the guest after the image is unlinked the state wasn't
      touched up to match the state on disk.
      9933a6b2
    • C
      qemu: Use -1 as unpriviledged uid/gid · aff6942c
      Christophe Fergeau 提交于
      Commit f506a4c1 changed virSetUIDGID() to be a noop
      when uid/gid are -1, while it used to be a noop when
      they are <= 0.
      
      The changes in this commit broke creating new VMs in GNOME Boxes
      as qemuDomainCheckDiskPresence gets called during domain creation/startup,
      which in turn calls virFileAccessibleAs which fails after calling
      virSetUIDGID(0, 0) (Boxes uses session libvirtd). virSetUIDGID is called with
      (0, 0) as these are the default user/group values in virQEMUDriverConfig
      for session libvirtd.
      
      This commit changes virQEMUDriverConfigNew to use -1 as the unpriviledged
      uid/gid. I've also looked at the various places where cfg->user is used,
      and they all seem to handle -1 correctly.
      aff6942c
  3. 02 3月, 2013 1 次提交
  4. 01 3月, 2013 9 次提交
    • M
      virnetdevmacvlan.c: Introduce mutex for macvlan creation · 1cf97c87
      Michal Privoznik 提交于
      Currently, after we removed the qemu driver lock, it may happen
      that two or more threads will start up a machine with macvlan and
      race over virNetDevMacVLanCreateWithVPortProfile(). However,
      there's a racy section in which we are generating a sequence of
      possible device names and detecting if they exits. If we found
      one which doesn't we try to create a device with that name.
      However, the other thread is doing just the same. Assume it will
      succeed and we must therefore fail. If this happens more than 5
      times (which in massive parallel startup surely will) we return
      -1 without any error reported. This patch is a simple hack to
      both of these problems. It introduces a mutex, so only one thread
      will enter the section, and if it runs out of possibilities,
      error is reported. Moreover, the number of retries is raised to 20.
      1cf97c87
    • D
      Revert hack for autodestroy in qemuProcessStop · 9c4ecb3e
      Daniel P. Berrange 提交于
      This reverts the hack done in
      
      commit 568a6cda
      Author: Jiri Denemark <jdenemar@redhat.com>
      Date:   Fri Feb 15 15:11:47 2013 +0100
      
          qemu: Avoid deadlock in autodestroy
      
      since we now have a fix which avoids the deadlock scenario
      entirely
      9c4ecb3e
    • D
      Fix deadlock in QEMU close callback APIs · 96b893f0
      Daniel P. Berrange 提交于
      There is a lock ordering problem in the QEMU close callback
      APIs.
      
      When starting a guest we have a lock on the VM. We then
      set a autodestroy callback, which acquires a lock on the
      close callbacks.
      
      When running auto-destroy, we obtain a lock on the close
      callbacks, then run each callbacks - which obtains a lock
      on the VM.
      
      This causes deadlock if anyone tries to start a VM, while
      autodestroy is taking place.
      
      The fix is to do autodestroy in 2 phases. First obtain
      all the callbacks and remove them from the list under
      the close callback lock. Then invoke each callback
      from outside the close callback lock.
      Signed-off-by: NDaniel P. Berrange <berrange@redhat.com>
      96b893f0
    • D
      Fix crash in QEMU auto-destroy with transient guests · 7ccad0b1
      Daniel P. Berrange 提交于
      When the auto-destroy callback runs it is supposed to return
      NULL if the virDomainObjPtr is no longer valid. It was not
      doing this for transient guests, so we tried to virObjectUnlock
      a mutex which had been freed. This often led to a crash.
      Signed-off-by: NDaniel P. Berrange <berrange@redhat.com>
      7ccad0b1
    • G
      python: fix fd leak in generator.py · 20fa6241
      Guannan Ren 提交于
      20fa6241
    • G
      2387fdb7
    • J
      qemu: Make sure qemuProcessStart is run within a job · e4e28220
      Jiri Denemark 提交于
      qemuProcessStart expects to be run with a job already set and every
      caller except for qemuMigrationPrepareAny use it correctly. This bug can
      be observed in libvirtd logs during incoming migration as
      
          warning : qemuDomainObjEnterMonitorInternal:979 : This thread seems
          to be the async job owner; entering monitor without asking for a
          nested job is dangerous
      e4e28220
    • J
      Fix starting qemu instances when apparmor driver is enabled · 438a3850
      Jim Fehlig 提交于
      With the apparmor security driver enabled, qemu instances fail
      to start
      
      # grep ^security_driver /etc/libvirt/qemu.conf
      security_driver = "apparmor"
      # virsh start test-kvm
      error: Failed to start domain test-kvm
      error: internal error security label already defined for VM
      
      The model field of virSecurityLabelDef object is always populated
      by virDomainDefGetSecurityLabelDef(), so remove the check for a
      NULL model when verifying if a label is already defined for the
      instance.
      
      Checking for a NULL model and populating it later in
      AppArmorGenSecurityLabel() has been left in the code to be
      consistent with virSecuritySELinuxGenSecurityLabel().
      438a3850
    • S
      Fix a message typo · 4f773a8c
      Serge Hallyn 提交于
      As pointed out in
      https://bugs.launchpad.net/ubuntu/+source/libvirt/+bug/1034661
      The sentence
      
      "The function of PCI device addresses must less than 8"
      
      does not quite make sense.  Update that to read
      
      "The function of PCI device addresses must be less than 8"
      Signed-off-by: NSerge Hallyn <serge.hallyn@ubuntu.com>
      4f773a8c
  5. 28 2月, 2013 9 次提交
    • M
      qemu: Don't fail to shutdown domains with unresponsive agent · b8e25c35
      Michal Privoznik 提交于
      Currently, qemuDomainShutdownFlags() chooses the agent method of
      shutdown whenever the agent is configured. However, this
      assumption is not enough as the guest agent may be unresponsive
      at the moment. So unless guest agent method has been explicitly
      requested, we should fall back to the ACPI method.
      b8e25c35
    • V
      qemu: virConnectGetVersion returns bogus value · adfa3469
      Viktor Mihajlovski 提交于
      The unitialized local variable qemuVersion can cause an random value
      to be returned for the hypervisor version, observable with virsh version.
      Introduced by commit b46f7f4aSigned-off-by: NViktor Mihajlovski <mihajlov@linux.vnet.ibm.com>
      adfa3469
    • P
      qemu: fix use-after-free when parsing NBD disk · 0a562de1
      Paolo Bonzini 提交于
      disk->src is still used for disks->hosts->name, do not free it.
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      Signed-off-by: NEric Blake <eblake@redhat.com>
      0a562de1
    • E
      maint: fix typo in network docs · 5b17c7a9
      Eric Blake 提交于
      * docs/formatnetwork.html.in: Spell variation correctly.
      5b17c7a9
    • D
      Don't try to add non-existant devices to ACL · 7f544a4c
      Daniel P. Berrange 提交于
      The QEMU driver has a list of devices nodes that are whitelisted
      for all guests. The kernel has recently started returning an
      error if you try to whitelist a device which does not exist.
      This causes a warning in libvirt logs and an audit error for
      any missing devices. eg
      
      2013-02-27 16:08:26.515+0000: 29625: warning : virDomainAuditCgroup:451 : success=no virt=kvm resrc=cgroup reason=allow vm="vm031714" uuid=9d8f1de0-44f4-a0b1-7d50-e41ee6cd897b cgroup="/sys/fs/cgroup/devices/libvirt/qemu/vm031714/" class=path path=/dev/kqemu rdev=? acl=rw
      Signed-off-by: NDaniel P. Berrange <berrange@redhat.com>
      7f544a4c
    • D
      Fix typo in internal VIR_QEMU_PROCESS_START_AUTODESROY constant · d0b3ee55
      Daniel P. Berrange 提交于
      s/VIR_QEMU_PROCESS_START_AUTODESROY/VIR_QEMU_PROCESS_START_AUTODESTROY/
      Signed-off-by: NDaniel P. Berrange <berrange@redhat.com>
      d0b3ee55
    • D
      Avoid spamming logs with cgroups warnings · 279336c5
      Daniel P. Berrange 提交于
      The code for putting the emulator threads in a separate cgroup
      would spam the logs with warnings
      
      2013-02-27 16:08:26.731+0000: 29624: warning : virCgroupMoveTask:887 : no vm cgroup in controller 3
      2013-02-27 16:08:26.731+0000: 29624: warning : virCgroupMoveTask:887 : no vm cgroup in controller 4
      2013-02-27 16:08:26.732+0000: 29624: warning : virCgroupMoveTask:887 : no vm cgroup in controller 6
      
      This is because it has only created child cgroups for 3 of the
      controllers, but was trying to move the processes from all the
      controllers. The fix is to only try to move threads in the
      controllers we actually created. Also remove the warning and
      make it return a hard error to avoid such lazy callers in the
      future.
      Signed-off-by: NDaniel P. Berrange <berrange@redhat.com>
      279336c5
    • D
      Fix autodestroy of QEMU guests · b4a124ef
      Daniel P. Berrange 提交于
      The virQEMUCloseCallbacksRunOne method was passing a uuid string
      to virDomainObjListFindByUUID, when it actually expected to get
      a raw uuid buffer. This was not caught by the compiler because
      the method was using a 'void *uuid' instead of first casting
      it to the expected type.
      
      This regression was accidentally caused by refactoring in
      
        commit 568a6cda
        Author: Jiri Denemark <jdenemar@redhat.com>
        Date:   Fri Feb 15 15:11:47 2013 +0100
      
          qemu: Avoid deadlock in autodestroy
      Signed-off-by: NDaniel P. Berrange <berrange@redhat.com>
      b4a124ef
    • E
      qemu: -numa doesn't (yet) support disjoint range · 25dc8ba0
      Eric Blake 提交于
      https://bugzilla.redhat.com/show_bug.cgi?id=896092 mentions that
      qemu 1.4 and earlier only accept a simple start-stop range for
      the cpu=... argument of -numa.  Libvirt would attempt to use
      -numa cpu=1,3 for a disjoint range, which did not work as intended.
      
      Upstream qemu will be adding a new syntax for disjoint cpu ranges
      in 1.5; but the design for that syntax is still under discussion
      at the time of this patch.  So for libvirt 1.0.3, it is safest to
      just reject attempts to build an invalid qemu command line; in the
      future, we can add a capability bit and translate to the final
      accepted design for selecting a disjoint cpu range in numa.
      
      * src/qemu/qemu_command.c (qemuBuildNumaArgStr): Reject disjoint
      ranges.
      25dc8ba0
  6. 27 2月, 2013 14 次提交