1. 12 6月, 2014 18 次提交
  2. 11 6月, 2014 14 次提交
    • P
      leaseshelper: fix crash · a93504cc
      Pavel Hrdina 提交于
      Commit baafe668 introduced new leaseshelper with a crash of freeing
      env string. Calling 'getenv()' inside 'virGetEnvAllowSUID()' may
      return a static string and we definitely should not free it.
      
      The author probably want to free the copy of that string.
      Signed-off-by: NPavel Hrdina <phrdina@redhat.com>
      a93504cc
    • E
      maint: exempt graphic binaries from syntax check · de43582b
      Eric Blake 提交于
      Roman Bogorodskiy reported a syntax-check failure when using
      FreeBSD; complaining that:
      
      prohibit_empty_first_line
      tools/libvirt_win_icon_16x16.ico:1:
      tools/libvirt_win_icon_32x32.ico:1:
      tools/libvirt_win_icon_48x48.ico:1:
      tools/libvirt_win_icon_64x64.ico:1:
      maint.mk: Prohibited empty first line
      
      In reality, the first 'line' of that file is NOT empty; but since
      it is a binary file, awk is not required to handle it gracefully.
      The simplest solution is to exempt all image files from syntax
      checks in the first place - after all, we only store them in git
      because they are inconvenient to regenerate, but they are not our
      preferred format for making modifications, and syntax check should
      only cover files that we are likely to modify.
      
      * cfg.mk (VC_LIST_ALWAYS_EXCLUDE_REGEX): Exempt images.
      (exclude_file_name_regexp--sc_prohibit_empty_lines_at_EOF): Simplify.
      (exclude_file_name_regexp--sc_trailing_blank): Likewise.
      Signed-off-by: NEric Blake <eblake@redhat.com>
      de43582b
    • S
      qemu: Properly label FDs when restoring domain with static label · edc80e23
      Shivaprasad G Bhat 提交于
      When saving domain with relabel=no, the file that gets created must have the
      context set anyway.  That way restore can be successful without the need of
      relabelling the file.
      Signed-off-by: NShivaprasad G Bhat <sbhat@linux.vnet.ibm.com>
      edc80e23
    • J
      vmware: make version parsing more robust · 775bb9b1
      Jean-Baptiste Rouault 提交于
      Since commit d69415d4, vmware version is parsed from both stdout and
      stderr. This patch makes version parsing work even if there is garbage
      (libvirt debug messages for example) in the command output.
      
      Add test data for this case.
      775bb9b1
    • M
      virnetdev: Use ifname in virNetDevGetLinkInfo · 3c43b6a7
      Michal Privoznik 提交于
      If we're compiling on non-Linux platform, the virNetDevGetLinkInfo()
      is a dummy function which barely logs debug message that getting link
      info is not supported. However, while the debug message was prepared
      for printing the interface name too, I actually forgot to pass the
      variable which resulted in build error on platforms like mingw or
      FreeBSD.
      Signed-off-by: NMichal Privoznik <mprivozn@redhat.com>
      3c43b6a7
    • M
      node_device: Expose link state & speed · 0311ef3d
      Michal Privoznik 提交于
      While exposing the info under <interface/> in previous patch works, it
      may work only in cases where interface is configured on the host.
      However, orchestrating application may want to know the link state and
      speed even in that case. That's why we ought to expose this in nodedev
      XML too:
      
      virsh # nodedev-dumpxml net_eth0_f0_de_f1_2b_1b_f3
      <device>
        <name>net_eth0_f0_de_f1_2b_1b_f3</name>
        <path>/sys/devices/pci0000:00/0000:00:19.0/net/eth0</path>
        <parent>pci_0000_00_19_0</parent>
        <capability type='net'>
          <interface>eth0</interface>
          <address>f0:de:f1:2b:1b:f3</address>
          <link speed='1000' state='up'/>
          <capability type='80203'/>
        </capability>
      </device>
      Signed-off-by: NMichal Privoznik <mprivozn@redhat.com>
      0311ef3d
    • M
      interface_backend_udev: Implement link speed & state · b2019ee4
      Michal Privoznik 提交于
      In the previous commit the helper function was prepared, so now
      we can wire it up and benefit from it. The Makefile change is
      required because we're including virnedev,h which includes
      virnetlink.h which tries to include netlink/msg.h. However this
      file is not under /usr/include directly but is dependent on libnl
      used.
      Signed-off-by: NMichal Privoznik <mprivozn@redhat.com>
      b2019ee4
    • M
      virnetdev: Introduce virNetDevGetLinkInfo · 05630cf4
      Michal Privoznik 提交于
      The purpose of this function is to fetch link state
      and link speed for given NIC name from the SYSFS.
      Signed-off-by: NMichal Privoznik <mprivozn@redhat.com>
      05630cf4
    • M
      virInterface: Expose link state & speed · 3db89662
      Michal Privoznik 提交于
      Currently it is not possible to determine the speed of an interface
      and whether a link is actually detected from the API. Orchestrating
      platforms want to be able to determine when the link has failed and
      where multiple speeds may be available which one the interface is
      actually connected at. This commit introduces an extension to our
      interface XML (without implementation to interface driver backends):
      
        <interface type='ethernet' name='eth0'>
          <start mode='none'/>
          <mac address='aa:bb:cc:dd:ee:ff'/>
          <link speed='1000' state='up'/>
          <mtu size='1492'/>
          ...
        </interface>
      
      Where @speed is negotiated link speed in Mbits per second, and state
      is the current NIC state (can be one of the following:  "unknown",
      "notpresent", "down", "lowerlayerdown","testing", "dormant", "up").
      Signed-off-by: NMichal Privoznik <mprivozn@redhat.com>
      3db89662
    • E
      nodeinfo: avoid uninitialized variable on error · 10c10f43
      Eric Blake 提交于
      Commit 8ba0a58f introduced a compiler warning that I hit during
      a run of ./autobuild.sh:
      
      ../../src/nodeinfo.c: In function 'nodeCapsInitNUMA':
      ../../src/nodeinfo.c:1853:43: error: 'nsiblings' may be used uninitialized in this function [-Werror=maybe-uninitialized]
               if (virCapabilitiesAddHostNUMACell(caps, n, memory,
                                                 ^
      
      Sure enough, nsiblings starts uninitialized, and is set by a call
      to virNodeCapsGetSiblingInfo, but that function fails to assign
      through the pointer if virNumaGetDistances fails.
      
      * src/nodeinfo.c (nodeCapsInitNUMA): Initialize nsiblings.
      Signed-off-by: NEric Blake <eblake@redhat.com>
      10c10f43
    • E
      storage: fix memory leak with encrypted images · 1c7eb95c
      Eric Blake 提交于
      Jim Fehlig reported a regression found by libvirt-TCK tests:
      
      > ~ # perl /usr/share/libvirt-tck/tests/qemu/100-disk-encryption.t
      ...
      > ok 4 - defined persistent domain config
      > # Starting inactive domain config
      > libvirt error code: 1, message: internal error: unable to execute QEMU command
      > 'cont': 'drive-ide0-0-1'
      > (/var/cache/libvirt-tck/300-disk-encryption/demo.qcow2) is encrypted
      
      Commit 2279d560 converted a boolean into a pointer with the intent of
      transferring that pointer out of a temporary object into the caller's
      data structure.  The temporary structure meant that meta->encryption
      was always NULL on entry, so we could get away with blindly allocating
      the pointer when the header said so.  But later, commit 8823272d
      tweaked things to do backing chain detection in-place, rather than via
      a temporary object; this has the net result that meta->encryption can
      be non-NULL on entry.  Not only did this turn the latent behavior into
      a memory leak, it is also a behavior regression: blindly allocating a
      new pointer wipes out what secrets we already knew about the chain,
      making it impossible to restart the domain.
      
      Of course, no one in their right mind should be relying on qcow2
      encryption - it is fundamentally flawed.  And sadly, the TCK tests
      don't get run often enough, and this shows that our virstoragetest
      does not exercise encrypted images at all.  Otherwise, we could
      have avoided a release containing this regression.
      
      * src/util/virstoragefile.c (virStorageFileGetMetadataInternal):
      Don't nuke an already-existing encryption.
      Signed-off-by: NEric Blake <eblake@redhat.com>
      1c7eb95c
    • R
      vbox: fix compilation error · 0568db02
      Roman Bogorodskiy 提交于
      clang complains about possibly uninitialized variable:
      
      vbox/vbox_snapshot_conf.c:1355:9: error: variable 'ret' is used uninitialized whenever 'if' condition is true [-Werror,-Wsometimes-uninitialized]
          if (!(xPathContext = xmlXPathNewContext(xml))) {
              ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      
      So init 'ret' with NULL.
      0568db02
    • C
      virsh: Add details about specified migration host · c85b09cd
      Chen Fan 提交于
      the 'migration_host' description may be a bit difficult to
      understand for some users, so enhance the manual
      Signed-off-by: NChen Fan <chen.fan.fnst@cn.fujitsu.com>
      Signed-off-by: NEric Blake <eblake@redhat.com>
      c85b09cd
    • E
      blockcommit: document semantics of committing active layer · b2980250
      Eric Blake 提交于
      Now that qemu 2.0 allows commit of the active layer, people are
      attempting to use virsh blockcommit and getting into a stuck
      state, because libvirt is unprepared to handle the two-phase
      commit required by qemu.
      
      Stepping back a bit, there are two valid semantics for a
      commit operation:
      
      1. Maintain a 'golden' base, and a transient overlay. Make
      changes in the overlay, and if everything appears to work,
      commit those changes into the base, but still keep the overlay
      for the next round of changes; repeat the cycle as desired.
      
      2. Create an external snapshot, then back up the stable state
      in the backing file. Once the backup is complete, commit the
      overlay back into the base, and delete the temporary snapshot.
      
      Since qemu doesn't know up front which of the two styles is
      preferred, a block commit of the active layer merely gets
      the job into a synchronized state, and sends an event; then
      the user must either cancel (case 1) or complete (case 2),
      where qemu then sends a second event that actually ends the
      job.  However, until commit e6bcbcd3, libvirt was blindly
      assuming the semantics that apply to a commit of an
      intermediate image, where there is only one sane conclusion
      (the job automatically ends with fewer elements in the chain);
      and getting stuck because it wasn't prepared for qemu to enter
      a second phase of the job.
      
      This patch adds a flag to the libvirt API that a user MUST
      supply in order to acknowledge that they will be using two-phase
      semantics.  It might be possible to have a mode where if the
      flag is omitted, we automatically do the case 2 semantics on
      the user's behalf; but before that happens, I must do additional
      patches to track the fact that we are doing an active commit
      in the domain XML.  Later patches will add support of the flag,
      and once 2-phase semantics are working, we can then decide
      whether to relax things to allow an omitted flag to cause an
      automatic pivot.
      
      * include/libvirt/libvirt.h.in (VIR_DOMAIN_BLOCK_COMMIT_ACTIVE)
      (VIR_DOMAIN_BLOCK_JOB_TYPE_ACTIVE_COMMIT): New enums.
      * src/libvirt.c (virDomainBlockCommit): Document two-phase job
      when committing active layer, through new flag.
      (virDomainBlockJobAbort): Document that pivot also occurs after
      active commit.
      * tools/virsh-domain.c (vshDomainBlockJob): Cover new job.
      * src/qemu/qemu_driver.c (qemuDomainBlockCommit): Explicitly
      reject active copy; later patches will add it in.
      Signed-off-by: NEric Blake <eblake@redhat.com>
      b2980250
  3. 10 6月, 2014 6 次提交
  4. 09 6月, 2014 2 次提交
    • L
      qemu: ignore -nodefconfig and -nodefaults when parsing commandline · a7b0040a
      Laine Stump 提交于
      The qemu driver always adds these options to the qemu commandlines,
      but the commandline parser didn't recognize them, so sending a
      libvirt-generated qemu commandline to its own argvtoxml would always
      result in a warning message and a qemu namespace added to the
      xml. Since the options don't add any functionality to the domain, they
      should just be ignored (similar to -S).
      
      Note that we can't yet add a test for this to qemuargv2xmltest,
      because we would have to add QEMU_CAPS_NODEFCONFIG and
      QEMU_CAPS_DEVICE to the capabilities for any corresponding
      xml2argvtest, and QEMU_CAPS_DEVICE would necessitate having support
      for parsing a memballoon device in order for qemuargv2xmltest to
      pass. So we wait to add a test for -nodefconfig and -nodefaults until
      after adding support for parsing -device virtio-balloon-*.
      a7b0040a
    • L
      test: display qemuParseCommandline warnings when VIR_TEST_DEBUG > 0 · b7b3fb56
      Laine Stump 提交于
      qmeuargv2xmltest.c would fail any test that logged anything during
      qemuParseCommandline(), but then discard the log message, even with
      VIR_TEST_DEBUG=2. This patch outputs the log messages with
      fprintf(stderr,...) when debug logging is on.
      
      In the process of modifying that logic, the testInfo data was made
      more similar to that of qemuxml2argvtest.c - rather than turning
      info->extraFlags into a bool, an enum of flags is defined, the info
      struct is given an "unsigned int flags", and FLAG_EXPECT_WARNING is
      saved into info->flags, to be checked during the test; this will make
      it easier to add other FLAG_EXPECT_* items in the future.
      b7b3fb56