1. 11 6月, 2014 2 次提交
    • 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
  2. 10 6月, 2014 6 次提交
  3. 09 6月, 2014 4 次提交
    • 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
    • P
      parallels: Avoid possible leak of "cpu" from parallelsBuildCapabilities · 20d0c33a
      Peter Krempa 提交于
      4d06af97 introduced a possible memory
      leak of the memory allocated into the "cpu" pointer in
      parallelsBuildCapabilities in the case "nodeGetInfo()" would fail right
      after the allocation. Rearrange the code to avoid the possibility of the
      leak.
      
      Found by Coverity.
      20d0c33a
    • P
      m4: bhyve: Fix check for the required bhyve programs · df01390a
      Peter Krempa 提交于
      bhyveload and bhyvectl wouldn't be checked otherwise as the configure
      script wouldn't execute one of the tests:
      
      checking for bhyve... /usr/local/sbin/bhyve
      checking for bhyvectl... /usr/local/sbin/bhyvectl
      checking for bhyveload... /usr/local/sbin/bhyveload
      ./configure: line 62602: test: too many arguments
      
      Fix the shell statement testing the 3 binaries.
      df01390a
  4. 08 6月, 2014 1 次提交
    • M
      vmx: Relax virtualHW.version check · 0e4370ed
      Matthias Bolte 提交于
      The original implementation of the VMX config parser assumed that the
      virtualHW.version would have more influence on the content of the VMX
      file than it actually seems to have. It started with accepting only
      version 4. Additonal versions were added later without any additional
      changes in the parser itself. This suggests that the influence of the
      virtualHW.version on the content and format of the VMX file is small
      or non-existent.
      
      The parser worked without any changes across several virtualHW and
      vSphere versions. So instead of adding new virtualHW.version values to
      the parser as they come along, or adding an extra flag to allow unknown
      virtualHW.version values just relax the check to require version 4 or
      later.
      0e4370ed
  5. 07 6月, 2014 1 次提交
    • E
      conf: alter disk mirror xml output · 7c6fc394
      Eric Blake 提交于
      Now that we track a disk mirror as a virStorageSource, we might
      as well update the XML to theoretically allow any type of
      mirroring destination (not just a local file).  A later patch
      will also be reusing <mirror> to track the block commit of the
      top layer of a chain, which is another case where libvirt needs
      to update the backing chain after the job is finally pivoted,
      and since backing chains can have network backing files as the
      destination to commit into, it makes more sense to display that
      in the XML.
      
      This patch changes output-only XML; it was already documented
      that <mirror> does not affect a domain definition at this point
      (because qemu doesn't provide persistent bitmaps yet).  Any
      application that was starting a block copy job with older libvirt
      and then relying on the domain XML to determine if it was
      complete will no longer be able to access the file= and format=
      attributes of mirror that were previously used.  However, this is
      not going to be a problem in practice: the only time a block copy
      job works is on a transient domain, and any app that is managing
      a transient domain probably already does enough of its own
      bookkeeping to know which file it is mirroring into without
      having to re-read it from the libvirt XML.  The one thing that
      was likely to be used in a mirroring job was the ready=
      attribute, which is unchanged.  Meanwhile, I made sure the schema
      and parser still accept the old format, even if we no longer
      output it, so that upgrading from an older version of libvirt is
      seamless.
      
      * docs/schemas/domaincommon.rng (diskMirror): Alter definition.
      * src/conf/domain_conf.c (virDomainDiskDefParseXML): Parse two
      styles of mirror elements.
      (virDomainDiskDefFormat): Output new style.
      * tests/qemuxml2argvdata/qemuxml2argv-disk-mirror-old.xml: New
      file, copied from...
      * tests/qemuxml2argvdata/qemuxml2argv-disk-mirror.xml: ...here
      before modernizing.
      * tests/qemuxml2xmloutdata/qemuxml2xmlout-disk-mirror-old*: New
      files.
      * tests/qemuxml2xmltest.c (mymain): Test both styles.
      Signed-off-by: NEric Blake <eblake@redhat.com>
      7c6fc394
  6. 06 6月, 2014 21 次提交
    • E
      conf: store mirroring information in virStorageSource · 7b7bf001
      Eric Blake 提交于
      The current implementation of 'virsh blockcopy' (virDomainBlockRebase)
      is limited to copying to a local file name.  But future patches want
      to extend it to also copy to network disks.  This patch converts over
      to a virStorageSourcePtr, although it should have no semantic change
      visible to the user, in anticipation of those future patches being
      able to use more fields for non-file destinations.
      
      * src/conf/domain_conf.h (_virDomainDiskDef): Change type of
      mirror information.
      * src/conf/domain_conf.c (virDomainDiskDefParseXML): Localize
      mirror parsing into new object.
      (virDomainDiskDefFormat): Adjust clients.
      * src/qemu/qemu_domain.c (qemuDomainDeviceDefPostParse):
      Likewise.
      * src/qemu/qemu_driver.c (qemuDomainBlockPivot)
      (qemuDomainBlockJobImpl, qemuDomainBlockCopy): Likewise.
      Signed-off-by: NEric Blake <eblake@redhat.com>
      7b7bf001
    • E
      conf: store disk source as pointer, for easier manipulation · c123ef71
      Eric Blake 提交于
      As part of the work on backing chains, I'm finding that it would
      be easier to directly manipulate chains of pointers (adding a
      snapshot merely adjusts pointers to form the correct list) rather
      than copy data from one struct to another.  This patch converts
      domain disk source to be a pointer.
      
      In this patch, the pointer is ALWAYS allocated (thanks in part to
      the previous patch forwarding all disk def allocation through a
      common point), and all other changse are just mechanical fallout of
      the new type; there should be no functional change.  It is possible
      that we may want to leave the pointer NULL for a cdrom with no
      medium in a later patch, but as that requires a closer audit of the
      source to ensure we don't fault on a null dereference, I didn't do
      it here.
      
      * src/conf/domain_conf.h (_virDomainDiskDef): Change type of src.
      * src/conf/domain_conf.c: Adjust all clients.
      * src/security/security_selinux.c: Likewise.
      * src/qemu/qemu_domain.c: Likewise.
      * src/qemu/qemu_command.c: Likewise.
      * src/qemu/qemu_conf.c: Likewise.
      * src/qemu/qemu_process.c: Likewise.
      * src/qemu/qemu_migration.c: Likewise.
      * src/qemu/qemu_driver.c: Likewise.
      * src/lxc/lxc_driver.c: Likewise.
      * src/lxc/lxc_controller.c: Likewise.
      * tests/securityselinuxlabeltest.c: Likewise.
      Signed-off-by: NEric Blake <eblake@redhat.com>
      c123ef71
    • E
      conf: consolidate disk def allocation · bc3f5f19
      Eric Blake 提交于
      A future patch wants to create disk definitions with non-zero
      default contents; to avoid crashes, all callers that allocate
      a disk definition should go through a common point.
      
      I found allocation points by looking for any code that increments
      ndisks, as well as any matches for ALLOC.*disk.  Most places that
      modified ndisks were covered by the parse from XML to domain/device
      definition by initial domain creation or device hotplug; I also
      hand-checked all drivers that generate a device struct on the
      fly during getXMLDesc.
      
      * src/conf/domain_conf.h (virDomainDiskDefNew): New prototype.
      * src/conf/domain_conf.c (virDomainDiskDefNew): New function.
      (virDomainDiskDefParseXML): Use it.
      * src/parallels/parallels_driver.c (parallelsAddHddInfo):
      Likewise.
      * src/qemu/qemu_command.c (qemuParseCommandLine): Likewise.
      * src/vbox/vbox_tmpl.c (vboxDomainGetXMLDesc): Likewise.
      * src/vmx/vmx.c (virVMXParseDisk): Likewise.
      * src/xenxs/xen_sxpr.c (xenParseSxprDisks, xenParseSxpr):
      Likewise.
      * src/xenxs/xen_xm.c (xenParseXM): Likewise.
      * src/libvirt_private.syms (domain_conf.h): Export it.
      Signed-off-by: NEric Blake <eblake@redhat.com>
      bc3f5f19
    • E
      conf: store snapshot source as pointer, for easier manipulation · 00c6327a
      Eric Blake 提交于
      As part of the work on backing chains, I'm finding that it would
      be easier to directly manipulate chains of pointers (adding a
      snapshot merely adjusts pointers to form the correct list) rather
      than copy data from one struct to another. This patch converts
      snapshot source to be a pointer.
      
      In this patch, the pointer is ALWAYS allocated (any code that
      increases ndisks now also allocates a source pointer for each
      new disk), and all other changes are just mechanical fallout of
      the new type; there should be no functional change.  It is
      possible that we may want to leave the pointer NULL for internal
      snapshots in a later patch, but as that requires a closer audit
      of the source to ensure we don't fault on a null dereference, I
      didn't do it here.
      
      * src/conf/snapshot_conf.h (_virDomainSnapshotDiskDef): Change
      type of src.
      * src/conf/snapshot_conf.c: Adjust all clients.
      * src/qemu/qemu_conf.c: Likewise.
      * src/qemu/qemu_driver.c: Likewise.
      Signed-off-by: NEric Blake <eblake@redhat.com>
      00c6327a
    • J
      Fix virbitmaptest on 32-bit · 61c44f58
      Ján Tomko 提交于
      My commit 7d8afc47 was passing the incorrect size to
      virBitmapDataToString in the newly added test.
      61c44f58
    • M
      nodedev: Export NUMA node locality for PCI devices · 1c702778
      Michal Privoznik 提交于
      A PCI device can be associated with a specific NUMA node. Later, when
      a guest is pinned to one NUMA node the PCI device can be assigned on
      different NUMA node. This makes DMA transfers travel across nodes and
      thus results in suboptimal performance. We should expose the NUMA node
      locality for PCI devices so management applications can make better
      decisions.
      Signed-off-by: NMichal Privoznik <mprivozn@redhat.com>
      1c702778
    • J
      Implement pretty flag for vcpuinfo and nodecpumap · a3173fef
      Ján Tomko 提交于
      Report CPU affinities / online CPUs in human-readable form when
      this flag is present:
      
      Before:
      CPU Affinity:   y-yy
      
      After:
      CPU Affinity:   0,2-3 (out of 4)
      
      https://bugzilla.redhat.com/show_bug.cgi?id=985980
      a3173fef
    • J
      Introduce virBitmapDataToString · 7d8afc47
      Ján Tomko 提交于
      For converting bitmap data to human-readable strings.
      7d8afc47
    • J
      Always report an error if virBitmapFormat fails · d4edce5f
      Ján Tomko 提交于
      It already reports an error if STRDUP fails.
      d4edce5f
    • J
      Format NULL bitmap as an empty string · cd09ab4d
      Ján Tomko 提交于
      This simplifies the usage in {libxl,qemu}DomainGetNumaParameters
      and it's needed for consistent error reporting in virBitmapFormat.
      
      Also remove the forgotten ATTRIBUTE_NONNULL marker.
      cd09ab4d
    • J
      virsh: Separate API calls and result printing in cmdVcpuinfo · 8f3f51b7
      Ján Tomko 提交于
      This allows reuse of the result printing code.
      8f3f51b7
    • J
      virsh: Invert logic in cmdVcpuinfo · bec105e6
      Ján Tomko 提交于
      Initialize 'ret' to false and introduce a cleanup label.
      bec105e6
    • A
      Parallels: Include CPU info in the capabilities XML · 4d06af97
      Alexander Burluka 提交于
      Openstack uses (or will start to using) CPU info from the
      capabilities XML. So this section is expanded, added CPU info
      about arch, type and info about number of cores, sockets and threads.
      Signed-off-by: NEric Blake <eblake@redhat.com>
      4d06af97
    • A
      Parallels: add connectBaselineCPU() · d1c69d41
      Alexander Burluka 提交于
      Openstack Nova (starting at Icehouse release) requires this function
      to start VM.
      Signed-off-by: NEric Blake <eblake@redhat.com>
      d1c69d41
    • A
      Parallels: add domainGetVcpus() · e721e9e6
      Alexander Burluka 提交于
      OpenStack Nova requires this function
      to start VM instance. Cpumask info is obtained via prlctl utility.
      Unlike KVM, Parallels Cloud Server is unable to set cpu affinity
      mask for every VCpu. Mask is unique for all VCpu. You can set it
      using 'prlctl set <vm_id|vm_name> --cpumask <{n[,n,n1-n2]|all}>'
      command. For example, 'prlctl set SomeDomain --cpumask 0,1,5-7'
      would set this mask to yy---yyy.
      Signed-off-by: NEric Blake <eblake@redhat.com>
      e721e9e6
    • M
    • M
      Remove unnecessary empty first lines · 3de462fe
      Martin Kletzander 提交于
      Signed-off-by: NMartin Kletzander <mkletzan@redhat.com>
      3de462fe
    • M
      translations: Don't leave default template fields in .po files · 96698b54
      Martin Kletzander 提交于
      New gettext-0.19 doesn't like it and we can't build without it.
      Signed-off-by: NMartin Kletzander <mkletzan@redhat.com>
      96698b54
    • J
      Fix storage format probing · c110cdb2
      Ján Tomko 提交于
      Commit fff74b27 moved the probing into virStorageFileGetMetadataFromBuf
      but didn't update the format in volume definition.
      
      https://bugzilla.redhat.com/show_bug.cgi?id=1104908
      c110cdb2
    • J
      Simplify conditions in virStorageBackendProbeTarget · effbb11e
      Ján Tomko 提交于
      Jump out early if no metadata was detected (for directories).
      Join the error and cleanup labels.
      effbb11e
    • J
      Don't reuse 'ret' variable in virStorageBackendProbeTarget · febcb89c
      Ján Tomko 提交于
      To match the convention:
      ret - current function's return value
      rc - other function's return values
      febcb89c
  7. 05 6月, 2014 5 次提交
    • M
      formatcaps: Rework and add stubs to document · e9f4729a
      Michal Privoznik 提交于
      At the moment we are missing even basic documentation on our
      capabilities XML. Without demand on completeness, I'm
      reorganizing the document structure and adding very basic
      documentation to two major components of the capabilities XML.
      These stubs are intended to be enhanced in the future.
      Signed-off-by: NMichal Privoznik <mprivozn@redhat.com>
      e9f4729a
    • M
      vircaps2xmltest: Introduce basic testing · 6af06232
      Michal Privoznik 提交于
      For now only one test is introduced. It's purpose in life
      is to check we don't break NUMA host distances XML format.
      Signed-off-by: NMichal Privoznik <mprivozn@redhat.com>
      6af06232
    • J
      libxl: add migration support · 9b8d6e1e
      Jim Fehlig 提交于
      This patch adds initial migration support to the libxl driver,
      using the VIR_DRV_FEATURE_MIGRATION_PARAMS family of migration
      functions.
      Signed-off-by: NJim Fehlig <jfehlig@suse.com>
      9b8d6e1e
    • J
      libxl: introduce libxlDomainDefCheckABIStability · d9a099a4
      Jim Fehlig 提交于
      Introduce a simple libxlDomainDefCheckABIStability() function that
      can be used check ABI stability between two virDomainDef objects.
      Signed-off-by: NJim Fehlig <jfehlig@suse.com>
      d9a099a4
    • E
      maint: detect VPATH builds when checking for gnulib update · 3cbd3b8e
      Eric Blake 提交于
      I accidentally typed 'make' in the srcdir of a VPATH build, and
      was surprised to see this:
      
      $ make
      /bin/sh: s/^[ +-]//;s/ .*//: No such file or directory
      INFO: gnulib update required; running ./autogen.sh first
      make: -n: Command not found
      ./autogen.sh
      I am going to run ./configure with no arguments - if you wish
      to pass any to it, please specify them on the ./autogen.sh command line.
      running bootstrap...
      ./bootstrap: Bootstrapping from checked-out libvirt sources...
      ./bootstrap: getting gnulib files...
      
      Oops - we're trying to execute some fairly bogus command names,
      and then trying to configure in-tree (which breaks all existing
      VPATH builds, since automake refuses to do a VPATH build if it
      detects an in-tree configure).  The third line (executing "-n")
      is fixed by updating to the latest gnulib; the rest of the problem
      is fixed by copying the same filtering in our cfg.mk as what
      gnulib just added, so that we avoid any $(shell) invocations which
      in turn depend on variables that are only populated by a working
      Makefile.  With that in place, we are back to the much nicer:
      
      $ make
      There seems to be no Makefile in this directory.
      You must run ./configure before running 'make'.
      make: *** [abort-due-to-no-makefile] Error 1
      
      Additionally, although harder to see - there was a trailing space in
      the message warning us that autogen would run an in-tree configure.
      
      * .gnulib: Update to latest, in part for maint.mk improvements.
      * cfg.mk (_update_required): Don't check for update in
      unconfigured directory.
      * autogen.sh (no_git): Drop trailing space.
      Signed-off-by: NEric Blake <eblake@redhat.com>
      3cbd3b8e