1. 18 11月, 2013 4 次提交
    • J
      Return -1 in virPortAllocatorAcquire if all ports are used · 8c41794a
      Ján Tomko 提交于
      Report the error in virPortAllocatorAcquire instead
      of doing it in every caller.
      
      The error contains the port range name instead of the intended
      use for the port, e.g.:
      Unable to find an unused port in range 'display' (65534-65535)
      instead of:
      Unable to find an unused port for SPICE
      
      This also adds error reporting when the QEMU driver could not
      find an unused port for VNC, VNC WebSockets or NBD migration.
      8c41794a
    • J
      Add a name to virPortAllocator · d16d90fd
      Ján Tomko 提交于
      This allows its error messages to be more specific.
      d16d90fd
    • J
      Don't release spice port twice when no TLS port is available · 28ea39a0
      Ján Tomko 提交于
      Introduced by 7b4a6304.
      28ea39a0
    • J
      Properly unref a connection with a close callback · e68432e4
      Ján Tomko 提交于
      The connection pointer in the closeCallback data was never
      initialized, making the unref in remoteClientCloseFunc a no-op.
      
      This fixes the following leak in virsh when the daemon closes
      the connection unexpectedly:
      
      1,179 (288 direct, 891 indirect) bytes in 1 blocks are
         definitely lost in loss record 745 of 792
        at 0x4C2A6D0: calloc (in vgpreload_memcheck-amd64-linux.so)
        by 0x4E9643D: virAllocVar (viralloc.c:558)
        by 0x4ED2425: virObjectNew (virobject.c:190)
        by 0x4F675AC: virGetConnect (datatypes.c:116)
        by 0x4F6EA06: do_open (libvirt.c:1136)
        by 0x4F71017: virConnectOpenAuth (libvirt.c:1481)
        by 0x129FFA: vshReconnect (virsh.c:337)
        by 0x128310: main (virsh.c:2470)
      e68432e4
  2. 15 11月, 2013 9 次提交
    • E
      docs: improve job info details · 6385283a
      Eric Blake 提交于
      Noticed while revieweing the patches for qemu's new migration state.
      
      * include/libvirt/libvirt.h.in (_virDomainJobInfo): Fix typo,
      grammar.
      * src/libvirt.c (virDomainGetJobInfo): Add cross reference.
      Signed-off-by: NEric Blake <eblake@redhat.com>
      6385283a
    • C
      docs: fix a typo in formatnwfilter.html.in · 18037b5f
      Chen Hanxiao 提交于
      s/insallations/installations/
      Signed-off-by: NChen Hanxiao <chenhanxiao@cn.fujitsu.com>
      18037b5f
    • M
      Fix migration with QEMU 1.6 · d35ae414
      Michael Avdienko 提交于
      QEMU 1.6.0 introduced new migration status: setup
      Libvirt does not expect such string in QMP and refuses to migrate with error
      "unexpected migration status in setup"
      
      This patch fixes it.
      Signed-off-by: NJiri Denemark <jdenemar@redhat.com>
      d35ae414
    • J
      qemu: Call qemuSetupHostdevCGroup later during hotplug · 05e149f9
      Jiri Denemark 提交于
      https://bugzilla.redhat.com/show_bug.cgi?id=1025108
      
      So far qemuSetupHostdevCGroup was called very early during hotplug, even
      before we knew the device we were about to hotplug was actually
      available. By calling the function later, we make sure QEMU won't be
      allowed to access devices used by other domains.
      
      Another important effect of this change is that hopluging USB devices
      specified by vendor and product (but not by their USB address) works
      again. This was broken since v1.0.5-171-g7d763aca, when the call to
      qemuFindHostdevUSBDevice was moved after the call to
      qemuSetupHostdevCGroup, which then used an uninitialized USB address.
      05e149f9
    • M
      qemuMonitorIO: Don't use @mon after it's unrefed · f417ad07
      Michal Privoznik 提交于
      https://bugzilla.redhat.com/show_bug.cgi?id=1018267
      
      The aim of virObject refing and urefing is to tell where the object is
      to be used and when is no longer needed. Hence any object shouldn't be
      used after it has been unrefed, as we might be the last to hold the
      reference. The better way is to call virObjectUnref() *after* the last
      object usage. In this specific case, the monitor EOF handler was called
      after the qemuMonitorIO called virObjectUnref. Not only that @mon was
      disposed (which is not used in the handler anyway) but the @mon->vm
      which is causing a SIGSEGV:
      
      2013-11-15 10:17:54.425+0000: 20110: error : qemuMonitorIO:688 : internal error: early end of file from monitor: possible problem:
      qemu-kvm: -incoming tcp:01.01.01.0:49152: Failed to bind socket: Cannot assign requested address
      
      Program received signal SIGSEGV, Segmentation fault.
      qemuProcessHandleMonitorEOF (mon=<optimized out>, vm=0x7fb728004170) at qemu/qemu_process.c:299
      299         if (priv->beingDestroyed) {
      (gdb) p *priv
      Cannot access memory at address 0x0
      (gdb) p vm
      $1 = (virDomainObj *) 0x7fb728004170
      (gdb) p *vm
      $2 = {parent = {parent = {magic = 3735928559, refs = 0, klass = 0xdeadbeef}, lock = {lock = {__data = {__lock = 2, __count = 0, __owner = 20110, __nusers = 1, __kind = 0, __spins = 0, __list = {__prev = 0x0,
                  __next = 0x0}}, __size = "\002\000\000\000\000\000\000\000\216N\000\000\001", '\000' <repeats 26 times>, __align = 2}}}, pid = 0, state = {state = 0, reason = 0}, autostart = 0, persistent = 0,
        updated = 0, def = 0x0, newDef = 0x0, snapshots = 0x0, current_snapshot = 0x0, hasManagedSave = false, privateData = 0x0, privateDataFreeFunc = 0x0, taint = 304}
      Signed-off-by: NMichal Privoznik <mprivozn@redhat.com>
      f417ad07
    • M
      qemuProcessReconnectHelper: Don't create joinable thread · 3367c21d
      Michal Privoznik 提交于
      In the qemuProcessReconnectHelper() a new thread that does all the
      interesting work is spawned. The rationale is to not block the daemon
      startup process in case of unresponsive qemu. However, the thread
      handler is a local variable which gets lost once the control goes out of
      scope. Hence the thread gets leaked. We can avoid this if the thread
      isn't made joinable.
      Signed-off-by: NMichal Privoznik <mprivozn@redhat.com>
      3367c21d
    • M
      virDomainEventCallbackListFree: Don't leak @list->callbacks · ea13a759
      Michal Privoznik 提交于
      The @list->callbacks is an array that is inflated whenever a new event
      is added, e.g. via virDomainEventCallbackListAddID(). However, when we
      are freeing the array, we free the items within it but forgot to
      actually free it.
      Signed-off-by: NMichal Privoznik <mprivozn@redhat.com>
      ea13a759
    • M
      virPCIDeviceBindToStub: Remove unused @oldDriverPath and @oldDriverName · a5936755
      Michal Privoznik 提交于
      These two chunks had to be part of df4283a5. But for some unclear
      reason, the weren't. Anyway, these two variables are not used anywhere
      within function. They're initialized to NULL and then VIR_FREE()-d. And
      there's no reason do do two NOPs, right?
      Signed-off-by: NMichal Privoznik <mprivozn@redhat.com>
      a5936755
    • M
  3. 14 11月, 2013 1 次提交
    • E
      storage: fix RNG validation of gluster via netfs · 887dd362
      Eric Blake 提交于
      While trying to compare netfs against my new gluster pool, I
      discovered two things:
      
      virt-xml-validate chokes on valid xml produced by 'virsh pool-dumpxml'
      [yet another reason that ALL patches that add new xml should be adding
      corresponding tests]
      
      When using glusterfs FUSE mounts, you cannot access a subdirectory
      of a gluster volume.  The recommended workaround in the gluster
      community is to mount the volume to an intermediate location, then
      bind-mount the desired subdirectory to the final location.  Maybe
      we should teach libvirt to do bind-mounting, but for now I chose to
      just document the limitation.
      
      * docs/storage.html.in: Improve documentation.
      * docs/schemas/storagepool.rng (sourcefmtnetfs): Allow all
      formats, and drop redundant info-vendor.
      * tests/storagepoolxml2xmltest.c (mymain): New test.
      * tests/storagepoolxml2xmlin/pool-netfs-gluster.xml: New file.
      * tests/storagepoolxml2xmlout/pool-netfs-gluster.xml: Likewise.
      Signed-off-by: NEric Blake <eblake@redhat.com>
      887dd362
  4. 13 11月, 2013 10 次提交
    • P
      virsh-secret: Unify list column alignment · 8d7800a5
      Peter Krempa 提交于
      Before:
      
      $ virsh secret-list
      UUID                                 Usage
      -----------------------------------------------------------
      0a81f5b2-8403-7b23-c8d6-21ccc2f80d6f volume /var/lib/libvirt/images/puppyname.img
      0a81f5b2-8403-7b23-c8d6-2deadbeefd6f Unused
      
      After:
      
      $ virsh secret-list
       UUID                                  Usage
      --------------------------------------------------------------------------------
       0a81f5b2-8403-7b23-c8d6-21ccc2f80d6f  volume /var/lib/libvirt/images/puppyname.img
       0a81f5b2-8403-7b23-c8d6-2deadbeefd6f  Unused
      8d7800a5
    • P
      virsh-interface: Unify list column alignment · 8cb426a2
      Peter Krempa 提交于
      Before:
      
      $ virsh iface-list
      Name                 State      MAC Address
      --------------------------------------------
      br0                  active     f0:de:f1:dc:b8:b0
      virbr2               active     52:54:00:61:78:0c
      
      After:
      
      $ virsh iface-list
       Name                 State      MAC Address
      ---------------------------------------------------
       br0                  active     f0:de:f1:dc:b8:b0
       virbr2               active     52:54:00:61:78:0c
      8cb426a2
    • P
      virsh-nwfilter: Unify list command column alignment · 75fe29e2
      Peter Krempa 提交于
      Before:
      $ virsh nwfilter-list
      UUID                                  Name
      ----------------------------------------------------------------
      651d902c-165c-4bcc-8d73-41319af1e6bc  allow-arp
      9ae11362-df6b-407f-8864-3bdf5125bf77  allow-dhcp
      53b5a9ed-7d46-480f-a201-6d8a503d6533  allow-dhcp-server
      
      After:
      $ virsh nwfilter-list
       UUID                                  Name
      ------------------------------------------------------------------
       651d902c-165c-4bcc-8d73-41319af1e6bc  allow-arp
       9ae11362-df6b-407f-8864-3bdf5125bf77  allow-dhcp
       53b5a9ed-7d46-480f-a201-6d8a503d6533  allow-dhcp-server
      75fe29e2
    • P
      virsh-pool: Unify spacing of listing function · 96f4b5eb
      Peter Krempa 提交于
      Change the alignment to match the domain listing function.
      
      Before:
      
      $ virsh pool-list
      Name                 State      Autostart
      -----------------------------------------
      boot-scratch         active     no
      default              active     no
      glusterpool          active     no
      
      $ virsh pool-list --details
      Name          State    Autostart  Persistent    Capacity  Allocation  Available
      -------------------------------------------------------------------------------
      boot-scratch  running  no         yes         117.99 GiB  101.40 GiB  16.60 GiB
      default       running  no         yes         117.99 GiB  101.40 GiB  16.60 GiB
      glusterpool   running  no         yes          29.40 GiB   44.23 MiB  29.36 GiB
      
      After:
      
      $ virsh pool-list
       Name                 State      Autostart
      -------------------------------------------
       boot-scratch         active     no
       default              active     no
       glusterpool          active     no
      
      $ virsh pool-list --details
       Name          State    Autostart  Persistent    Capacity  Allocation  Available
      ---------------------------------------------------------------------------------
       boot-scratch  running  no         yes         117.99 GiB  101.40 GiB  16.60 GiB
       default       running  no         yes         117.99 GiB  101.40 GiB  16.60 GiB
       glusterpool   running  no         yes          29.40 GiB   44.23 MiB  29.36 GiB
      96f4b5eb
    • J
      Disable nwfilter driver when running unprivileged · b7829f95
      Ján Tomko 提交于
      When opening a new connection to the driver, nwfilterOpen
      only succeeds if the driverState has been allocated.
      
      Move the privilege check in driver initialization before
      the state allocation to disable the driver.
      
      This changes the nwfilter-define error from:
      error: cannot create config directory (null): Bad address
      To:
      this function is not supported by the connection driver:
      virNWFilterDefineXML
      
      https://bugzilla.redhat.com/show_bug.cgi?id=1029266
      b7829f95
    • J
      libxl: Fix Xen 4.4 libxlVmStart logic · 7d58c7fc
      Jason Andryuk 提交于
      ifdef LIBXL_HAVE_DOMAIN_CREATE_RESTORE_PARAMS hides a multi-line body
      for a brace-less else.  Add braces to ensure proper logic is applied.
      
      Without this fix, new domains cannot be started.  Both
      libxl_domain_create_new and libxl_domain_create_restore are called when
      starting a new domain leading to this error:
      libxl: error: libxl.c:324:libxl__domain_rename: domain with name "guest" already exists.
      libxl: error: libxl_create.c:800:initiate_domain_create: cannot make domain: -6
      7d58c7fc
    • P
      qemu: Check for presence of device and properities when getting CPUID · 84f69602
      Peter Krempa 提交于
      The QOM path in qemu that contains the CPUID registers of a running VM
      may not be present (introduced in QEMU 1.5).
      
      Since commit d94b7817 we have a regression with QEMU that don't
      support reporting of the CPUID register state via the monitor as the
      process startup code expects the path to exist.
      
      This patch adds code that checks with the monitor if the requested path
      already exists and uses it only in this case.
      84f69602
    • P
      qemu: Change return type of qemuMonitorGetGuestCPU() · a6a6f84a
      Peter Krempa 提交于
      To allow returning more granular errors, change the error type to an
      integer.
      a6a6f84a
    • P
      virsh-volume: Unify strigification of volume type · 48072521
      Peter Krempa 提交于
      There were two separate places with that were stringifying type of a
      volume. One of the places was out of sync with types implemented
      upstream.
      
      To avoid such problems in the future, this patch adds a common function
      to convert the type to string and reuses it across the two said places.
      48072521
    • P
      virsh-volume: Unify alignment of vol-list output columns · d6fdcb88
      Peter Krempa 提交于
      Add an extra space before the first column as we have when listing
      domains.
      
      Previous output:
      
      $ virsh vol-list glusterpool
      Name                 Path
      -----------------------------------------
      asdf                 gluster://gluster-node-1/gv0/asdf
      c                    gluster://gluster-node-1/gv0/c
      cd                   gluster://gluster-node-1/gv0/cd
      
      $ virsh vol-list glusterpool --details
      Name  Path                               Type     Capacity  Allocation
      ----------------------------------------------------------------------
      asdf  gluster://gluster-node-1/gv0/asdf  unknown    0.00 B      0.00 B
      c     gluster://gluster-node-1/gv0/c     unknown   16.00 B     16.00 B
      cd    gluster://gluster-node-1/gv0/cd    unknown    0.00 B      0.00 B
      
      New output:
      
      $ virsh vol-list glusterpool
       Name                 Path
      ------------------------------------------------------------------------------
       asdf                 gluster://gluster-node-1/gv0/asdf
       c                    gluster://gluster-node-1/gv0/c
       cd                   gluster://gluster-node-1/gv0/cd
      
      $ virsh vol-list glusterpool --details
       Name  Path                               Type     Capacity  Allocation
      ------------------------------------------------------------------------
       asdf  gluster://gluster-node-1/gv0/asdf  unknown    0.00 B      0.00 B
       c     gluster://gluster-node-1/gv0/c     unknown   16.00 B     16.00 B
       cd    gluster://gluster-node-1/gv0/cd    unknown    0.00 B      0.00 B
      d6fdcb88
  5. 12 11月, 2013 8 次提交
  6. 11 11月, 2013 3 次提交
    • C
      docs: fix typos in libvirt.h.in · 0a85160f
      Chen Hanxiao 提交于
      s/repersents/represents
      Signed-off-by: NChen Hanxiao <chenhanxiao@cn.fujitsu.com>
      0a85160f
    • M
      virSecurityLabelDefParseXML: Don't parse label on model='none' · 9fb3f957
      Michal Privoznik 提交于
      https://bugzilla.redhat.com/show_bug.cgi?id=1027096
      
      If there's the following snippet in the domain XML, the domain will be
      lost upon the daemon restart (if the domain is started prior restart):
      
          <seclabel type='dynamic' relabel='yes'/>
      
      The problem is, the 'label', 'imagelabel' and 'baselabel' are parsed
      whenever the VIR_DOMAIN_XML_INACTIVE is *not* present or the label is
      static. The latter is not our case, obviously. So, when libvirtd starts
      up, it finds domain state xml and parse it. During parsing, many XML
      flags are enabled but VIR_DOMAIN_XML_INACTIVE. Hence, our parser tries
      to extract 'label', 'imagelabel' and 'baselabel' from the XML which
      fails for model='none'. Err, this model - even though not specified in
      XML - can be taken from qemu wide config file: /etc/libvirtd/qemu.conf.
      
      However, in order to know we are dealing with model='none' the code in
      question must be moved forward a bit. Then a new check must be
      introduced. This is what the first two chunks are doing.
      
      But this alone is not sufficient. The domain state XML won't contain the
      model attribute without slight modification. The model should be
      inserted into the XML even if equal to 'none' and the state XML is being
      generated - what if the origin (the @security_driver variable in
      qemu.conf) changes during libvirtd restarts?
      
      At the end, a test to catch this scenario is introduced.
      Signed-off-by: NMichal Privoznik <mprivozn@redhat.com>
      9fb3f957
    • P
      virsh-domain: Mark --live and --config mutually exclusive in vcpucount · bf45db60
      Peter Krempa 提交于
      The 'vcpucount' command is a getter command for the vCPUu count. When
      one or more of the filtering flags are specified the command returns the
      value only for the selected combination. In this case the --live and
      --config combination isn't valid. This however didn't cause errors as
      the combination of flags was rejected by the libvirt API but then the
      fallback code kicked in and requested the count in a way where the clash
      of the flags didn't matter.
      
      Mark the flag combination mutually exclusive so that users aren't
      confused.
      
      Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1024245
      bf45db60
  7. 09 11月, 2013 2 次提交
  8. 08 11月, 2013 3 次提交
    • V
      qemu: Fix SCSI hotplug on pseries guests · efdd591d
      Vitor de Lima 提交于
      This patch moves some code in the qemuDomainAttachSCSIDisk
      function. The check for the existence of a PCI address assigned
      to the SCSI controller was moved in order to be executed only
      when needed. The PCI address of a controller is not necessary
      if QEMU_CAPS_DEVICE is supported.
      
      This fixes issues with the hotplug of SCSI disks on pseries guests.
      efdd591d
    • L
      pci: properly handle out-of-order SRIOV virtual functions · 88c1fcd5
      Laine Stump 提交于
      This resolves:
      
        https://bugzilla.redhat.com/show_bug.cgi?id=1025397
      
      When virPCIGetVirtualFunctions created the list of an SRIOV Physical
      Function's (PF) Virtual Functions (VF), it had assumed that the order
      of "virtfn*" links returned by readdir() from the PF's sysfs directory
      was already in the correct order. Experience has shown that this is
      not always the case - it can be in alphabetical order (which would
      e.g. place virtfn11 before virtfn2) or even some seemingly random
      order (see the example in the bugzilla report)
      
      This results in 1) incorrect assumptions made by consumers of the
      output of the virt_functions list of virsh nodedev-dumpxml, and 2)
      setting MAC address and vlan tag on the wrong VF (since libvirt uses
      netlink to set mac address and vlan tag, netlink requires the VF#, and
      the function virPCIGetVirtualFunctionIndex() returns the wrong index
      due to the improperly ordered VF list).
      
      The solution provided by this patch is for virPCIGetVirtualFunctions
      to no longer scan the entire device directory in its natural order,
      but instead to check for links individually by name "virtfn%d" where
      %d starts at 0 and increases with each success. Since VFs are created
      contiguously by the kernel, this will guarantee that all VFs are
      found, and placed in the arry in the correct order.
      
      One note of use to the uninitiated is that VIR_APPEND_ELEMENT always
      either increments *num_virtual_functions or fails, so no this isn't an
      endless loop.
      
      (NB: the SRIOV_* defines at the top of virpci.c were removed
      because they are unnecessary and/or not used.)
      88c1fcd5
    • L
      util: use size_t instead of unsigned int for num_virtual_functions · 89e2a6c8
      Laine Stump 提交于
      This is a prerequisite to the fix for the fix to:
      
        https://bugzilla.redhat.com/show_bug.cgi?id=1025397
      
      num_virtual_functions needs to be size_t in order to use the
      VIR_APPEND_ELEMENT macro.
      89e2a6c8