1. 23 2月, 2010 8 次提交
  2. 22 2月, 2010 1 次提交
    • J
      Create raw storage files with O_DSYNC (again) · 9568c1d9
      Jiri Denemark 提交于
      Recently we introduced O_DSYNC flag when creating raw storage files to
      avoid filling all disk cache with dirty pages. However, the patch got
      lost when virStorageBackendCreateRaw was reworked using
      virFileOperation. Let's use O_DSYNC again.
      9568c1d9
  3. 21 2月, 2010 2 次提交
  4. 20 2月, 2010 6 次提交
    • D
      Fix daemon-conf invalid failures · b4bf5125
      David Allan 提交于
      The daemon-conf test would fail on my system if there was a system libvirtd
      running.  In the course of troubleshooting that problem, I discovered that the
      daemon-conf script would always fail if run by itself because it found the line:
      
      \# that each "PARAMETER = VALUE" line in this file have the parameter
      
      which it mistook for a line containing a parameter.  I have changed the test to
      avoid mistaking a line containing \"PARAMETER = VALUE\" for a parameter line.
      
      The corrupted config tests turned out to be failing because the test daemon was
      discovering the pid file from the running daemon and exiting before it processed
      the test config file.  Specifying the pid file for the corrupt config tests in
      the same way as for the valid config test solved that problem.
      b4bf5125
    • J
      virsh.c: avoid leak on OOM error path · 27fc6782
      Jim Meyering 提交于
      * tools/virsh.c (cmdCPUBaseline): Also free "buffer" and "list" upon OOM.
      27fc6782
    • J
      virBufferVSprintf: do not omit va_end(argptr) call · 72919f3d
      Jim Meyering 提交于
      * src/util/buf.c (virBufferVSprintf): Do not omit va_end(argptr).
      Improved-by: Daniel Veillard.
      72919f3d
    • J
      xend_internal.c: don't dereference NULL for unexpected input · 14ee6a66
      Jim Meyering 提交于
      * src/xen/xend_internal.c (xenDaemonDomainSetAutostart): Avoid a NULL
      dereference upon non-SEXPR_VALUE'd on_xend_start.  This bug was
      introduced by commit 37ce5600.
      14ee6a66
    • L
      Use virFileOperation hook function in virStorageBackendFileSystemVolBuild · 6ef20bb7
      Laine Stump 提交于
      There were a few operations on the storage volume file that were still
      being done as root, which will fail if the file is on a root-squashed
      NFS share. The result was that attempts to create a storage volume of
      type "raw" on a root-squashed NFS share would fail.
      
      This patch uses the newly introduced "hook" function in
      virFileOperation to execute all those file operations in the child
      process that's run under the uid that owns the file (and, presumably,
      has permission to write to the NFS share)
      
      * src/storage/storage_backend.c: use virFileOperation() in
        virStorageBackendCreateRaw, turning virStorageBackendCreateRaw()
        into a new createRawFileOpHook() hook
      6ef20bb7
    • L
      Rename virFileCreate to virFileOperation, add hook function · fbadc2b6
      Laine Stump 提交于
      It turns out it is also useful to be able to perform other operations
      on a file created while running as a different uid (eg, write things
      to that file), and possibly to do this to a file that already
      exists. This patch adds an optional hook function to the renamed (for
      more accuracy of purpose) virFileOperation; the hook will be called
      after the file has been opened (possibly created) and gid/mode
      checked/set, before closing it.
      
      As with the other operations on the file, if the VIR_FILE_OP_AS_UID
      flag is set, this hook function will be called in the context of a
      child process forked from the process that called virFileOperation.
      The implication here is that, while all data in memory is available to
      this hook function, any modification to that data will not be seen by
      the caller - the only indication in memory of what happened in the
      hook will be the return value (which the hook should set to 0 on
      success, or one of the standard errno values on failure).
      
      Another piece of making the function more flexible was to add an
      "openflags" argument. This arg should contain exactly the flags to be
      passed to open(2), eg O_RDWR | O_EXCL, etc.
      
      In the process of adding the hook to virFileOperation, I also realized
      that the bits to fix up file owner/group/mode settings after creation
      were being done in the parent process, which could fail, so I moved
      them to the child process where they should be.
      
      * src/util/util.[ch]: rename and rework virFileCreate-->virFileOperation,
        and redo flags in virDirCreate
      * storage/storage_backend.c, storage/storage_backend_fs.c: update the
        calls to virFileOperation/virDirCreate to reflect changes in the API,
        but don't yet take advantage of the hook.
      fbadc2b6
  5. 19 2月, 2010 16 次提交
    • D
      qemu: Check for IA64 kvm · 269556e5
      Dustin Xiong 提交于
      ACPI feature bit dropped: I asked internally if the -no-acpi option
      had any meaning for IA64, and was told 'probably not'.
      269556e5
    • C
      remote: Print ssh stderr on connection failure · 7c7b194c
      Cole Robinson 提交于
      7c7b194c
    • Y
      fix multiple veth problem for OpenVZ · ead3410f
      Yuji NISHIDA 提交于
      Fix multiple veth problem.
      NETIF setting was overwritten after first CT because any CT could not be
      found by name.
      * src/openvz/openvz_conf.c src/openvz/openvz_conf.h: add the
        openvzGetVEID lookup function
      * src/openvz/openvz_driver.c: use it in openvzDomainSetNetwork()
      ead3410f
    • C
      Better error reporting for failed migration · b97c24b2
      Chris Lalancette 提交于
      If the hostname as returned by "gethostname" resolves
      to "localhost" (as it does with the broken Fedora-12
      installer), then live migration will fail because the
      source will try to migrate to itself.  Detect this
      situation up-front and abort the live migration before
      we do any real work.
      
      * src/util/util.h src/util/util.c: add a new virGetHostnameLocalhost
        with an optional localhost check, and rewire virGetHostname() to use
        it
      * src/libvirt_private.syms: expose the new function
      * src/qemu/qemu_driver.c: use it in qemudDomainMigratePrepare2()
      b97c24b2
    • C
      Make virDomainObjFormat static · 8ba9e794
      Chris Lalancette 提交于
      * src/conf/domain_conf.c: make function static
      * src/conf/domain_conf.h: remove it from header
      8ba9e794
    • C
      Make an error message in PCI util code clearer · ee38d7e0
      Chris Lalancette 提交于
      * src/util/pci.c: update 2 message on pciRead errors
      ee38d7e0
    • S
      macvtap mac_filter support · b3e7890a
      Stefan Berger 提交于
      This patch adds the mac_filter support to the macvtap device.
      b3e7890a
    • J
      virsh: be careful to return "FALSE" upon OOM · 62f4ae15
      Jim Meyering 提交于
      * tools/virsh.c (cmdCPUBaseline): Add an explicit "return" statement
      after the "no_memory:" label.
      62f4ae15
    • J
      virBufferStrcat: do not skip va_end · 3f8de891
      Jim Meyering 提交于
      * src/util/buf.c (virBufferStrcat): Do not skip va_end due to
      an early return.
      3f8de891
    • J
      qparams.c: do not skip va_end, twice · 12ed08bc
      Jim Meyering 提交于
      * src/util/qparams.c (new_qparam_set, append_qparams): Do not skip
      va_end due to an early return.
      12ed08bc
    • J
      xenDaemonDomainSetAutostart: avoid appearance of impropriety · 37ce5600
      Jim Meyering 提交于
      * src/xen/xend_internal.c (xenDaemonDomainSetAutostart): Rewrite to
      avoid dereferencing the result of sexpr_lookup.  While in this
      particular case, it was guaranteed never to be NULL, due to the
      preceding "if sexpr_node(...)" guard, it's cleaner to skip the
      sexpr_node call altogether, and also saves a lookup.
      37ce5600
    • S
      macvtap IFF_VNET_HDR configuration · e52687e8
      Stefan Berger 提交于
      This patch sets or unsets the IFF_VNET_HDR flag depending on what device
      is used in the VM. The manipulation of the flag is done in the open
      function and is only fatal if the IFF_VNET_HDR flag could not be cleared
      although it has to be (or if an ioctl generally fails). In that case the
      macvtap tap is closed again and the macvtap interface torn.
      
      * src/qemu/qemu_conf.c src/qemu/qemu_conf.h: pass qemuCmdFlags to
        qemudPhysIfaceConnect()
      * src/util/macvtap.c src/util/macvtap.h: add vnet_hdr boolean to
        openMacvtapTap(), and private function configMacvtapTap()
      * src/qemu/qemu_driver.c: add extra qemuCmdFlags when calling
        qemudPhysIfaceConnect()
      e52687e8
    • L
      Use virFork() in __virExec(), virFileCreate() and virDirCreate() · 61497d95
      Laine Stump 提交于
      For __virExec() this is a semantic NOP except for when fork()
      fails. __virExec() would previously forget to restore the signal mask
      in this case; virFork() corrects this behavior.
      
      virFileCreate() and virDirCreate() gain the code to reset the logging
      and properly deal with the signal handling race condition.
      
      This also removes a log message that had a typo ("cannot fork o create
      file '%s'") - this error is now logged in a more generic manner in
      virFork() (more generic, but really just as informative, since the
      fact that it's forking to create a file is immaterial to the fact that
      it simply can't fork)
      
      * src/util/util.c: use the generic virFork() in the 3 functions
      61497d95
    • L
      Add virFork() function to utils · b4584612
      Laine Stump 提交于
      virFork() contains bookkeeping that must be done any time a process
      forks. Currently this includes:
      
      1) Call virLogLock() prior to fork() and virLogUnlock() just after,
         to avoid a deadlock if some other thread happens to hold that lock
         during the fork.
      
      2) Reset the logging hooks and send all child process log messages to
         stderr.
      
      3) Block all signals prior to fork(), then either a) reset the signal
         mask for the parent process, or b) clear the signal mask for the
         child process.
      
      Note that the signal mask handling in __virExec erroneously fails to
      restore the signal mask when fork() fails. virFork() fixes this
      problem.
      
      Other than this, it attempts to behave as closely to fork() as
      possible (including preserving errno for the caller), with a couple
      exceptions:
      
      1) The return value is 0 (success) or -1 (failure), while the pid is
         returned via the pid_t* argument. Like fork(), if pid < 0 there is
         no child process, otherwise both the child and the parent will
         return to the caller, and both should look at the return value,
         which will indicate if some of the extra processing outlined above
         encountered an error.
      
      2) If virFork() returns with pid < 0 or with a return value < 0
         indicating an error condition, the error has already been
         reported. You can log an additional message if you like, but it
         isn't necessary, and may be awkwardly extraneous.
      
      Note that virFork()'s child process will *never* call _exit() - if a
      child process is created, it will return to the caller.
      
      * util.c util.h: add virFork() function, based on what is currently
                       done in __virExec().
      b4584612
    • M
      Add QEMU support for virtio channel · 3ec09478
      Matthew Booth 提交于
      Support virtio-serial controller and virtio channel in QEMU backend.
      Will output
      the following for virtio-serial controller:
      
      -device
      virtio-serial-pci,id=virtio-serial0,bus=pci.0,addr=0x4,max_ports=16,vectors=4
      
      and the following for a virtio channel:
      
      -chardev pty,id=channel0 \
      -device
      virtserialport,bus=virtio-serial0.0,chardev=channel0,name=org.linux-kvm.port.0
      
      * src/qemu/qemu_conf.c: Add argument output for virtio
      * tests/qemuxml2argvtest.c
        tests/qemuxml2argvdata/qemuxml2argv-channel-virtio.args: Add test for
        QEMU command line generation
      3ec09478
    • M
      Add domain support for virtio channel · 7813a0f8
      Matthew Booth 提交于
      Add support for virtio-serial by defining a new 'virtio' channel target type
      and a virtio-serial controller. Allows the following to be specified in a
      domain:
      
      <controller type='virtio-serial' index='0' ports='16' vectors='4'/>
      <channel type='pty'>
        <target type='virtio' name='org.linux-kvm.port.0'/>
        <address type='virtio-serial' controller='0' bus='0'/>
      </channel>
      
      * docs/schemas/domain.rng: Add virtio-serial controller and virtio
        channel type.
      * src/conf/domain_conf.[ch]: Domain parsing/serialization for
        virtio-serial controller and virtio channel.
      * tests/qemuxml2xmltest.c
        tests/qemuxml2argvdata/qemuxml2argv-channel-virtio.xml: add domain xml
        parsing test
      * src/libvirt_private.syms src/qemu/qemu_conf.c:
        virDomainDefAddDiskControllers() renamed to
        virDomainDefAddImplicitControllers()
      7813a0f8
  6. 18 2月, 2010 7 次提交