1. 01 6月, 2015 6 次提交
  2. 29 5月, 2015 11 次提交
    • J
      Allocate priv->vioserialaddrs unconditionally · 0a2581a1
      Ján Tomko 提交于
      When attempting to hotplug a virtio-serial console to a domain
      that had no virtio-serial controllers (not even those that
      are added by libvirt when some devices need them) at daemon startup,
      report a user-friendly error:
      
      error: Failed to attach device from console.xml
      error: internal error: no virtio-serial controllers are available
      
      instead of crashing the daemon:
      
      Process terminating with default action of signal 11 (SIGSEGV): dumping core
       Access not within mapped region at address 0x8
         at 0x531028F: virDomainVirtioSerialAddrNext (domain_addr.c:916)
         by 0x531028F: virDomainVirtioSerialAddrAssign (domain_addr.c:1029)
         by 0x1CBF68: qemuDomainAttachChrDevice (qemu_hotplug.c:1565)
         by 0x1BCD5E: qemuDomainAttachDeviceLive (qemu_driver.c:7997)
         by 0x1BCD5E: qemuDomainAttachDeviceFlags (qemu_driver.c:8743)
      
      Introduced in v1.2.14-30-g59033788.
      0a2581a1
    • J
      Properly free the xmlDocPtr when loading pool state · 5aa72904
      Ján Tomko 提交于
      Use xmlFreeDoc instead of plain xmlFree.
      
      4 bytes in 1 blocks are definitely lost in loss record 9 of 1,084
          at 0x4C29F80: malloc (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
          by 0x70730D6: xmlStrndup (in /usr/lib64/libxml2.so.2.9.2)
          by 0x701E3DC: xmlNewDoc (in /usr/lib64/libxml2.so.2.9.2)
          by 0x70C39F8: xmlSAX2StartDocument (in /usr/lib64/libxml2.so.2.9.2)
          by 0x7017245: xmlParseDocument (in /usr/lib64/libxml2.so.2.9.2)
          by 0x7017606: xmlDoRead (in /usr/lib64/libxml2.so.2.9.2)
          by 0x5309DAD: virXMLParseHelper (virxml.c:742)
          by 0x5367584: virStoragePoolLoadState (storage_conf.c:1863)
      5aa72904
    • J
      libxl: support QXL video device · 75d650dc
      Jim Fehlig 提交于
      libxl recently gained support for QXL video device.  Support
      it in the libxl driver too.
      Signed-off-by: NJim Fehlig <jfehlig@suse.com>
      75d650dc
    • J
      libxl: support SPICE graphics for HVM domains · 6baf8814
      Jim Fehlig 提交于
      Signed-off-by: NJim Fehlig <jfehlig@suse.com>
      6baf8814
    • J
      libxl: change reservedVNCPorts to reservedGraphicsPorts · 5a10fb1d
      Jim Fehlig 提交于
      A later change will use the PortAllocator for SPICE too.
      Signed-off-by: NJim Fehlig <jfehlig@suse.com>
      5a10fb1d
    • J
      libxl: populate build_info vfb in separate function · 09f2faf9
      Jim Fehlig 提交于
      For HVM domains, vfb info must be populated in the libxl_domain_build_info
      struct.  Currently this is done in the libxlMakeVfbList function, but IMO
      it would be cleaner to populate the build_info vfb in a separate
      libxlMakeBuildInfoVfb function.  libxlMakeVfbList would then handle only
      vfb devices, simiar to the other libxlMake<device>List functions.
      
      A future patch will extend libxlMakeBuildInfoVfb to support SPICE.
      Signed-off-by: NJim Fehlig <jfehlig@suse.com>
      09f2faf9
    • J
      storage: Fix problem with disk backend pool allocation calculation · 6839b08b
      John Ferlan 提交于
      https://bugzilla.redhat.com/show_bug.cgi?id=1224018
      
      The disk pool recalculates the pool allocation, capacity, and available
      values each time through processing a newly created disk partition. This
      created an issue with the allocation setting since the code used is shared
      with the refresh path. Each path calls virStorageBackendDiskReadPartitions
      which initializes the pool values and then processes the partition table
      from the 'libvirt_parthelper' utility output with the only difference being
      create passes a specific volume to be processed while refresh pass a NULL
      indicating to process all volumes. That passed volume is check during the
      virStorageBackendDiskMakeVol call to see if the current partition described
      by the volume key already exists. If it exists, then no adjustments are
      made to the allocation and the next entry in the output is checked.
      
      For the create path this resulted in only the most recently created
      partition size would be accounted for in the 'allocation' setting. This
      patch thus checks whether the incoming volume is NULL before clearing
      the pool allocation value.
      6839b08b
    • J
      storage: Don't adjust pool alloc/avail values for disk backend · 48809204
      John Ferlan 提交于
      Commit id '2ac0e647' for https://bugzilla.redhat.com/show_bug.cgi?id=1206521
      was meant to be a generic check for the CreateVol, CreateVolFrom, and
      DeleteVol paths to check if the storage backend's changed the pool's view
      of allocation or available values.
      
      Unfortunately as it turns out this caused a side effect when the disk backend
      created an extended partition there would be no actual storage removed from
      the pool, thus the changes would not find any change in allocation or
      available and incorrectly update the pool values using the size of the
      extended partition. A subsequent refresh of the pool would reset the
      values appropriately.
      
      This patch modifies those checks in order to specifically not update the
      pool allocation and available for only the disk backend rather than be
      generic before and after checks.
      48809204
    • J
      Revert "storage: Don't duplicate efforts of backend driver" · 6727bfd7
      John Ferlan 提交于
      This reverts commit 2ac0e647.
      6727bfd7
    • L
      debug: assure NULLSTR() around all %s args in debug at top of public APIs · e983e625
      Laine Stump 提交于
      There are also a couple that were very uninformatively just logging
      the value of the pointer rather than the string itself:
      
      * the "name" arg to virNodeDeviceLookupByName()
      * wwnn and wwpn args to virNodeDeviceLookupSCSIHostByWWN()
      
      All char*'s that make sense should now have their contents logged
      rather than the pointer, and all %s args should now be inside
      NULLSTR().
      e983e625
    • L
      node_device: more informative error log when device isn't found · 06a18bc8
      Laine Stump 提交于
      In a couple of cases, the node device driver (and the test node device
      driver which likely copied it) was only logging "Node device not
      found" when it couldn't find the requested device. This patch changes
      those cases to log the name (and in the case when it's relevant, the
      wwnn and wwpn) as well.
      06a18bc8
  3. 28 5月, 2015 6 次提交
  4. 27 5月, 2015 8 次提交
    • A
      qemu: Limit rtc-reset-reinjection requirement to x86 only. · ceab3979
      Andrea Bolognani 提交于
      The QMP command, like the interrupt reinjection logic it's connected
      to, is only implemented in QEMU when TARGET_I386 is defined, so
      checking for its availability on any other architecture is pointless.
      
      On the other hand, when we're on x86, we shouldn still make sure that
      rtc-reset-reinjection is available and refuse to set the time
      otherwise.
      
      Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1211938
      ceab3979
    • M
      storage_fs: Create directory with UID if needed · 7d0481cb
      Martin Kletzander 提交于
      The code already exists there, it just modified different flags.  I just
      noticed this when looking at the code.  This patch is better to view
      with bigger context or '-W'.
      Signed-off-by: NMartin Kletzander <mkletzan@redhat.com>
      7d0481cb
    • Z
      util: make it more robust to calculate timeout value · 39d0396f
      Zhang Bo 提交于
      When we change system clock to years ago, a certain CPU may use up 100% cputime.
      The reason is that in function virEventPollCalculateTimeout(), we assign the
      unsigned long long result to an INT variable,
              *timeout = then - now; // timeout is INT, and then/now are long long
              if (*timeout < 0)
                  *timeout = 0;
      there's a chance that variable @then minus variable @now may be a very large number
      that overflows INT value expression, then *timeout will be negative and be assigned to 0.
      Next the 'poll' in function virEventPollRunOnce() will get into an 'endless' while loop there.
      thus, the cpu that virEventPollRunOnce() thread runs on will go up to 100%.
      
      Although as we discussed before in https://www.redhat.com/archives/libvir-list/2015-May/msg00400.html
      it should be prohibited to set-time while other applications are running, but it does
      seems to have no harm to make the codes more robust.
      Signed-off-by: NWang Yufei <james.wangyufei@huawei.com>
      Signed-off-by: NZhang Bo <oscar.zhangbo@huawei.com>
      39d0396f
    • R
      zfs: fix storagepoolxml2xml test · b071ec43
      Roman Bogorodskiy 提交于
      Commit 7c2d65dd dropped setting default mode.
      
      Update zfs tests accordingly.
      b071ec43
    • P
      qemu: Fix compilation error when enum variable size differs from 'int' · 27fd5598
      Peter Krempa 提交于
      Since commit bcd9a564 virDomainNumatuneGetMode returns the value
      via a pointer rather than in the return value. The change triggered
      problems with platforms where the compiler decides to use a data type of
      size different than integer at the point where we typecast it.
      
      Work around the issue by using an intermediate variable of the correct
      type that gets casted back by the default typecasting rules.
      27fd5598
    • L
      util: improve the sysinfo element XML format · e14cdeb4
      Luyao Huang 提交于
      If the <sysinfo type='smbios'...> ends up not formatting any sub-elements,
      then rather than formatting as:
      
        <sysinfo type='smbios'>
        </sysinfo>
      
      Just format it more cleanly as:
      
        <sysinfo type='smbios'/>
      Signed-off-by: NLuyao Huang <lhuang@redhat.com>
      e14cdeb4
    • L
      conf: Avoid formatting empty redirfilter element · 733950c2
      Luyao Huang 提交于
      If the redirfilter has no usbdev sub-elements, then do not format anything
      rather than formatting an empty pair of elements:
      
          <redirfilter>
          </redirfilter>
      Signed-off-by: NLuyao Huang <lhuang@redhat.com>
      733950c2
    • E
      maint: update to latest gnulib · 3502f791
      Eric Blake 提交于
      Time to update to new gnulib before a release.
      
      gcc 5.1 introduced a new -Wformat-signedness, and new gnulib now
      turns it on by default.  However, it is still rather lame at the
      moment, because it warns for enums, even though there is no way
      to control the signeness of an enum which does not use any members
      that are negative or larger than INT_MAX, and even though such an
      enum would always print the same for both %d and %u:
      https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66249
      
      In file included from ../../src/util/virarch.c:26:0:
      ../../src/util/virarch.c: In function 'virArchFromHost':
      ../../src/util/virarch.c:180:15: error: format '%d' expects argument of type 'int', but argument 9 has type 'unsigned int' [-Werror=format=]
           VIR_DEBUG("Mapped %s to %d (%s)",
      
      So this patch turns off the new warning as part of enabling all
      other new gcc 5.1 warnings that gnulib now enables.
      
      * .gnulib: Update to latest, in part for gcc 5.1 interaction.
      * m4/virt-compile-warnings.m4: Ignore -Wformat-signedness, for now.
      Signed-off-by: NEric Blake <eblake@redhat.com>
      3502f791
  5. 26 5月, 2015 9 次提交
    • J
      qemu: Add libvirt version check to refresh capabilities algorithm · a14eff38
      John Ferlan 提交于
      Rather than an algorithm based solely on libvirtd ctime to refresh the
      capabilities add the element of the libvirt build version into the equation.
      Since that version wouldn't be there prior to this code being run - don't
      fail on reading the capabilities if not found. In this case, the cache
      will always be rebuilt when a new libvirt version is installed.
      a14eff38
    • J
      qemu: Force capabilities cache refresh if libvirtd date is different · 0b4211f9
      John Ferlan 提交于
      https://bugzilla.redhat.com/show_bug.cgi?id=1195882
      
      Original commit id 'cbde3589' indicates that the cache file would be
      discarded if either the QEMU binary or libvirtd 'ctime' changes; however,
      the code only discarded if the QEMU binary time didn't match or if the
      new libvirtd ctime was later than what created the cache file.
      
      Since many factors come into play with 'ctime' adjustments (including
      perhaps turning back the hands of time), change the logic to also force
      a refresh if the ctime of libvirt is different than what's in the cache.
      0b4211f9
    • D
      docs: update github project name · 205a6db0
      Daniel P. Berrange 提交于
      The github project was renamed from libvirtproject to libvirt
      205a6db0
    • J
      qemu: Resolve Coverity RESOURCE_LEAK · 2f9f7b5f
      John Ferlan 提交于
      Recent changes to the -M/--machine processing code in qemuParseCommandLine
      caused Coverity to determine there was a possible resource leak with how
      the 'list' is managed. Rather than try to add virStringFreeList calls
      everywhere - just promote list to the top of the variables and free it
      within the error processing code. Also required a couple of other tweaks
      in order to avoid double free's.
      2f9f7b5f
    • J
      conf: Resolve Coverity NEGATIVE_RETURNS · c214f56a
      John Ferlan 提交于
      Commit id '73eda710' added virDomainKeyWrapDefParseXML which uses
      virXPathNodeSet, but does not handle a -1 return thus causing a possible
      loop condition exit problem later when the return value is used.
      
      Change the logic to return the value from virXPathNodeSet if <= 0
      c214f56a
    • C
      storage: fs: Only force directory permissions if required · db1140f1
      Cole Robinson 提交于
      Only set directory permissions at pool build time, if:
      
      - User explicitly requested a mode via the XML
      - The directory needs to be created
      - We need to do the crazy NFS root-squash workaround
      
      This allows qemu:///session to call build on an existing directory
      like /tmp.
      db1140f1
    • C
      conf: storage: Don't emit empty <permissions> block · 42dd6a99
      Cole Robinson 提交于
      42dd6a99
    • C
      storage: conf: Don't set any default <mode> in the XML · 7c2d65dd
      Cole Robinson 提交于
      The XML parser sets a default <mode> if none is explicitly passed in.
      This is then used at pool/vol creation time, and unconditionally reported
      in the XML.
      
      The problem with this approach is that it's impossible for other code
      to determine if the user explicitly requested a storage mode. There
      are some cases where we want to make this distinction, but we currently
      can't.
      
      Handle <mode> parsing like we handle <owner>/<group>: if no value is
      passed in, set it to -1, and adjust the internal consumers to handle
      it.
      7c2d65dd
    • C
      docs: formatstorage: Update <permissions> docs · fafcc818
      Cole Robinson 提交于
      - Don't redocument the permissions fields for backingstore, just point to
        the volume docs.
      - Clarify that owner/group are inherited from the parent directory at
        volume create/pool build time.
      - Clarify that <permissions> fields report runtime values too
      fafcc818