1. 28 10月, 2011 13 次提交
    • D
      Add client side support for FD passing · 36a9c83d
      Daniel P. Berrange 提交于
      Extend the RPC client code to allow file descriptors to be sent
      to the server with calls, and received back with replies.
      
      * src/remote/remote_driver.c: Stub extra args
      * src/libvirt_private.syms, src/rpc/virnetclient.c,
        src/rpc/virnetclient.h, src/rpc/virnetclientprogram.c,
        src/rpc/virnetclientprogram.h: Extend APIs to allow
        FD passing
      36a9c83d
    • D
      Extend RPC protocol to allow FD passing · b0f996a6
      Daniel P. Berrange 提交于
      Define two new RPC message types VIR_NET_CALL_WITH_FDS and
      VIR_NET_REPLY_WITH_FDS. These message types are equivalent
      to VIR_NET_CALL and VIR_NET_REPLY, except that between the
      message header, and payload there is a 32-bit integer field
      specifying how many file descriptors have been passed.
      
      The actual file descriptors are sent/recv'd out of band.
      
      * src/rpc/virnetmessage.c, src/rpc/virnetmessage.h,
        src/libvirt_private.syms: Add support for handling
        passed file descriptors
      * src/rpc/virnetprotocol.x: Extend protocol for FD
        passing
      b0f996a6
    • D
      Add APIs for virNetSocket for sending/receiving file descriptors · 018044c8
      Daniel P. Berrange 提交于
      Add APIs to the virNetSocket object, to allow file descriptors
      to be sent/received over UNIX domain socket connections
      
      * src/rpc/virnetsocket.c, src/rpc/virnetsocket.h,
        src/libvirt_private.syms: Add APIs for FD send/recv
      018044c8
    • D
      Wire up QEMU implementation for virDomainOpenGraphics · f877fed3
      Daniel P. Berrange 提交于
      The QEMU monitor command 'add_client' can be used to connect to
      a VNC or SPICE graphics display. This allows for implementation
      of the virDomainOpenGraphics API
      
      * src/qemu/qemu_driver.c: Implement virDomainOpenGraphics
      * src/qemu/qemu_monitor.c, src/qemu/qemu_monitor.h,
        src/qemu/qemu_monitor_json.c, src/qemu/qemu_monitor_json.h,
        src/qemu/qemu_monitor_text.c, src/qemu/qemu_monitor_text.h:
        Add binding for 'add_client' command
      f877fed3
    • D
      Extend graphics event to include UNIX socket · 6aa27da2
      Daniel P. Berrange 提交于
      Not all VNC/SPICE servers use a TCP socket for their connections.
      It is possible to configure a UNIX socket server. The graphics
      event must thus include a UNIX socket address type.
      
      * include/libvirt/libvirt.h.in: Add UNIX socket address type
        for graphics event
      * src/qemu/qemu_monitor_json.c: Add 'unix' string to address
        type enum
      6aa27da2
    • D
      Introduce the virDomainOpenGraphics API · 9d96f1ce
      Daniel P. Berrange 提交于
      The virDomainOpenGraphics API allows a libvirt client to pass in
      a file descriptor for an open socket pair, and get it connected
      to the graphics display of the guest. This is limited to working
      with local libvirt hypervisors connected over a UNIX domain
      socket, since it will use UNIX FD passing
      
      * include/libvirt/libvirt.h.in: Define virDomainOpenGraphics
      * src/driver.h: Define driver for virDomainOpenGraphics
      * src/libvirt_public.syms, src/libvirt.c: Entry point for
        virDomainOpenGraphics
      * src/libvirt_internal.h: VIR_DRV_FEATURE_FD_PASSING
      9d96f1ce
    • D
      Remove trailing whitespace from all xfig files · 5eb3df8b
      Daniel P. Berrange 提交于
      The 5th line of every xfig file has 'Letter   ' which
      annoys GITs trailing-whitespace commit hook. Hand edit
      the files to remove that trailing whitespace
      
      * docs/*.fig: Remove trailing whitespace
      5eb3df8b
    • D
      Add documentation about migration. · a7847844
      Daniel P. Berrange 提交于
      This adds a page documenting many aspects of migration:
      
       - The types of migration (managed direct, p2p, unmanaged direct)
       - Data transports (native, tunnelled)
       - Migration URIs
       - Config file handling
       - Example scenarios
      
      * libvirt.css: Rules for data tables and diagrams
      * Makefile.am: Include extra png/fig files
      * migration-managed-direct.fig, migration-managed-direct.png,
        migration-managed-direct.png, migration-managed-p2p.png,
        migration-native.fig, migration-native.png,
        migration-tunnel.fig, migration-tunnel.png,
        migration-unmanaged-direct.fig, migration-unmanaged-direct.png:
        Diagrams of migration
      * migration.html.in, sitemap.html.in: New migration doc
      a7847844
    • R
      virsh: Fix error message on vol-create-from failure · 6b5c9936
      Ryota Ozaki 提交于
      If vol-create-from is failed due to 'input volume not found',
      virsh outputs like this:
        $ sudo virsh vol-create-from testpool test-vol.xml test.img
        error: failed to get vol 'test.img', specifying --pool might help
        error: Storage volume not found: no storage vol with matching path
      However, '--pool' is incorrect because it is already specified as
      second argument ('testpool' in this case). It should be "--inputpool".
      
      The patch fixes this by using pooloptname, which will be "inputpool"
      in this case and "pool" in other cases, as error message.
      6b5c9936
    • T
      bridge: modify for use when sVirt is enabled with qemu · 27908453
      Tyler Coumbes 提交于
      This refactors the TAP creation code out of brAddTap into a new
      function brCreateTap to allow it to be used on its own. I have also
      changed ifSetInterfaceMac to brSetInterfaceMac and exported it since
      it is will be needed by code outside of util/bridge.c in the next
      patch.
      
       AUTHORS                 |    1 +
       src/libvirt_bridge.syms |    2 +
       src/util/bridge.c       |  116 +++++++++++++++++++++++++++++++----------------
       src/util/bridge.h       |    9 ++++
       4 files changed, 89 insertions(+), 39 deletions(-)
      27908453
    • J
      Use virXMLSaveFile when writing XML config · c0d9dfe2
      Jiri Denemark 提交于
      c0d9dfe2
    • J
      Introduce virXMLSaveFile as a wrapper for virFileRewrite · fef8127c
      Jiri Denemark 提交于
      Every time we write XML into a file we call virEmitXMLWarning to write a
      warning that the file is automatically generated. virXMLSaveFile
      simplifies this into a single step and makes rewriting existing XML file
      safe by using virFileRewrite internally.
      fef8127c
    • J
      Introduce virFileRewrite for safe file rewrite · 559644dd
      Jiri Denemark 提交于
      When saving config files we just overwrite old content of the file. In
      case something fails during that process (e.g. disk gets full) we lose
      both old and new content. This patch makes the process more robust by
      writing the new content into a separate file and only if that succeeds
      the original file is atomically replaced with the new one.
      559644dd
  2. 27 10月, 2011 11 次提交
    • D
      Add a systemtap script for watching QEMU monitor interactions · 9b76b08a
      Daniel P. Berrange 提交于
      This change adds some systemtap/dtrace probes to the QEMU monitor
      client code. In particular it allows watching of all operations
      for a VM
      
      * examples/systemtap/qemu-monitor.stp: Watch all monitor commands
      * src/Makefile.am: Passing libdir/bindir/sbindir to dtrace2systemtap.pl
      * src/dtrace2systemtap.pl: Accept libdir/bindir/sbindir as args
        and look for '# binary:' comment to mark probes against libvirtd
        vs libvirt.so
      * src/qemu/qemu_monitor.c, src/qemu/qemu_monitor_json.c,
        src/qemu/qemu_monitor_text.c: Add probes for key functions
      9b76b08a
    • P
      lxc: Revert zeroing count of allocated items if VIR_REALLOC_N fails · 95d3b4de
      Peter Krempa 提交于
      Previous commit clears number of items alocated in lxcSetupLoopDevices
      if VIR_REALLOC_N fails. In that case, the pointer is not NULL, and
      causes leaking FDs that have been allocated.
      
       *  src/lxc/lxc_controller.c: revert zeroing array size
      95d3b4de
    • D
      Fix typo in virFileAccessibleAs · 838d8c1b
      Daniel P. Berrange 提交于
      * src/util/util.c: s/git_t/gid_t/ in parameter list of virFileAccessibleAs
      838d8c1b
    • A
      lxc: avoid null deref on lxcSetupLoopDevices failure · 3fd2b1e9
      Alex Jia 提交于
      If the function lxcSetupLoopDevices(def, &nloopDevs, &loopDevs) failed,
      the variable loopDevs will keep a initial NULL value, however, the
      function VIR_FORCE_CLOSE(loopDevs[i]) will directly deref it.
      
      This patch also fixes returning a bogous number of devices from
      lxcSetupLoopDevices on an error path.
      
      * rc/lxc/lxc_controller.c: fixed a null pointer dereference.
      Signed-off-by: NAlex Jia <ajia@redhat.com>
      3fd2b1e9
    • A
      lxc: avoid missing '{' in the function · d2dff425
      Alex Jia 提交于
      Cppcheck detected a syntaxError on lxcDomainInterfaceStats.
      
      * src/lxc/lxc_driver.c: fixed missing '{' in the function lxcDomainInterfaceStats.
      Signed-off-by: NAlex Jia <ajia@redhat.com>
      d2dff425
    • E
      qemu: simplify use of HAVE_YAJL · 6889f33e
      Eric Blake 提交于
      Rather than making all clients of monitor commands that are JSON-only
      check whether yajl support was compiled in, it is simpler to just
      avoid setting the capability bit up front if we can't use the capability.
      
      * src/qemu/qemu_capabilities.c (qemuCapsComputeCmdFlags): Only set
      capability bit if we also have yajl library to use it.
      * src/qemu/qemu_driver.c (qemuDomainReboot): Drop #ifdefs.
      * src/qemu/qemu_process.c (qemuProcessStart): Likewise.
      * tests/qemuhelptest.c (testHelpStrParsing): Pass test even
      without yajl.
      * tests/qemuxml2argvtest.c (mymain): Simplify use of json flag.
      * tests/qemuxml2argvdata/qemuxml2argv-disk-drive-error-*.args:
      Update expected results to match.
      6889f33e
    • E
      snapshot: minor cleanups from reviewing indentation · cfa61a95
      Eric Blake 提交于
      Break some long lines, and use more efficient functions when possible,
      such as relying on virBufferEscapeString to skip output on a NULL arg.
      Ensure that output does not embed newlines, since auto-indent won't
      work in those situations.
      
      * src/conf/domain_conf.c (virDomainTimerDefFormat): Break output lines.
      (virDomainDefFormatInternal, virDomainDiskDefFormat)
      (virDomainActualNetDefFormat, virDomainNetDefFormat)
      (virDomainHostdevDefFormat): Minor cleanups.
      cfa61a95
    • E
      snapshot: simplify indentation of disk encryption xml · 4d8e20f6
      Eric Blake 提交于
      Use auto-indent in more places.
      
      * src/conf/storage_encryption_conf.h (virStorageEncryptionFormat):
      Drop parameter.
      * src/conf/storage_encryption_conf.c (virStorageEncryptionFormat)
      (virStorageEncryptionSecretFormat): Simplify with auto-indent.
      * src/conf/domain_conf.c (virDomainDiskDefFormat): Adjust caller.
      * src/conf/storage_conf.c (virStorageVolTargetDefFormat): Likewise.
      4d8e20f6
    • E
      snapshot: simplify indentation of nwfilter · 46e1a426
      Eric Blake 提交于
      Fixing this involved some refactoring of common code out of
      domain_conf and nwfilter_conf into nwfilter_params.
      
      * src/conf/nwfilter_params.h (virNWFilterFormatParamAttributes):
      Adjust signature.
      * src/conf/nwfilter_params.c (_formatParameterAttrs)
      (virNWFilterFormatParamAttributes): Adjust indentation handling,
      and handle filterref here.
      (formatterParam): Delete unused struct.
      * src/conf/domain_conf.c (virDomainNetDefFormat): Adjust caller.
      * src/conf/nwfilter_conf.c (virNWFilterIncludeDefFormat): Likewise.
      46e1a426
    • E
      storage: avoid null deref on qemu-img failure · c04beb5d
      Eric Blake 提交于
      Detected by Coverity.  Only possible if qemu-img gives bogus output,
      but we might as well be robust.
      
      * src/storage/storage_backend.c
      (virStorageBackendQEMUImgBackingFormat): Check for strstr failure.
      c04beb5d
    • E
      build: avoid RHEL 5 build failure on LXC · 2dee8965
      Eric Blake 提交于
      Per the discussion here, LXC on RHEL 5 makes no sense.
      https://www.redhat.com/archives/libvir-list/2011-September/msg01169.html
      
      * configure.ac (with_lxc): Reject RHEL 5.x LXC as too old.
      2dee8965
  3. 25 10月, 2011 13 次提交
    • E
      build: use gnulib fdatasync · 9cf70dad
      Eric Blake 提交于
      Commit 1726a736 hacked around MacOS' lack of fdatasync, since
      gnulib did not have it at the time.  But now that we use newer
      gnulib, we can avoid the hack.
      
      * bootstrap.conf (gnulib_modules): Add fdatasync.
      * configure.ac (AC_CHECK_FUNCS_ONCE): Drop our own check.
      9cf70dad
    • D
      Add REMOTE_PROC_DOMAIN_EVENT_DISK_CHANGE to remote_protocol-structs · 806d4d81
      Daniel P. Berrange 提交于
      * src/remote_protocol-structs: Add new event
      806d4d81
    • S
      nwfilter: extend schema to support new targets · 552fe4cc
      Stefan Berger 提交于
      Extend the nwfilter schema to support the continue and return targets.
      552fe4cc
    • M
      util: Add virFileAccessibleAs to private symbols · a877575a
      Michal Privoznik 提交于
      Commit 458b7099 introduced this
      function. However it was not added into libvirt_private.syms so
      the compilation may not succeed on some hosts.
      a877575a
    • M
      startupPolicy: Emit event on disk source dropping · baf2ff7e
      Michal Privoznik 提交于
      If a disk source gets dropped because it is not accessible,
      mgmt application might want to be informed about this. Therefore
      we need to emit an event. The event presented in this patch
      is however a bit superset of what written above. The reason is simple:
      an intention to be easily expanded, e.g. on 'user ejected disk
      in guest' events. Therefore, callback gets source string and disk alias
      (which should be unique among a domain) and reason (an integer);
      baf2ff7e
    • M
      qemu: implement startupPolicy · 12ba4322
      Michal Privoznik 提交于
      This patch implements on_missing feature in qemu driver.
      Upon qemu startup process an accessibility of CDROMs
      and floppy disks is checked. The source might get dropped
      if unavailable and on_missing is set accordingly.
      No event is emit thought. Look for follow up patch.
      12ba4322
    • M
      qemu: Move device alias assigning before command line construction · b8fbe5d5
      Michal Privoznik 提交于
      This patch is rather cosmetic as it only moves device alias
      assignation from command line construction just before that.
      However, it is needed in connotation of previous and next patch.
      b8fbe5d5
    • M
      util: Create virFileAccessibleAs function · 458b7099
      Michal Privoznik 提交于
      This function checks if a given path is accessible under
      given uid and gid.
      458b7099
    • M
      conf: Introduce optional startupPolicy attribute for cdrom and floppy · e5a84d74
      Michal Privoznik 提交于
      This attribute says what to do with cdrom (or floppy) if
      the source is missing. It accepts:
      - mandatory - fail if missing for any reason (the default)
      - requisite - fail if missing on boot up, drop if missing on
                    migrate/restore/revert
      - optional  - drop if missing at any start attempt.
      
      However, this patch introduces only XML part of this new
      functionality.
      e5a84d74
    • E
      storage: make previous leak less likely to regress · b1836a25
      Eric Blake 提交于
      Splitting into two functions allows the user to call the right
      function, rather than having to remember that a *Free function is
      an exception to the rule.
      
      * src/conf/storage_conf.h (virStoragePoolSourceClear): New function.
      * src/libvirt_private.syms (storage_conf.h): Export it.
      * src/conf/storage_conf.c (virStoragePoolSourceFree): Split...
      (virStoragePoolSourceClear): ...into new function.
      (virStoragePoolDefFree, virStoragePoolDefParseSourceString):
      Update callers.
      * src/test/test_driver.c (testStorageFindPoolSources): Likewise.
      * src/storage/storage_backend_fs.c
      (virStorageBackendFileSystemNetFindPoolSourcesFunc)
      (virStorageBackendFileSystemNetFindPoolSources): Likewise.
      * src/storage/storage_backend_iscsi.c
      (virStorageBackendISCSIFindPoolSources): Likewise.
      * src/storage/storage_backend_logical.c
      (virStorageBackendLogicalFindPoolSources): Likewise.
      b1836a25
    • E
      storage: plug iscsi memory leak · 79052a76
      Eric Blake 提交于
      Detected by Coverity.  virStoragePoolSourceFree does not free the
      actual passed-in pointer.  A bigger patch would be to rename it
      virStoragePoolSourceClear to match behavior, or even split it into
      two functions depending on needed behavior; but this is the minimal
      fix to the one location out of eight that leaked memory.
      
      * src/storage/storage_backend_iscsi.c
      (virStorageBackendISCSIFindPoolSources): Free memory.
      79052a76
    • E
      waitpid: improve safety · 69d044c0
      Eric Blake 提交于
      Based on a report by Coverity.  waitpid() can leak resources if it
      fails with EINTR, so it should never be used without checking return
      status.  But we already have a helper function that does that, so
      use it in more places.
      
      * src/lxc/lxc_container.c (lxcContainerAvailable): Use safer
      virWaitPid.
      * daemon/libvirtd.c (daemonForkIntoBackground): Likewise.
      * tests/testutils.c (virtTestCaptureProgramOutput, virtTestMain):
      Likewise.
      * src/libvirt.c (virConnectAuthGainPolkit): Simplify with virCommand.
      69d044c0
    • E
      qemu: avoid leaking uninit data from hotplug to dumpxml · 2c27dfae
      Eric Blake 提交于
      Detected by Coverity.  Both text and JSON monitors set only the
      bus and unit fields, which means driveAddr.controller spends
      life as garbage on the stack, and is then memcpy()'d into the
      in-memory representation which the user can see via dumpxml.
      
      * src/qemu/qemu_hotplug.c (qemuDomainAttachSCSIDisk): Only copy
      defined fields.
      2c27dfae
  4. 24 10月, 2011 1 次提交
    • R
      virsh: Fix vol-info's 'Type' output · 9981fc58
      Ryota Ozaki 提交于
      We have a new vol type "dir" in addition to "file" and "block", but
      virsh doesn't know it. Fix it.
      
      Additionally, the patch lets virsh output "unknown" if not matched
      any of them.
      9981fc58
  5. 21 10月, 2011 2 次提交