1. 17 1月, 2012 1 次提交
    • E
      build: fix bootstrap on fresh clone · 9a070e83
      Eric Blake 提交于
      Commit 29db7a00 picked up a gnulib bug, where a change in
      bootstrap meant that it would fail to run libtoolize on
      projects, like libvirt, that used the older spelling
      AM_PROG_LIBTOOL instead of LT_INIT for the sake of building
      on RHEL 5.  Now that gnulib is fixed, we should pick up that
      fix.
      
      * .gnulib: Update to latest, for bootstrap fix.
      * bootstrap: Resync from gnulib.
      9a070e83
  2. 16 1月, 2012 2 次提交
  3. 14 1月, 2012 7 次提交
    • M
      conf: Remove do-nothing validation functions · bfbbc496
      Michael Ellerman 提交于
      There are three address validation routines that do nothing:
        virDomainDeviceDriveAddressIsValid()
        virDomainDeviceUSBAddressIsValid()
        virDomainDeviceVirtioSerialAddressIsValid()
      
      Remove them, and replace their call sites with "1" which is what they
      currently return. In some cases this means we can remove an entire
      if block.
      Signed-off-by: NMichael Ellerman <michael@ellerman.id.au>
      bfbbc496
    • M
      tests: Add qemuxml2argv tests for PPC64 pseries machine · 4b942fe8
      Michael Ellerman 提交于
      Add four tests of the XML -> argv handling for the PPC64 pseries machine.
      
      The first is just a basic test of a bare bones machine.
      
      The three others test various aspects of the spapr-vio address handling.
      
      It seems that currently we can't include network devices, doing so leads
      to a segfault because the network driverState is not initialised. Working
      around that leads us to the problem that the 'default' network doesn't
      exist. So for now just leave network devices out.
      Signed-off-by: NMichael Ellerman <michael@ellerman.id.au>
      4b942fe8
    • M
      tests: Teach qemuxml2argvtest about spapr-vio addresses · 69dde2e6
      Michael Ellerman 提交于
      We can't call qemuCapsExtractVersionInfo() from test code, because it
      expects to be able to call the emulator, and for testing we have fake
      emulators that can't be executed. For that reason qemuxml2argvtest.c
      doesn't call qemuDomainAssignPCIAddresses(), instead it open codes its
      own version.
      
      That means we can't call qemuDomainAssignAddresses() from the test code,
      instead we need to manually call qemuDomainAssignSpaprVioAddresses().
      
      Also add logic to cope with qemuDomainAssignSpaprVioAddresses() failing,
      so that we can write a test that checks for a known failure in there.
      Signed-off-by: NMichael Ellerman <michael@ellerman.id.au>
      69dde2e6
    • M
      Make drive unit attribute optional in the XML schema · 8611d9c3
      Michael Ellerman 提交于
      The "unit" attribute of a drive address is optional in the code, so should
      also be in the XML schema.
      Signed-off-by: NMichael Ellerman <michael@ellerman.id.au>
      8611d9c3
    • P
      qemu: add virtio-scsi controller model · c9abfadf
      Paolo Bonzini 提交于
      Adding a new model for virtio-scsi roughly follows the same scheme
      as the previous patch.
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      c9abfadf
    • P
      qemu: add ibmvscsi controller model · 7b345b69
      Paolo Bonzini 提交于
      KVM will be able to use a PCI SCSI controller even on POWER.  Let
      the user specify the vSCSI controller by other means than a default.
      
      After this patch, the QEMU driver will actually look at the model
      and reject anything but auto, lsilogic and ibmvscsi.
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      7b345b69
    • A
      events: Return the correct number of registered events · c972237e
      Adam Litke 提交于
      Commit d09f6ba5 introduced a regression in event
      registration.  virDomainEventCallbackListAddID() will only return a positive
      integer if the type of event being registered is VIR_DOMAIN_EVENT_ID_LIFECYCLE.
      For other event types, 0 is always returned on success.  This has the
      unfortunate side effect of not enabling remote event callbacks because
      remoteDomainEventRegisterAny() uses the return value from the local call to
      determine if an event callback needs to be registered on the remote end.
      
      Make sure virDomainEventCallbackListAddID() returns the callback count for the
      eventID being registered.
      Signed-off-by: NAdam Litke <agl@us.ibm.com>
      c972237e
  4. 13 1月, 2012 11 次提交
    • T
      virsh domiflist: change output · 0f88c7c1
      Taku Izumi 提交于
      When using "virsh domifstat" command or "virsh domiftune" command,
      we pass an interface name as a parameter, so interface name is
      important.
      
      "virsh domiflist" output should display interface names
      on the first row.
      Signed-off-by: NTaku Izumi <izumi.taku@jp.fujitsu.com>
      0f88c7c1
    • P
      export virNetDevGetVirtualFunctions as a private symbol · ed6bd4bc
      Paolo Bonzini 提交于
      This avoids a linking error.
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      ed6bd4bc
    • O
      virsh: Two new fields for command domblklist · 5b407133
      Osier Yang 提交于
      Disk "type" and "device" are generally interesting stuff the
      user may want to known, too. To not break any scripts which
      parsed the output field, a new option "--details" is introduced
      to output the two introduced fields.
      5b407133
    • O
      qemu: Support copy on read for disk · 5edfcaae
      Osier Yang 提交于
      The new introduced optional attribute "copy_on_read</code> controls
      whether to copy read backing file into the image file. The value can
      be either "on" or "off". Copy-on-read avoids accessing the same backing
      file sectors repeatedly and is useful when the backing file is over a
      slow network. By default copy-on-read is off.
      5edfcaae
    • M
      Added check for maximum number of vcpus exceeding topology limit · b54de083
      Martin Kletzander 提交于
      Earlier, when the number of vcpus was greater than the topology allowed,
      libvirt didn't raise an error and continued, resulting in running qemu
      with parameters making no sense. Even though qemu did not report any
      error itself, the number of vcpus was set to maximum allowed by the
      topology.
      b54de083
    • E
      build: update to latest gnulib · 29db7a00
      Eric Blake 提交于
      Pick up recent gnulib improvements.
      
      * .gnulib: Update to latest.
      * bootstrap: Resync.
      * bootstrap.conf (gnulib_tool_option_extras): Adjust to bootstrap
      changes.
      * gnulib/lib/Makefile.am: Likewise.
      29db7a00
    • E
      uuid: fix off-by-one · 0327ff07
      Eric Blake 提交于
      Detected by Coverity.  Although unlikely, if we are ever started
      with stdin closed, we could reach a situation where we open a
      uuid file but then fail to close it, making that file the new
      stdin for the rest of the process.
      
      * src/util/uuid.c (getDMISystemUUID): Allow for stdin.
      0327ff07
    • E
      build: fix virsh reformat fallout · d98a3d4a
      Eric Blake 提交于
      Commit 69f0b446 failed to update the expected test output.
      
      * tests/virshtest.c (testCompareListDefault)
      (testCompareListCustom): Adjust to recent code change.
      d98a3d4a
    • D
      Rsync keymaps.csv file with GTK-VNC · 08272dc8
      Daniel P. Berrange 提交于
      08272dc8
    • D
      Re-write LXC controller end-of-file I/O handling yet again · 91303962
      Daniel P. Berrange 提交于
      Currently the LXC controller attempts to deal with EOF on a
      tty by spawning a thread to do an edge triggered epoll_wait().
      This avoids the normal event loop spinning on POLLHUP. There
      is a subtle mistake though - even after seeing POLLHUP on a
      master PTY, it is still perfectly possible & valid to write
      data to the PTY. There is a buffer that can be filled with
      data, even when no client is present.
      
      The second mistake is that the epoll_wait() thread was not
      looking for the EPOLLOUT condition, so when a new client
      connects to the LXC console, it had to explicitly send a
      character before any queued output would appear.
      
      Finally, there was in fact no need to spawn a new thread to
      deal with epoll_wait(). The epoll file descriptor itself
      can be poll()'d on normally.
      
      This patch attempts to deal with all these problems.
      
       - The blocking epoll_wait() thread is replaced by a poll
         on the epoll file descriptor which then does a non-blocking
         epoll_wait() to handle events
       - Even if POLLHUP is seen, we continue trying to write
         any pending output until getting EAGAIN from write.
       - Once write returns EAGAIN, we modify the epoll event
         mask to also look for EPOLLOUT
      
      * src/lxc/lxc_controller.c: Avoid stalled I/O upon
        connected to an LXC console
      91303962
    • D
      Allow 10 chars for domain IDs & 30 chars for names in virsh list · 69f0b446
      Daniel P. Berrange 提交于
      Domain IDs are at least 16 bits for most hypervisors, theoretically
      event 32-bits.  3 characters is clearly too small an alignment.
      Increase alignment to 5 characters to allow 16-bit domain IDs to
      display cleanly. Commonly seen with LXC where domain IDs are the
      process IDs by default.  Also increase the 'name' field from 20
      to 30 characters to cope with longer guest names which are quite
      common
      69f0b446
  5. 12 1月, 2012 8 次提交
    • M
      stream: Check for stream EOF · 833b901c
      Michal Privoznik 提交于
      If client stream does not have any data to sink and neither received
      EOF, a dummy packet is sent to the daemon signalising client is ready to
      sink some data. However, after we added event loop to client a race may
      occur:
      
      Thread 1 calls virNetClientStreamRecvPacket and since no data are cached
      nor stream has EOF, it decides to send dummy packet to server which will
      sent some data in turn. However, during this decision and actual message
      exchange with server -
      
      Thread 2 receives last stream data from server. Therefore an EOF is set
      on stream and if there is a call waiting (which is not yet) it is woken
      up. However, Thread 1 haven't sent anything so far, so there is no call
      to be woken up. So this thread sent dummy packet to daemon, which
      ignores that as no stream is associated with such packet and therefore
      no reply will ever come.
      
      This race causes client to hang indefinitely.
      833b901c
    • O
      virsh: New command print summary of all virtual interfaces · 74e701f8
      Osier Yang 提交于
      Just like command "domblklist", the command extracts "type",
      "source", "target", "model", and "MAC" of all virtual interfaces
      from domain XML (live or persistent).
      74e701f8
    • D
      Do not generate security_model when fs driver is anything but 'path' · 99fbb386
      Deepak C Shetty 提交于
      QEMU does not support security_model for anything but 'path' fs driver type.
      Currently in libvirt, when security_model ( accessmode attribute) is not
      specified it auto-generates it irrespective of the fs driver type, which
      can result in a qemu error for drivers other than path. This patch ensures
      that the qemu cmdline is correctly generated by taking into account the
      fs driver type.
      Signed-off-by: NDeepak C Shetty <deepakcs@linux.vnet.ibm.com>
      99fbb386
    • S
      Added new option to virsh net-dumpxml called --inactive · 52d064f4
      Shradha Shah 提交于
      The above option helps to differentiate between implicit and explicit
      interface pools.
      52d064f4
    • S
      Functionality to implicitly get interface pool from SR-IOV PF. · 42c81d18
      Shradha Shah 提交于
      If a system has 64 or more VF's, it is quite tedious to mention each VF
      in the interface pool.
      The following modification will implicitly create an interface pool from
      the SR-IOV PF.
      42c81d18
    • S
      Adding the element pf to network xml. · b01b53de
      Shradha Shah 提交于
      This element will help the user to just specify the SR-IOV physical
      function in order to access all the Virtual functions attached to it.
      b01b53de
    • S
      Added Function virNetDevGetVirtualFunctions · 3a0c717b
      Shradha Shah 提交于
      This functions enables us to get the Virtual Functions attached to
      a Physical function given the name of a SR-IOV physical functio.
      
      In order to accomplish the task, added a getter function pciGetDeviceAddrString
      to get the BDF of the Virtual Function in a char array.
      3a0c717b
    • S
  6. 11 1月, 2012 11 次提交
    • D
      Disable netcf if building without libvirtd · ba61012c
      Daniel P. Berrange 提交于
      Although the netcf interface driver can in theory be used by
      the stateless drivers, in practice none of them want to use
      it because they have different ways of dealing with interfaces.
      
      Furthermore, if you have mingw32-netcf installed, then the
      libvirt mingw32 build will fail with
      
        ../../src/interface/netcf_driver.c:644:5: error: unknown field 'close_used_without_including_unistd_h' specified in initializer
      
       * configure.ac: disable netcf if built without libvirtd
      ba61012c
    • E
      build: fix build on mingw with netcf available · 90cd1480
      Eric Blake 提交于
      The autobuilder pointed out an odd failure on mingw:
      ../../src/interface/netcf_driver.c:644:5: error: unknown field 'close_used_without_including_unistd_h' specified in initializer
      cc1: warnings being treated as errors
      
      This is because the gnulib headers #define close to different strings,
      according to which headers are included, in order to work around some
      odd mingw problems with close(), and these defines happen to also
      affect field members declared with a name of struct foo.close. As long
      as all headers are included before both the definition and use of the
      struct, the various #define doesn't matter, but the netcf file hit
      an instance where things were included in a different order.  Fix this
      for all clients that use a struct member named 'close'.
      
      * src/driver.h: Include <unistd.h> before using 'close'.
      90cd1480
    • E
      build: avoid spurious compiler warning · 18262b55
      Eric Blake 提交于
      For some weird reason, i686-pc-mingw32-gcc version 4.6.1 at -O2 complained:
      ../../src/conf/nwfilter_params.c: In function 'virNWFilterVarCombIterCreate':
      ../../src/conf/nwfilter_params.c:346:23: error: 'minValue' may be used uninitialized in this function [-Werror=uninitialized]
      ../../src/conf/nwfilter_params.c:319:28: note: 'minValue' was declared here
      ../../src/conf/nwfilter_params.c:344:23: error: 'maxValue' may be used uninitialized in this function [-Werror=uninitialized]
      ../../src/conf/nwfilter_params.c:319:18: note: 'maxValue' was declared here
      cc1: all warnings being treated as errors
      
      even though all paths of the preceding switch statement either
      assign the variables or return.
      
      * src/conf/nwfilter_params.c (virNWFilterVarCombIterAddVariable):
      Initialize variables.
      18262b55
    • S
      Add documentation new ways to access members of variables · a20cc3cc
      Stefan Berger 提交于
      This patch adds documentation about the new 'ways' that users can
      access the contents of variables in filters:
      
      - access via index: $TEST[2]
      - access via iterators $TEST[@1]
      a20cc3cc
    • S
      Add test cases for new ways to access variables in filters · 0c42e1d9
      Stefan Berger 提交于
      This patch adds a couple of XML parser / schema validator test cases
      for the new 'ways' to access variables via index or iterator.
      0c42e1d9
    • S
      Address side effects of accessing vars via index · 64484d55
      Stefan Berger 提交于
      Address side effect of accessing a variable via an index: Filters
      accessing a variable where an element is accessed that is beyond the
      size of the list (for example $TEST[10] and only 2 elements are available)
      cannot instantiate that filter. Test for this and report proper error
      to user.
      64484d55
    • S
      Add access to elements of variables via index · caa6223a
      Stefan Berger 提交于
      This patch adds access to single elements of variables via index. Example:
      
        <rule action='accept' direction='in' priority='500'>
          <tcp srcipaddr='$ADDR[1]' srcportstart='$B[2]'/>
        </rule>
      
      caa6223a
    • S
      Introduce possibility to have an iterator per variable · 80e9a5cd
      Stefan Berger 提交于
      This patch introduces the capability to use a different iterator per
      variable.
      
      The currently supported notation of variables in a filtering rule like
      
        <rule action='accept' direction='out'>
           <tcp  srcipaddr='$A' srcportstart='$B'/>
        </rule>
      
      processes the two lists 'A' and 'B' in parallel. This means that A and B
      must have the same number of 'N' elements and that 'N' rules will be 
      instantiated (assuming all tuples from A and B are unique).
      
      In this patch we now introduce the assignment of variables to different
      iterators. Therefore a rule like
      
        <rule action='accept' direction='out'>
           <tcp  srcipaddr='$A[@1]' srcportstart='$B[@2]'/>
        </rule>
      
      will now create every combination of elements in A with elements in B since
      A has been assigned to an iterator with Id '1' and B has been assigned to an
      iterator with Id '2', thus processing their value independently.
      
      The first rule has an equivalent notation of
      
        <rule action='accept' direction='out'>
           <tcp  srcipaddr='$A[@0]' srcportstart='$B[@0]'/>
        </rule>
      80e9a5cd
    • S
      Optimize the elements the iterator visits. · 134c5676
      Stefan Berger 提交于
      In this patch we introduce testing whether the iterator points to a
      unique set of entries that have not been seen before at one of the previous
      iterations. The point is to eliminate duplicates and with that unnecessary
      filtering rules by preventing identical filtering rules from being
      instantiated.
      Example with two lists:
      
      list1 = [1,2,1]
      list2 = [1,3,1]
      
      The 1st iteration would take the 1st items of each list -> 1,1
      The 2nd iteration would take the 2nd items of each list -> 2,3
      The 3rd iteration would take the 3rd items of each list -> 1,1 but
      skip them since this same pair has already been encountered in the 1st
      iteration
      
      Implementation-wise this is solved by taking the n-th element of list1 and
      comparing it against elements 1..n-1. If no equivalent is found, then there
      is no possibility of this being a duplicate. In case an equivalent element
      is found at position i, then the n-th element in the 2nd list is compared
      against the i-th element in the 2nd list and if that is not the same, then
      this is a unique pair, otherwise it is not unique and we may need to do
      the same comparison on the 3rd list.
      
      134c5676
    • J
      apparmor: Mark pid parameter as unused · d82ef7c3
      Jiri Denemark 提交于
      d82ef7c3
    • A
      virsh: improve doMigrate function docs · c41a21de
      Alex Jia 提交于
      When running virsh migrate with --xml option and actual xml file doesn't
      exist, virsh hasn't output any error information, although return value
      is 1.
      
      * tools/virsh.c: Raising a appropriate error information when operation fails.
      
      * How to reproduce?
      % virsh migrate <domain> --live qemu+ssh://<target host>/system --xml non-existent.xml
      % echo $?
      
      * Fixed result:
      error: file 'non-existent.xml' doesn't exist
      Signed-off-by: NAlex Jia <ajia@redhat.com>
      c41a21de