1. 04 4月, 2010 6 次提交
    • M
      nwfilter: Fix random index in virNWFilterRuleDefDetailsFormat · 5288b2ad
      Matthias Bolte 提交于
      An uninitialized int value was used to index an array. This can
      result in a segfault in nwfilterxml2xmltest.
      5288b2ad
    • M
      xenapi: Fix uninitialized variable warning · 1b747f0d
      Matthias Bolte 提交于
      1b747f0d
    • D
      Add a managedsave command to virsh · d068f960
      Daniel Veillard 提交于
      This command implements the managed save operation
      
      * tools/virsh.c: new command
      * tools/virsh.pod: documentation
      d068f960
    • D
      Implement managed save operations for qemu driver · 6e41f30e
      Daniel Veillard 提交于
      The images are saved in /var/lib/libvirt/qemu/save/
      and named $domainname.save . The directory is created appropriately
      at daemon startup. When a domain is started while a saved image is
      available, libvirt will try to load this saved image, and start the
      domain as usual in case of failure. In any case the saved image is
      discarded once the domain is created.
      
      * src/qemu/qemu_conf.h: adds an extra save path to the driver config
      * src/qemu/qemu_driver.c: implement the 3 new operations and handling
        of the image directory
      6e41f30e
    • D
      Implement remote protocol for managed save · 7a3da17a
      Daniel Veillard 提交于
      * src/remote/remote_protocol.x src/remote/remote_protocol.h
        src/remote/remote_protocol.c src/remote/remote_driver.c: add the entry
        points in the remote driver
      * daemon/remote.c daemon/remote_dispatch_args.h
        daemon/remote_dispatch_prototypes.h daemon/remote_dispatch_table.h:
        and implement the daemon counterpart
      7a3da17a
    • D
      Add managed save API entry points · 15c647a9
      Daniel Veillard 提交于
      virDomainManagedSave() is to be run on a running domain. Once the call
      complete, as in virDomainSave() the domain is stopped upon completion,
      but there is no restore counterpart as any order to start the domain
      from the API would load the state from the managed file, similary if
      the domain is autostarted when libvirtd starts.
      Once a domain has restarted his managed save image is destroyed,
      basically managed save image can only exist for a stopped domain,
      for a running domain that would be by definition outdated data.
      
      * include/libvirt/libvirt.h.in src/libvirt.c src/libvirt_public.syms:
        adds the new entry points virDomainManagedSave(),
        virDomainHasManagedSaveImage() and virDomainManagedSaveRemove()
      * src/driver.h 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/vbox/vbox_tmpl.c
        src/remote/remote_driver.c src/test/test_driver.c src/uml/uml_driver.c
        src/xen/xen_driver.c: add corresponding new internal drivers entry
        points
      15c647a9
  2. 03 4月, 2010 6 次提交
    • E
      build: improve check for out-of-date .gnulib submodule · d002c250
      Eric Blake 提交于
      git reset --hard 96e5a2d4
      ./autogen.sh
      make -s
      git pull
      make -s    <-- expecting auto-bootstrap here, doesn't happen
      
      Use git diff to expose whether the submodule has untracked changes,
      which are typical on an incremental pull if .gnulib was updated but
      the user did not manually run 'git submodule update'.
      
      After this patch is applied, I encountered a new problem when
      following the reproducing pattern.  Basically, the change to .gnulib
      between libvirt's commit 96e5a2d4 and this patch introduced a change
      to sys_ioctl.in.h, but gnulib (intentionally) does not make the
      replacement headers depend on Makefile changes.  Therefore, I ended up
      with the generated replacement header being broken:
      gnulib/lib/sys/ioctl.h complained about a use of @.  But that seems
      like something that should be fixed upstream in gnulib's bootstrap
      script (that is, when doing a gnulib update, all files created from
      .in.h file should probably be deleted).  Without the benefit of that
      proposed gnulib fix, I worked around the problem by manually removing
      the stale gnulib/lib/sys/ioctl.h.
      
      * autogen.sh (t): Also run bootstrap if the gnulib submodule needs
      to be updated.
      * cfg.mk (_autogen): Likewise.
      Reported by Matthias Bolte.
      d002c250
    • S
      Use the virStrToLong_ui() function rather than the virStrToLong_i() · 8d30e5f7
      Stefan Berger 提交于
      where possible.
      8d30e5f7
    • S
    • S
      This patch adds a couple of test cases for the XML parsing test suite covering... · 8459218c
      Stefan Berger 提交于
      This patch adds a couple of test cases for the XML parsing test suite covering various filterable protocols. For each test case an input XML and an output XML is provided checking the input XML after parsing and converting back into XML against the exepcted output XML.
      Signed-off-by: NStefan Berger <stefanb@us.ibm.com>
      8459218c
    • S
      The following issues are fixed in the patch below: · b3e8f9f4
      Stefan Berger 提交于
      - ebtables requires that some of the command line parameters are passed as hex numbers; so have those attributes call a function that prints 16 and 8 bit integers as hex nunbers.
      
      - ip6tables requires '--icmpv6-type' rather than '--icmp-type'
      
      - ebtables complains about protocol identifiers lower than 0x600, so already discard anything lower than 0x600 in the parser
      
      - make the protocol entry types more readable using a #define for its entries
      
      - continue parsing a filtering rule even if a faulty entry is encountered; return an error value at the end and let the caller decide what to do with the rule's object
      
      - fix an error message
      b3e8f9f4
    • E
      build: import latest gnulib · e7168f79
      Eric Blake 提交于
      A lot of syntax check rules have to be rewritten, but the
      result is easier to maintain.  I tested each syntax rule
      by intentionally introducing a temporary violation of the rule.
      Additionally, some false positives for unmarked_diagnostics
      crept in, and an improved copyright_format test caught some bugs.
      
      * .gnulib: Update to latest.
      * cfg.mk (sc_prohibit_test_minus_ao): Delete, it was moved into
      gnulib's maint.mk.
      (sc_avoid_write, sc_prohibit_strcmp_and_strncmp)
      (sc_prohibit_asprintf, sc_prohibit_strncpy, sc_prohibit_readlink)
      (sc_prohibit_gethostname, sc_prohibit_gettext_noop)
      (sc_prohibit_VIR_ERR_NO_MEMORY, sc_prohibit_nonreentrant)
      (sc_prohibit_ctype_h, sc_TAB_in_indentation)
      (sc_avoid_ctype_macros)
      (sc_prohibit_virBufferAdd_with_string_literal)
      (sc_prohibit_gethostby, sc_copyright_format): Rewrite in terms of
      new maint.mk macros.
      (sc_libvirt_unmarked_diagnostics): Fix whitespace.
      * .x-sc_unmarked_diagnostics: New file.
      * tests/object-locking.ml: Fix copyright.
      * tools/virt-pki-validate.in: Likewise.
      * tools/virt-xml-validate.in: Likewise.
      e7168f79
  3. 02 4月, 2010 7 次提交
    • C
      96e5a2d4
    • C
      Make virDomainLoadConfig static. · fba3dfd1
      Chris Lalancette 提交于
      Signed-off-by: NChris Lalancette <clalance@redhat.com>
      fba3dfd1
    • J
      VBox: Fix use of uninitialized value · f76c3493
      Jiri Denemark 提交于
      f76c3493
    • L
      Changes to clock timer XML to match final design. · 4ee2b318
      Laine Stump 提交于
      The clock timer XML is being updated in the following ways (based on
      further off-list discussion that was missed during the initial
      implementation):
      
      1) 'wallclock' is changed to 'track', and the possible values are 'boot'
       (corresponds to old 'host'), 'guest', and 'wall'.
      
      2) 'mode' has an additional value 'smpsafe'
      
      3) when tickpolicy='catchup', there can be an optional sub-element of
         timer called 'catchup':
      
         <catchup threshold=123 slew=120 limit=10000/>
      
      Those three values are all longs, always optional, and if they are present,
      they are positive. Internally, 0 indicates "unspecified".
      
      * docs/schemas/domain.rng: updated RNG definition to account for changes
      
      * src/conf/domain_conf.h: change the C struct and enums to match changes.
      
      * src/conf/domain_conf.c: timer parse and format functions changed to
                                handle the new selections and new element.
      
      * src/libvirt_private.syms: *TimerWallclock* changes to *TimerTrack*
      
      * src/qemu/qemu_conf.c: again, account for Wallclock --> Track change.
      4ee2b318
    • L
      Allow domain disk images on root-squash NFS to coexist with security driver. · 8a7b4be5
      Laine Stump 提交于
      (suggested by Daniel Berrange, tested by Dan Kenigsberg)
      
      virStorageFileGetMetadata will fail for disk images that are stored on
      a root-squash NFS share that isn't world-readable.
      SELinuxSetSecurityImageLabel is called during the startup of every
      domain (as long as security_driver != "none"), and it will propogate
      the error from virStorageFileGetMetadata, causing the domain startup
      to fail. This is, however, a common scenario when qemu is run as a
      non-root user and the disk image is stored on NFS.
      
      Ignoring this failure (which doesn't matter in this case, since the
      next thing done by SELinuxSetSecurityImageLabel - setting the file
      context - will also fail (and that function already ignores failures
      due to root-squash NFS) will allow us to continue bringing up the
      domain. The result is that we don't need to disable the entire
      security driver just because a domain's disk image is stored on
      root-squashed NFS.
      8a7b4be5
    • L
      78151ec9
    • C
      Don't use virFileReadLimFD in qemuDomainRestore. · d62f4c36
      Chris Lalancette 提交于
      virFileReadLimFD is a poor fit for reading the header
      of the restore file.  The problem is that virFileReadLimFD
      returns an error when there is more data after the amount
      you ask to read, but that is *expected* in this case.
      
      This patch is essentially a revert of
      1a4d5c95, but I don't think
      that commit does what it says anyway.  It purports to prevent
      an unwarranted OOM error, but since virFileReadLimFD will
      allocate memory up to the maximum anyway, the upper limit
      on the total amount of memory allocated is the same for either
      the old version or the new version.  Since the old saferead
      actually works and virFileReadLimFD does not, revert to
      using saferead.
      Signed-off-by: NChris Lalancette <clalance@redhat.com>
      d62f4c36
  4. 01 4月, 2010 19 次提交
    • J
      Only parse 'CPU XML' in virCPUDefParseXML() · 320ea3a4
      Jim Fehlig 提交于
      Received report of user crashing libvirtd with
      
      virsh capabilities > capabilities.xml
      virsh cpu-compare capabilities.xml
      
      While user has been informed about proper usage of cpu-compare,
      segfaulting libvirt should be avoided.
      
      Do not parse CPU definition in virCPUDefParseXML() if XML is not
      a 'cpu' node.
      320ea3a4
    • D
      Keep build quiet for generated file · f983c326
      Daniel P. Berrange 提交于
      Adds $(AM_V_GEN) to many more manual makefile.am rules that
      were generating files
      f983c326
    • D
      Keep track of guest paused state after disk IO / watchdog events · cd2404a3
      Daniel P. Berrange 提交于
      When a watchdog/IO error occurs, one of the possible actions that
      QEMU might take is to pause the guest. In this scenario libvirt
      needs to update its internal state for the VM, and emit a
      lifecycle event:
      
        VIR_DOMAIN_EVENT_SUSPENDED
      
      with a detail being one of:
      
        VIR_DOMAIN_EVENT_SUSPENDED_IOERROR
        VIR_DOMAIN_EVENT_SUSPENDED_WATCHDOG
      
      To future proof against possible QEMU support for multiple monitor
      consoles, this patch also hooks into the 'STOPPED' event in QEMU
      and emits a generic VIR_DOMAIN_EVENT_SUSPENDED_PAUSED event
      
      * include/libvirt/libvirt.h.in: Add VIR_DOMAIN_EVENT_SUSPENDED_IOERROR
      * src/qemu/qemu_driver.c: Update VM state to paused when IO error
        or watchdog events occurrs
      * src/qemu/qemu_monitor_json.c: Fix typo in disk IO event name
      cd2404a3
    • M
      Replace sscanf in PCI device address parsing · d13eb9fc
      Matthias Bolte 提交于
      This also fixes a problem with MinGW's GCC on Windows. GCC complains
      about the L modifier being unknown.
      
      Parsing in pciIterDevices is stricter now and doesn't accept trailing
      characters after the actual <domain>:<bus>:<slot>.<function> sequence
      anymore.
      
      Parsing in pciWaitForDeviceCleanup is also stricter now and expects
      the <start>-<end> : <domain>:<bus>:<slot>.<function> sequence to be
      terminated by \n.
      
      Change domain from unsigned long long to unsigned int in
      pciWaitForDeviceCleanup, because everywhere else domain is handled as
      unsigned int too.
      d13eb9fc
    • M
      xen: Use virStrToLong_i instead of sscanf for XenD port parsing · 57dab748
      Matthias Bolte 提交于
      Parsing is stricter now and doesn't accept trailing characters
      after the actual value anymore.
      57dab748
    • M
      xenapi: Use virStrToLong_i instead of sscanf for CPU map parsing · 82cb2e73
      Matthias Bolte 提交于
      Parsing is stricter now and doesn't accept trailing characters
      after the actual value anymore.
      82cb2e73
    • M
      openvz: Use strtok_r instead of sscanf for VPS UUID parsing · 1778da71
      Matthias Bolte 提交于
      Also free 2k stack space.
      1778da71
    • M
      xen: Use virParseMacAddr instead of sscanf · 00e00510
      Matthias Bolte 提交于
      This also fixes a bug in xenXMDomainConfigParse where uninitialized
      memory would be used as MAC address if sscanf fails.
      00e00510
    • M
      vbox: Replace atoi with virStrToLong_i · 2f047d48
      Matthias Bolte 提交于
      Parsing is stricter now and doesn't accept trailing characters
      after the actual value or non-number strings anymore. atoi just
      returns 0 in case it cannot parse a number from the given string.
      Now an error is reported for such a string.
      2f047d48
    • M
      cgroup: Replace sscanf with virStrToLong_ll · 73b45bfb
      Matthias Bolte 提交于
      The switch from %lli to %lld in virCgroupGetValueI64 is intended,
      as virCgroupGetValueU64 uses base 10 too, and virCgroupSetValueI64
      uses %lld to format the number to string.
      
      Parsing is stricter now and doesn't accept trailing characters
      after the actual value anymore.
      73b45bfb
    • M
      Refactor major.minor.micro version parsing into a function · 56bac4a2
      Matthias Bolte 提交于
      virParseVersionString uses virStrToLong_ui instead of sscanf.
      
      This also fixes a bug in the UML driver, that always returned 0
      as version number.
      
      Introduce STRSKIP to check if a string has a certain prefix and
      to skip this prefix.
      56bac4a2
    • M
      Replace sscanf in nwfilter rule parsing · ea54570e
      Matthias Bolte 提交于
      Parsing is stricter now and doesn't accept trailing characters
      after the actual value anymore.
      ea54570e
    • M
      Replace sscanf in legacy device address parsing · 2072d63c
      Matthias Bolte 提交于
      Parsing is stricter now and doesn't accept trailing characters
      after the actual <domain>:<bus>:<slot> sequence anymore.
      2072d63c
    • S
      While writing a couple of test cases for the nwfilter's XML parser I · e8132007
      Stefan Berger 提交于
      found some cases where the output ended up not looking as expected. So
      the following changes are in the patch below:
      
      - if the protocol ID in the MAC header is an integer, just write it into
      the datastructure without trying to find a corresponding string for it
      and if none is found failing
      - when writing the protocol ID as string, simply write it as integer if
      no corresponding string can be found
      - same changes for arpOpcode parsing and printing
      - same changes for protocol ID in an IP packet
      - DSCP value needs to be written into the data structure
      - IP protocol version number is redundant at this level, so remove it
      - parse the protocol ID found inside an IP packet not only as string but
      also as uint8
      - arrange the display of the src and destination masks to be shown after
      the src and destination ip address respectively in the XML
      - the existing libvirt IP address parser accepts for example '25' as an
      IP address. I want this to be parsed as a CIDR type netmask. So try to
      parse it as an integer first (CIDR netmask) and if that doesn't work as
      a dotted IP address style netmask.
      - instantiation of rules with MAC masks didn't work because they weren't
      printed into a buffer, yet.
      e8132007
    • S
      ESX test case needs '/' in interface name · 6cbc3306
      Stefan Berger 提交于
      To fix an ESX test case, valid interface names need '/' as valid letter.
      Signed-off-by: NStefan Berger <stefanb@us.ibm.com>
      6cbc3306
    • M
      Fix linker errors in proxy · a77821c8
      Matthias Bolte 提交于
      domain_conf.c:494: undefined reference to 'virNWFilterHashTableFree'
      domain_conf.c:5107: undefined reference to 'virNWFilterFormatParamAttributes'
      
      Add missing source to the proxy and disable XML parsing code in
      nwfilter_params.c for a proxy build.
      a77821c8
    • E
      build: more fallout from test -a · a792bf24
      Eric Blake 提交于
      * cfg.mk (sc_prohibit_test_minus_ao): Also check for [.
      * docs/Makefile.am (%.html, html/index.html): Avoid non-portable
      test usage.
      * libvirt.spec.in (%post): Likewise.
      * tools/virt-pki-validate.in (servercert.pem): Likewise.
      * configure.ac (LOGNAME): Use test, not [, in files processed by
      autoconf.
      Detected by Matthias Bolte.
      a792bf24
    • M
      Fix apibuild.py warning about virNWFilterLookupByUUIDString · eff24046
      Matthias Bolte 提交于
      The function name was written with capital I in the Filter part.
      eff24046
    • M
      website: Add archive link for libvirt-users list · 6fc93f1e
      Matthias Bolte 提交于
      6fc93f1e
  5. 31 3月, 2010 2 次提交
    • E
      maint: remove redundant tests after virStrToLong · 9d6614df
      Eric Blake 提交于
      virStrToLong* guarantees (via strtol) that the end pointer will be set
      to the point at which parsing stopped (even on failure, this point is
      the start of the input string).
      
      * src/esx/esx_driver.c (esxGetVersion): Remove pointless
      conditional.
      * src/qemu/qemu_conf.c (qemuParseCommandLinePCI)
      (qemuParseCommandLineUSB, qemuParseCommandLineSmp): Likewise.
      * src/qemu/qemu_monitor_text.c
      (qemuMonitorTextGetMigrationStatus): Likewise.
      9d6614df
    • E
      maint: update AUTHORS · 8d773c0f
      Eric Blake 提交于
      * AUTHORS: Add recent contributors.
      8d773c0f