1. 03 3月, 2010 13 次提交
    • L
      Fix domain restore for files on root-squash NFS · a03121bc
      Laine Stump 提交于
      If qemudDomainRestore fails to open the domain save file, create a
      pipe, then fork a process that does setuid(qemu_user) and opens the
      file, then reads this file and stuffs it into the pipe. the parent
      libvirtd process will use the other end of the pipe as its fd, then
      reap the child process after it's done reading.
      
      This makes domain restore work on a root-squash NFS share that is only
      visible to the qemu user.
      
      * src/qemu/qemu_driver.c: add new qemudOpenAsUID() helper function,
        and use it in qemudDomainRestore() if reading as root directly failed.
      a03121bc
    • D
      Fix USB/PCI device address aliases in QEMU hotplug driver · 9882123d
      Daniel P. Berrange 提交于
      The USB/PCI device hotplug code for the QEMU driver was forgetting
      to allocate a unique device alias.
      
      * src/qemu/qemu_driver.c: Fill in device alias for USB/PCI devices
      9882123d
    • D
      Fix detection of errors in QEMU device_add command · 44f68729
      Daniel P. Berrange 提交于
      The code assumed that 'device_add' returned an empty string upon
      success. This is not true, it sometimes prints random debug info.
      THus we need to check for an explicit fail string
      
      * src/qemu/qemu_monitor_text.c: Fix error checking of the device_add
        monitor command
      44f68729
    • E
      esx: don't ignore failure on close · a8464c51
      Eric Blake 提交于
      Another warning caught by coverity.  Continue to perform best-effort
      closing and resource release, but warn the caller about the failure.
      
      * src/esx/esx_driver.c (esxClose): Return an error on failure to close.
      a8464c51
    • E
      uml: avoid crash on partial read · 4acbb298
      Eric Blake 提交于
      Coverity detected a potential dereference of uninitialized memory
      if recvfrom got cut short.
      
      * src/uml/uml_driver.c (umlMonitorCommand): Validate complete read
      prior to dereferencing res.
      4acbb298
    • J
      Fix safezero() · a64e3b3e
      Jiri Denemark 提交于
      Various safezero() implementations used either -1, errno or -errno
      return values. This patch fixes them all to return -1 and set errno
      appropriately.
      
      There was also a bug in size parameter passed to safewrite() which could
      result in an attempt to write gigabytes out of a megabyte buffer.
      Signed-off-by: NJiri Denemark <jdenemar@redhat.com>
      a64e3b3e
    • D
      Fix QEMU domain state after a save attempt fails · cf104533
      Daniel P. Berrange 提交于
      When a VM save attempt failed, the VM would be left in a paused
      state. It is neccessary to resume CPU execution upon failure
      if it was running originally
      
      * src/qemu/qemu_driver.c: Resume CPUs upon save failure
      cf104533
    • D
      Support job cancellation in QEMU driver · 04c7abd9
      Daniel P. Berrange 提交于
      This supports cancellation of jobs for the QEMU driver against
      the virDomainMigrate, virDomainSave and virDomainCoreDump APIs.
      It is not yet supported for the virDomainRestore API, although
      it is desirable.
      
      * src/qemu/qemu_driver.c: Issue 'migrate_cancel' command if
        virDomainAbortJob is issued during a migration operation
      * tools/virsh.c: Add a domjobabort command
      04c7abd9
    • D
      Remote driver implementation for the virDomainAbortJob APi · b1a7ebfd
      Daniel P. Berrange 提交于
      This defines the wire protocol for the new API
      
      * src/remote/remote_protocol.x: Wire protocol definition
      * src/remote/remote_driver.c,daemon/remote.c: Client and server
        side implementation
      * daemon/remote_dispatch_args.h, daemon/remote_dispatch_prototypes.h,
        daemon/remote_dispatch_table.h, src/remote/remote_protocol.c,
        src/remote/remote_protocol.h: Re-generate from remote_protocol.x
      b1a7ebfd
    • D
      Wire up internal entry points for virDomainAbortJob API · 0d8aa35f
      Daniel P. Berrange 提交于
      This provides the internal glue for the driver API
      
      * src/driver.h: Internal API contract
      * src/libvirt.c, src/libvirt_public.syms: Connect public API
        to driver API
      * src/esx/esx_driver.c, src/lxc/lxc_driver.c, src/opennebula/one_driver.c,
        src/openvz/openvz_driver.c, src/phyp/phyp_driver.c,
        src/qemu/qemu_driver.c, src/remote/remote_driver.c,
        src/test/test_driver.c src/uml/uml_driver.c, src/vbox/vbox_tmpl.c,
        src/xen/xen_driver.c: Stub out entry points
      0d8aa35f
    • D
      Add QEMU driver support for job info on migration ops · 0d3eee7f
      Daniel P. Berrange 提交于
      Introduce support for  virDomainGetJobInfo in the QEMU driver. This
      allows for monitoring of any API that uses the 'info migrate' monitor
      command. ie virDomainMigrate, virDomainSave and virDomainCoreDump
      
      Unfortunately QEMU does not provide a way to monitor incoming migration
      so we can't wire up virDomainRestore yet.
      
      The virsh tool gets a new command 'domjobinfo' to query status
      
      * src/qemu/qemu_driver.c: Record virDomainJobInfo and start time
        in qemuDomainObjPrivatePtr objects. Add generic shared handler
        for calling 'info migrate' with all migration based APIs.
      * src/qemu/qemu_monitor_text.c: Fix parsing of 'info migration' reply
      * tools/virsh.c: add new 'domjobinfo' command to query progress
      0d3eee7f
    • D
      Remote driver implmentation of job info API · b85a5340
      Daniel P. Berrange 提交于
      * src/remote/remote_protocol.x: Define wire protocol format
        for virDomainGetJobInfo API
      * src/remote/remote_driver.c, daemon/remote.c: Implement client
        and server marshalling code for virDomainGetJobInfo()
      * daemon/remote_dispatch_args.h, daemon/remote_dispatch_prototypes.h
        daemon/remote_dispatch_ret.h, daemon/remote_dispatch_table.h,
        src/remote/remote_protocol.c, src/remote/remote_protocol.h: Rebuild
        files from src/remote/remote_protocol.x
      b85a5340
    • D
      Stub out internal driver entry points for job processing · 92bd859a
      Daniel P. Berrange 提交于
      The internal glue layer for the new pubic API
      
      * src/driver.h: Define internal driver API contract
      * src/libvirt.c, src/libvirt_public.syms: Wire up public
        API to internal driver API
      * src/esx/esx_driver.c, src/lxc/lxc_driver.c, src/opennebula/one_driver.c,
        src/openvz/openvz_driver.c, src/phyp/phyp_driver.c,
        src/qemu/qemu_driver.c, src/remote/remote_driver.c,
        src/test/test_driver.c, src/uml/uml_driver.c, src/vbox/vbox_tmpl.c,
        src/xen/xen_driver.c: Stub new entry point
      92bd859a
  2. 02 3月, 2010 15 次提交
    • E
      build: silence coverity warning in node_device · 84ef5aec
      Eric Blake 提交于
      All other uses of get_str_prop in this file that ignored
      failure explicitly cast to void.
      
      * src/node_device/node_device_hal.c (dev_create): Silence coverity
      warning.
      84ef5aec
    • R
      Fix error messages when parsing USB devices in QEMU · bc0f737d
      Rolf Eike Beer 提交于
      A number of the error messages raised when parsing USB devices
      refered to PCI devices by mistake
      
      * src/qemu/qemu_conf.c: s/PCI/USB/ in qemuParseCommandLineUSB()
      bc0f737d
    • R
      Fix USB hotplug device string in QEMU driver · 06973f70
      Rolf Eike Beer 提交于
      The USB hotplug method was mistakenly generating a PCI address
      string
      
      * src/qemu/qemu_driver.c: Fix USB hotplug device string
      06973f70
    • W
      Use device_del to remove SCSI controllers · 8540dadb
      Wolfgang Mauerer 提交于
      when the underlying qemu supports the drive/device model and the
      controller has been added this way.
      * src/qemu/qemu_driver.c: use qemuMonitorDelDevice() when detaching
        PCI controller and if supported
      * src/qemu/qemu_monitor.[ch]: add new qemuMonitorDelDevice() function
      * src/qemu/qemu_monitor_json.[ch]: JSON backend for DelDevice command
      * src/qemu/qemu_monitor_text.[ch]: Text backend for DelDevice command
      8540dadb
    • W
      Fix PCI address handling when controllers are deleted · 55946f23
      Wolfgang Mauerer 提交于
      * src/qemu/qemu_driver.c: in qemudDomainDetachPciControllerDevice()
        when a controller is not present in the system anymore, the PCI
        address must be deleted from libvirt's hashtable because it can
        be re-used for other purposes.
      55946f23
    • W
      Fix data structure handling when controllers are attached · 24cc058e
      Wolfgang Mauerer 提交于
      * src/qemu/qemu_driver.c: in qemudDomainAttachDevice(), one must not
        delete the data part when the operation succeeds because it is
        required later on. The correct pattern to handlethe parsed
        representation of the device information on success
        is dev->data.controller = NULL; virDomainDeviceDefFree(dev);,
        which leaves the structure pointed at by data in memory.
      24cc058e
    • W
      Tiny spelling fix · 553447ac
      Wolfgang Mauerer 提交于
      553447ac
    • J
      x86Decode: avoid NULL-dereference upon questionable input · e749d776
      Jim Meyering 提交于
      * src/cpu/cpu_x86.c (x86Decode): Don't dereference NULL when passed
      a NULL "models" pointer, or when passed a nonzero "nmodels" value
      and a corresponding NULL models[i].
      e749d776
    • J
      phypUUIDTable_Push: do not corrupt output stream upon partial write · 23e93d95
      Jim Meyering 提交于
      * src/phyp/phyp_driver.c (phypUUIDTable_Push): Move incr/decr
      of ptr/nread into the loop where those variables are used.
      Also, remove "exit" label and just-preceding "goto".
      23e93d95
    • J
      openvzDomainDefineCmd: remove useless increment · 77d118b4
      Jim Meyering 提交于
      * src/openvz/openvz_driver.c (openvzDomainDefineCmd): Remove
      useless increment of "max_veid".
      77d118b4
    • D
      Allow configurable timezones with QEMU · 74042b8f
      Daniel P. Berrange 提交于
      Allow an arbitrary timezone with QEMU by setting the $TZ environment
      variable when launching QEMU
      
      * src/qemu/qemu_conf.c: Set TZ environment variable if a timezone
        is requested
      * tests/qemuxml2argvtest.c: Add test case for timezones
      * tests/qemuxml2argvdata/qemuxml2argv-clock-france.xml,
        tests/qemuxml2argvdata/qemuxml2argv-clock-france.args: Data
        for timezone tests
      74042b8f
    • D
      Allow a timezone to be specified instead of sync to host timezone · e4d7433e
      Daniel P. Berrange 提交于
      This extends the XML to allow for
      
        <clock offset='timezone' timezone='Europe/Paris'/>
      
      This is useful if the admin has not configured any timezone on the
      host OS, but still wants to synchronize a guest to a specific one.
      
      * src/conf/domain_conf.h, src/conf/domain_conf.c: Support extra
        'timezone' attribute on clock configuration
      * docs/schemas/domain.rng: Add 'timezone' attribute
      * src/xen/xend_internal.c, src/xen/xm_internal.c: Reject configs
        with a configurable timezone
      e4d7433e
    • D
      Support variable clock offset mode in QEMU · 200c83b2
      Daniel P. Berrange 提交于
      This allows QEMU guests to be started with an arbitrary clock
      offset
      
      The test case can't actually be enabled, since QEMU argv expects
      an absolute timestring, and this will obviously change every
      time the test runs :-( Hopefully QEMU will allow a relative
      time offset in the future.
      
      * src/qemu/qemu_conf.c, src/qemu/qemu_conf.h: Use the -rtc arg
        if available to support variable clock offset mode
      * tests/qemuhelptest.c: Add QEMUD_CMD_FLAG_RTC for qemu 0.12.1
      * qemuxml2argvdata/qemuxml2argv-clock-variable.args,
        qemuxml2argvdata/qemuxml2argv-clock-variable.xml,
        qemuxml2argvtest.c: Test case, except we can't actually enable
        it yet.
      200c83b2
    • D
      Add new clock mode allowing variable adjustments · b9e2967a
      Daniel P. Berrange 提交于
      This introduces a third option for clock offset synchronization,
      that allows an arbitrary / variable adjustment to be set. In
      essence the XML contains the time delta in seconds, relative to
      UTC.
      
        <clock offset='variable' adjustment='123465'/>
      
      The difference from 'utc' mode, is that management apps should
      track adjustments and preserve them at next reboot.
      
      * docs/schemas/domain.rng: Schema for new clock mode
      * src/conf/domain_conf.c, src/conf/domain_conf.h: Parse
        new clock time delta
      * src/libvirt_private.syms, src/util/xml.c, src/util/xml.h: Add
        virXPathLongLong() method
      b9e2967a
    • D
      Change the internal domain conf representation of localtime/utc · eed2f8c3
      Daniel P. Berrange 提交于
      The XML will soon be extended to allow more than just a simple
      localtime/utc boolean flag. This change replaces the plain
      'int localtime' with a separate struct to prepare for future
      extension
      
      * src/conf/domain_conf.c, src/conf/domain_conf.h: Add a new
        virDomainClockDef structure
      * src/libvirt_private.syms: Export virDomainClockOffsetTypeToString
        and virDomainClockOffsetTypeFromString
      * src/qemu/qemu_conf.c, src/vbox/vbox_tmpl.c, src/xen/xend_internal.c,
        src/xen/xm_internal.c: Updated to use new structure for localtime
      eed2f8c3
  3. 01 3月, 2010 4 次提交
  4. 26 2月, 2010 6 次提交
  5. 25 2月, 2010 1 次提交
    • R
      Ignore SIGWINCH in remote client call to poll(2) (RHBZ#567931). · f4a43df5
      Richard Jones 提交于
      In bug 567931 we found that virt-top would exit occasionally
      when the terminal window was resized.  Tracking this down it
      turned out that SIGWINCH was being delivered to the process at
      exactly the point where the libvirt remote driver was calling
      poll(2) waiting for a reply from libvirtd.
      
      This caused the poll(2) call to be interrupted (returning errno
      EINTR).  However handling EINTR the same way as EAGAIN was not
      the solution to this problem since we found previously that this
      would break Ctrl-C handling (commit 47fec8ea).
      
      The correct solution is to mask out SIGWINCH for the duration
      of the poll(2) system call.  The per-thread mask is changed and
      restored immediately after the call.  Since we are using
      pthread_sigmask, this should not affect other threads, and
      since we restore the signal mask immediately afterwards it should
      not affect the current thread visibly either.  Other possibly
      problematic signals are SIGCHLD and SIGPIPE and these are
      masked too.
      
      Note use of ignore_value: It's not fatal if we cannot mask out
      SIGWINCH, and in any case pthread_sigmask never fails on Linux
      as long as you supply the correct arguments.
      
      I tested this patch and it cures the original problem with
      virt-top.
      f4a43df5
  6. 24 2月, 2010 1 次提交
    • D
      Format FS pools on creation · b738016b
      Dave Allan 提交于
      Create the filesystem on the partition used by the pool
      * configure.ac: check for mkfs availability
      * libvirt.spec.in: add extra require on util-linux for mkfs
      * src/storage/storage_backend_fs.c: run mkfs with the expected
        fs type when creating a filesystem pool
      b738016b