1. 02 8月, 2012 9 次提交
    • D
      Remove unused uuidstr variable from datatypes.c · 03be7ab5
      Daniel P. Berrange 提交于
      Several APIs in src/datatypes.c were formatting an UUID to a
      uuidstr variable and then not using it.
      03be7ab5
    • D
      Rewrite virAtomic APIs using GLib's atomic ops code · 0c9fd4cf
      Daniel P. Berrange 提交于
      There are a few issues with the current virAtomic APIs
      
       - They require use of a virAtomicInt struct instead of a plain
         int type
       - Several of the methods do not implement memory barriers
       - The methods do not implement compiler re-ordering barriers
       - There is no Win32 native impl
      
      The GLib library has a nice LGPLv2+ licensed impl of atomic
      ops that works with GCC, Win32, or pthreads.h that addresses
      all these problems. The main downside to their code is that
      the pthreads impl uses a single global mutex, instead of
      a per-variable mutex. Given that it does have a Win32 impl
      though, we don't expect anyone to seriously use the pthread.h
      impl, so this downside is not significant.
      
      * .gitignore: Ignore test case
      * configure.ac: Check for which atomic ops impl to use
      * src/Makefile.am: Add viratomic.c
      * src/nwfilter/nwfilter_dhcpsnoop.c: Switch to new atomic
        ops APIs and plain int datatype
      * src/util/viratomic.h: inline impls of all atomic ops
        for GCC, Win32 and pthreads
      * src/util/viratomic.c: Global pthreads mutex for atomic
        ops
      * tests/viratomictest.c: Test validate to validate safety
        of atomic ops.
      Signed-off-by: NDaniel P. Berrange <berrange@redhat.com>
      0c9fd4cf
    • D
      Remove manual one-shot global initializers · b49890de
      Daniel P. Berrange 提交于
      Remove the use of a manually run virLogStartup and
      virNodeSuspendInitialize methods. Instead make sure they
      are automatically run using VIR_ONCE_GLOBAL_INIT
      Signed-off-by: NDaniel P. Berrange <berrange@redhat.com>
      b49890de
    • P
      qemu: Add support for "none" USB controller · fbe87126
      Peter Krempa 提交于
      This patch enables the "none" USB controller for qemu guests and adds
      valdiation on hot-plugged devices if the guest has USB disabled.
      
      This patch also adds a set of tests to check parsing of domain XMLs that
      use the "none" controller and some forbidden situations concerning it.
      fbe87126
    • P
      domain_conf: Add helpers to verify if device configuration is valid · 317badb2
      Peter Krempa 提交于
      This patch adds helpers that validate domain's device configuration.
      This will be needed later on to verify devices being hot-plugged to
      guests. If the guest has no USB bus, then it's not valid to plug a USB
      device to that guest.
      317badb2
    • P
      domain_conf: Add USB controler model "none" · 09251897
      Peter Krempa 提交于
      Libvirt adds a USB controller to the guest even if the user does not
      specify any in the XML. This is due to back-compat reasons.
      
      To allow disabling USB for a guest this patch adds a new USB controller
      type "none" that disables USB support for the guest.
      09251897
    • O
      Fix indentions · 7ee395a8
      Osier Yang 提交于
      Some of the macros use tab, while the left use spaces, this patch
      change it to always use the spaces. And a few aligning fixes.
      7ee395a8
    • G
      storage: netfs and iscsi need option srcSpec for resource discovery · 40570488
      Guannan Ren 提交于
      The option 'srcSpec' to virsh command find-storage-pool-sources
      is optional for logical type of storage pool, but mandatory for
      netfs and iscsi type.
      When missing the option for netfs and iscsi, libvirt reports XML
      parsing error due to null string option srcSpec.
      
      before
      error: Failed to find any netfs pool sources
      error: (storage_source_specification):1: Document is empty
      (null)
      
      after:
      error: pool type 'iscsi' requires option --srcSpec for source discovery
      40570488
    • G
      57fb8d53
  2. 01 8月, 2012 18 次提交
    • M
      gitignore: Reorder alphabetically · 6c0cf395
      Michal Privoznik 提交于
      One of our latest patches added some files to .gitignore. However,
      not in the right place leaving the file not sorted. Since my git
      is set up to sort these files contents, fix this issue as it keeps
      showing up in git status.
      6c0cf395
    • J
      spec: Remove extra () with return statement · 1371cc52
      Jiri Denemark 提交于
      1371cc52
    • J
      build: Link security driver into daemon · ec5b7bd2
      Jiri Denemark 提交于
      Commit aae5cfb6 removed security driver
      from libvirt_la but forgot to link it into libvirtd in case libvirt is
      built without modules.
      ec5b7bd2
    • D
      Fix rpm build failures · 27df13f4
      Daniel Veillard 提交于
      The 'make check' was rebuilding the binaries just overrided,
      so for more safety also override the C program
      Also daemon-conf isn't built anymore so remove it from the list
      27df13f4
    • D
      Add missing parallels_utils.h to Makefile.am · 04cd70bf
      Daniel Veillard 提交于
      Otherwise the file is missing from the dist tarball and distcheck fails
      04cd70bf
    • D
      parallels: implement VM creation · 7024ddfc
      Dmitry Guryanov 提交于
      To create a new VM in Parallels Clud Server we should issue
      "prlctl create" command, and give path to the directory,
      where VM should be created. VM's storage will be in that
      directory later. So in this first version find out location
      of first VM's hard disk and create VM there.
      Signed-off-by: NDmitry Guryanov <dguryanov@parallels.com>
      7024ddfc
    • D
      parallels: add storage driver · aa296e6c
      Dmitry Guryanov 提交于
      Parallels Cloud Server has one serious discrepancy with libvirt:
      libvirt stores domain configuration files in one place, and storage
      files in other places (with the API of storage pools and storage volumes).
      Parallels Cloud Server stores all domain data in a single directory,
      for example, you may have domain with name fedora-15, which will be
      located in '/var/parallels/fedora-15.pvm', and it's hard disk image will be
      in '/var/parallels/fedora-15.pvm/harddisk1.hdd'.
      
      I've decided to create storage driver, which produces pseudo-volumes
      (xml files with volume description), and they will be 'converted' to
      real disk images after attaching to a VM.
      
      So if someone creates VM with one hard disk using virt-manager,
      at first virt-manager creates a new volume, and then defines a
      domain. We can lookup a volume by path in XML domain definition
      and find out location of new domain and size of its hard disk.
      Signed-off-by: NDmitry Guryanov <dguryanov@parallels.com>
      aa296e6c
    • D
      parallels: implement virDomainDefineXML operation for existing domains · e356f610
      Dmitry Guryanov 提交于
      Add parallelsDomainDefineXML function, it works only for existing
      domains for the present.
      
      It's too hard to convert libvirt's XML domain configuration into
      Parallel's one, so I've decided to compare virDomainDef structures:
      current domain definition and the one created from XML, given to
      the function. And change only different parameters.
      
      Currently only name, description, number of cpus, memory amount
      and video memory can be changed.
      
      Video device and console added, because libvirt supposes that
      VM must always have one video device, if there are some
      graphics and one console.
      Signed-off-by: NDmitry Guryanov <dguryanov@parallels.com>
      e356f610
    • D
      parallels: add support of VNC remote display · d71145ad
      Dmitry Guryanov 提交于
      Add support for reading VNC parameters of the VM.
      Signed-off-by: NDmitry Guryanov <dguryanov@parallels.com>
      d71145ad
    • D
      parallels: get info about serial ports · e172cd50
      Dmitry Guryanov 提交于
      Add support of collecting information about serial
      ports. This change is needed mostly as an example,
      support of other devices will be added later.
      Signed-off-by: NDmitry Guryanov <dguryanov@parallels.com>
      e172cd50
    • D
      parallels: implement functions for domain life cycle management · 0740e1bb
      Dmitry Guryanov 提交于
      Add functions for create/shutdown/destroy and suspend/resume domain.
      Signed-off-by: NDmitry Guryanov <dguryanov@parallels.com>
      0740e1bb
    • D
      parallels: add functions to list domains and get info · e93c33a9
      Dmitry Guryanov 提交于
      Parallels driver is 'stateless', like vmware or openvz drivers.
      It collects information about domains during startup using
      command-line utility prlctl. VMs in Parallels are identified by UUIDs
      or unique names, which can be used as respective fields in
      virDomainDef structure. Currently only basic info, like
      description, virtual cpus number and memory amount, is implemented.
      Querying devices information will be added in the next patches.
      
      Parallels doesn't support non-persistent domains - you can't run
      a domain having only disk image, it must always be registered
      in system.
      
      Functions for querying domain info have been just copied from
      test driver with some changes - they extract needed data from
      previously created list of virDomainObj objects.
      Signed-off-by: NDmitry Guryanov <dguryanov@parallels.com>
      e93c33a9
    • D
      add function virCommandNewVAList · 4033df7e
      Dmitry Guryanov 提交于
      Add function virCommandNewVAList which is equivalent to the
      virCommandNewArgList but with va_list instead of a variable number
      of arguments.
      Signed-off-by: NDmitry Guryanov <dguryanov@parallels.com>
      4033df7e
    • D
      parallels: add driver skeleton · cafc26ff
      Dmitry Guryanov 提交于
      Parallels Cloud Server is a cloud-ready virtualization
      solution that allows users to simultaneously run multiple virtual
      machines and containers on the same physical server.
      
      More information can be found here: http://www.parallels.com/products/pcs/
      Also beta version of Parallels Cloud Server can be downloaded there.
      Signed-off-by: NDmitry Guryanov <dguryanov@parallels.com>
      cafc26ff
    • M
      qemu: syntax fix · 2beed2da
      Marc-André Lureau 提交于
      Pushed without ack, under the trivial rule.
      2beed2da
    • D
      Only perform symbol check against libvirt.so · 8c63ff39
      Daniel P. Berrange 提交于
      The 'check-symfile' test case was checking the contents of
      libvirt.syms against libvirt.so + all of libvirt_driver_XXX.so
      This was in fact bogus - libvirt.syms should only refer to
      stuff in libvirt.so, but it had some symbols from the various
      driver modules in it too. Now that libvirt.syms has been
      fixed, the check-symfile test can be simplified to only
      consider libvirt.so
      8c63ff39
    • D
      Don't link nwfilter or secrets driver to libvirt.so · aae5cfb6
      Daniel P. Berrange 提交于
      The nwfilter and secrets drivers are both stateful and are already
      linked directly to libvirtd. Linking them to libvirt.so is thus
      wrong, likewise exporting their symbols in libvirt.so is wrong
      aae5cfb6
    • D
      Remove bogus libvirt_network.syms file · 5830c72e
      Daniel P. Berrange 提交于
      The network driver is stateful, so it is linked directly to libvirtd,
      rather than libvirt.so. Thus there are no network symbols to be exported
      in libvirt.so, and libvirt_network.syms can be deleted
      5830c72e
  3. 31 7月, 2012 5 次提交
    • E
      qemu: fix use after free · 665c8cde
      Eric Blake 提交于
      Detected by Coverity.
      
      * src/qemu/qemu_hotplug.c (qemuDomainAttachHostDevice): Avoid
      double free of usb on failure.
      665c8cde
    • J
      build: Don't export xenLinuxDomainBlockStats symbol · 73bc94c5
      Jiri Denemark 提交于
      The symbol is only used within Xen driver.
      73bc94c5
    • G
      build: distribute virsh related source files · b254cad9
      Guannan Ren 提交于
      In virsh.c, it includes multiple virsh source files, we need
      to have them distributed.
      b254cad9
    • E
      build: fix build without HAVE_CAPNG · 6f926c5e
      Eric Blake 提交于
      Otherwise, a build may fail with:
      
      lxc/lxc_conatiner.c: In function 'lxcContainerDropCapabilities':
      lxc/lxc_container.c:1662:46: error: unused parameter 'keepReboot' [-Werror=unused-parameter]
      
      * src/lxc/lxc_container.c (lxcContainerDropCapabilities): Mark
      parameter unused.
      6f926c5e
    • J
      daemon: Fix crash in virTypedParameterArrayClear · 6039a2cb
      Jiri Denemark 提交于
      Daemon uses the following pattern when dispatching APIs with typed
      parameters:
      
          VIR_ALLOC_N(params, nparams);
          virDomain*(dom, params, &nparams, flags);
          virTypedParameterArrayClear(params, nparams);
      
      In case nparams was originally set to 0, virDomain* API would fill it
      with the number of typed parameters it can provide and we would use this
      number (rather than zero) to clear params. Because VIR_ALLOC* returns
      non-NULL pointer even if size is 0, the code would end up walking
      through random memory. If we were lucky enough and the memory contained
      7 (VIR_TYPED_PARAM_STRING) at the right place, we would try to free a
      random pointer and crash.
      
      Let's make sure params stays NULL when nparams is 0.
      6039a2cb
  4. 30 7月, 2012 8 次提交
    • P
      conf: Remove callback from stream when freeing entries in console hash · ba226d33
      Peter Krempa 提交于
      When a domain has a active console connection and is destroyed the
      callback is called on private data that no longer exist causing a
      segfault.
      ba226d33
    • P
      conf: Remove dead code from virConsoleOpen() · 7550bc66
      Peter Krempa 提交于
      7550bc66
    • P
      python: Don't generate bodies for close callback functions · e72f55fa
      Peter Krempa 提交于
      Commit 6ed5a1b9 adds close callback
      functions to the public API but doesn't add python implementation. This
      patch sets the function to be written manually (to fix the build), but
      doesn't implement them yet.
      e72f55fa
    • D
      Improve error message in LXC startup with network is not active · ac97c2ba
      Daniel P. Berrange 提交于
      If an LXC container is using a virtual network and that network
      is not active, currently the user gets a rather unhelpful
      error message about tap device setup failure. Add an explicit
      check for whether the network is active, in exactly the same
      way as the QEMU driver
      ac97c2ba
    • D
      Remove tabs from all perl files & enforce this · 92c5924a
      Daniel P. Berrange 提交于
      The cfg.mk file rule to check for tab characters was not
      applied to perl files. Much of our Perl code is full of
      tabs as a result. Kill them, kill them all !
      92c5924a
    • D
      Add handling for reboots of LXC containers · cb612ee4
      Daniel P. Berrange 提交于
      The reboot() syscall is allowed by new kernels for LXC containers.
      The LXC controller can detect whether a reboot was requested
      (instead of a normal shutdown) by looking at the "init" process
      exit status. If a reboot was triggered, the exit status will
      record SIGHUP as the kill reason.
      
      The LXC controller has cleared all its capabilities, and the
      veth network devices will no longer exist at this time. Thus
      it cannot restart the container init process itself. Instead
      it emits an event which is picked up by the LXC driver in
      libvirtd. This will then re-create the container, using the
      same configuration as it was previously running with (ie it
      will not activate 'newDef').
      Signed-off-by: NDaniel P. Berrange <berrange@redhat.com>
      cb612ee4
    • D
      Allow CAP_SYS_REBOOT on new enough kernels · b46b1c76
      Daniel P. Berrange 提交于
      Check whether the reboot() system call is virtualized, and if
      it is, then allow the container to keep CAP_SYS_REBOOT.
      
      Based on an original patch by Serge Hallyn
      Signed-off-by: NDaniel P. Berrange <berrange@redhat.com>
      b46b1c76
    • D
      Run an RPC protocol over the LXC controller monitor · 9117fcb2
      Daniel P. Berrange 提交于
      This defines a new RPC protocol to be used between the LXC
      controller and the libvirtd LXC driver. There is only a
      single RPC message defined thus far, an asynchronous "EXIT"
      event that is emitted just before the LXC controller process
      exits. This provides the LXC driver with details about how
      the container shutdown - normally, or abnormally (crashed),
      thus allowing the driver to emit better libvirt events.
      
      Emitting the event in the LXC controller requires a few
      little tricks with the RPC service. Simply calling the
      virNetServiceClientSendMessage does not work, since this
      merely queues the message for asynchronous processing.
      In addition the main event loop is no longer running at
      the point the event is emitted, so no I/O is processed.
      
      Thus after invoking virNetServiceClientSendMessage it is
      necessary to mark the client as being in "delayed close"
      mode. Then the event loop is run again, until the client
      completes its close - this happens only after the queued
      message has been fully transmitted. The final complexity
      is that it is not safe to run virNetServerQuit() from the
      client close callback, since that is invoked from a
      context where the server is locked. Thus a zero-second
      timer is used to trigger shutdown of the event loop,
      causing the controller to finally exit.
      
      * src/Makefile.am: Add rules for generating RPC protocol
        files and dispatch methods
      * src/lxc/lxc_controller.c: Emit an RPC event immediately
        before exiting
      * src/lxc/lxc_domain.h: Record the shutdown reason
        given by the controller
      * src/lxc/lxc_monitor.c, src/lxc/lxc_monitor.h: Register
        RPC program and event handler. Add callback to let
        driver receive EXIT event.
      * src/lxc/lxc_process.c: Use monitor exit event to decide
        what kind of domain event to emit
      * src/lxc/lxc_protocol.x: Define wire protocol for LXC
        controller monitor.
      Signed-off-by: NDaniel P. Berrange <berrange@redhat.com>
      9117fcb2