1. 15 5月, 2013 21 次提交
  2. 14 5月, 2013 19 次提交
    • D
      Forbid use of ':' in RBD pool names · 2a2bc151
      Daniel P. Berrange 提交于
      The QEMU command line syntax for RBD disks is
      
         file=rbd:pool/image:opt1=val1:opt2=val2...
      
      There is no way to escape the ':' if it appears in the
      pool or image name. Thus it must be explicitly forbidden
      if it occurs in the libvirt XML. People are known to
      be abusing the lack of escaping in current libvirt to
      pass arbitrary args to QEMU.
      Signed-off-by: NDaniel P. Berrange <berrange@redhat.com>
      2a2bc151
    • D
      Don't duplicate compiler warning flags when linking · 71b54636
      Daniel P. Berrange 提交于
      Automake already passes all CFLAGS to the linker too, so it
      is not necessary to set WARN_LDFLAGS in addition to the
      WARN_CFLAGS variable.
      Signed-off-by: NDaniel P. Berrange <berrange@redhat.com>
      71b54636
    • D
      Only pass -export-dynamic to linker, not compiler · 421846e4
      Daniel P. Berrange 提交于
      Clang does not like the -export-dynamic flag. The compiler does
      not need it in the first place, so we can avoid the problem by
      only setting it for the linker
      Signed-off-by: NDaniel P. Berrange <berrange@redhat.com>
      421846e4
    • D
      Correctly detect warning flags with clang · c1634100
      Daniel P. Berrange 提交于
      Clang will happily claim to support any warning flags
      unless the -Werror and -Wunknown-warning-option flags
      are set. Thus we need to make sure these are set when
      testing for clags.
      
      We must also set the clang specific warning flags
      -Wno-unused-command-line-argument to avoid a warning
      from the ssp-buffer-size flag when linking .o files.
      Signed-off-by: NDaniel P. Berrange <berrange@redhat.com>
      c1634100
    • D
      Ignore cast alignment warnings in inotify code for Xen. · 7d73b114
      Daniel P. Berrange 提交于
      The inotify Xen code causes a cast alignment warning, but this
      is harmless since the kernel inotify interface will ensure
      sufficient alignment of the inotify structs in the buffer being
      read
      Signed-off-by: NDaniel P. Berrange <berrange@redhat.com>
      7d73b114
    • D
      Workaround issue with clang and inline functions with static vars · 78cff68c
      Daniel P. Berrange 提交于
      Clang does not like it when you pass a static variable to an
      inline function
      
       vircgroupmock.c:462:22: error: static variable 'fakesysfsdir' is
        used in an inline function with external linkage [-Werror,-Wstatic-in-inline]
      
      Just make the var non-static to avoid this
      Signed-off-by: NDaniel P. Berrange <berrange@redhat.com>
      78cff68c
    • D
      Ensure consistent enablement of gcc 'diagnostic' pragma · c43b685a
      Daniel P. Berrange 提交于
      The virt-compile-warnings.m4 file would do an explicit
      check for whether the compile could use the 'diagnostic'
      pragma push/pop feature. The src/internal.h file would
      then only enable it for GCC >= 4.6
      
      This breaks with clang which supports the pragma but
      does not claim GCC 4.6 compat. Export a variable from
      the m4 check to the header file so they are consistent.
      Signed-off-by: NDaniel P. Berrange <berrange@redhat.com>
      c43b685a
    • O
      docs: Fix the wrong links in secret documentation · 5fd6ae3f
      Osier Yang 提交于
      docs/formatsecret.html.in: (s/domain\.html/formatdomain\.html/g)
      5fd6ae3f
    • O
      docs: Add the missed usage type 'iscsi' · 3f85bfdf
      Osier Yang 提交于
      Pushed under trivial rule.
      3f85bfdf
    • E
      qemu: fix bad free · 0b923ba3
      Eric Blake 提交于
      Commit bd56d0d8 could lead to freeing an uninitialized pointer:
      
      qemu/qemu_monitor_json.c: In function 'qemuMonitorJSONGetCommandLineOptionParameters':
      qemu/qemu_monitor_json.c:4284: warning: 'cmd' may be used uninitialized in this function
      
      * src/qemu/qemu_monitor_json.c
      (qemuMonitorJSONGetCommandLineOptionParameters): Initialize variable.
      Signed-off-by: NEric Blake <eblake@redhat.com>
      0b923ba3
    • R
      build: avoid gcrypt deprecation warnings · bf87b99d
      Roman Bogorodskiy 提交于
      When combining old gcc (4.2.1) and new gcrypt (1.5.2), such as
      when using the Ports repository on FreeBSD, the build fails with:
      
        CC       libvirt_driver_la-libvirt.lo
      cc1: warnings being treated as errors
      In file included from libvirt.c:58:
      /usr/local/include/gcrypt.h:1336: warning: 'gcry_ac_io_mode_t' is deprecated [-Wdeprecated-declarations]
      
      Relevant part of gcrypt.h:
      1333 typedef struct gcry_ac_io
      1334 {
      1335   /* This is an INTERNAL structure, do NOT use manually.  */
      1336   gcry_ac_io_mode_t mode _GCRY_ATTR_INTERNAL;
      1337   gcry_ac_io_type_t type _GCRY_ATTR_INTERNAL;
      1338   union
      
      The sad part is that we aren't even using the deprecated symbols - their
      mere inclusion in the installed header is provoking the problems.  It
      looks like newer gcc is a bit more tolerant (that is, this is a
      shortcoming of FreeBSD's use of an older compiler).
      Signed-off-by: NEric Blake <eblake@redhat.com>
      bf87b99d
    • E
      qemu: query command line options in QMP · bd56d0d8
      Eric Blake 提交于
      Ever since the conversion to using only QMP for probing features
      of qemu 1.2 and newer, we have been unable to detect features
      that are added only by additional command line options.  For
      example, we'd like to know if '-machine mem-merge=on' (added
      in qemu 1.5) is present.  To do this, we will take advantage
      of qemu 1.5's query-command-line-parameters QMP call [1].
      
      This patch wires up the framework for probing the command results;
      if the QMP command is missing, or if a particular command line
      option does not output any parameters (for example, -net uses
      a polymorphic parser, which showed up as no parameters as of qemu
      1.5), we silently treat that command as having no results.
      
      [1] https://lists.gnu.org/archive/html/qemu-devel/2013-04/msg05180.html
      
      * src/qemu/qemu_monitor.h (qemuMonitorGetOptions)
      (qemuMonitorSetOptions)
      (qemuMonitorGetCommandLineOptionParameters): New functions.
      * src/qemu/qemu_monitor_json.h
      (qemuMonitorJSONGetCommandLineOptionParameters): Likewise.
      * src/qemu/qemu_monitor.c (_qemuMonitor): Add cache field.
      (qemuMonitorDispose): Clean it.
      (qemuMonitorGetCommandLineOptionParameters): Implement new function.
      * src/qemu/qemu_monitor_json.c
      (qemuMonitorJSONGetCommandLineOptionParameters): Likewise.
      (testQemuMonitorJSONGetCommandLineParameters): Test it.
      Signed-off-by: NEric Blake <eblake@redhat.com>
      bd56d0d8
    • E
      qemu: simplify string cleanup · 082274ea
      Eric Blake 提交于
      No need to open code a string list cleanup, if we are nice
      to the caller by guaranteeing a NULL-terminated result.
      
      * src/qemu/qemu_monitor_json.c (qemuMonitorJSONGetCPUDefinitions)
      (qemuMonitorJSONGetCommands, qemuMonitorJSONGetEvents)
      (qemuMonitorJSONGetObjectTypes, qemuMonitorJSONGetObjectProps):
      Use simpler cleanup.
      Signed-off-by: NEric Blake <eblake@redhat.com>
      082274ea
    • E
      qemu: use bool in monitor struct · 764bb5e5
      Eric Blake 提交于
      Follows on the heels of other bool cleanups, such as commit 93002b98.
      
      * src/qemu/qemu_monitor.h (qemuMonitorOpen, qemuMonitorOpenFD):
      Update json parameter type.
      * src/qemu/qemu_monitor.c (qemuMonitorOpen, qemuMonitorOpenFD):
      Likewise.
      (_qemuMonitor): Adjust field type.
      * src/qemu/qemu_domain.h (_qemuDomainObjPrivate): Likewise.
      * src/qemu/qemu_domain.c (qemuDomainObjPrivateXMLParse): Adjust
      client.
      * src/qemu/qemu_process.c (qemuProcessStart): Likewise.
      * tests/qemumonitortestutils.c (qemuMonitorTestNew): Likewise.
      Signed-off-by: NEric Blake <eblake@redhat.com>
      764bb5e5
    • E
      json: support removing a value from an object · 547a7c77
      Eric Blake 提交于
      In an upcoming patch, I need the way to safely transfer a nested
      virJSON object out of its parent container for independent use,
      even after the parent is freed.
      
      * src/util/virjson.h (virJSONValueObjectRemoveKey): New function.
      (_virJSONObject, _virJSONArray): Use correct type.
      * src/util/virjson.c (virJSONValueObjectRemoveKey): Implement it.
      * src/libvirt_private.syms (virjson.h): Export it.
      * tests/jsontest.c (mymain): Test it.
      Signed-off-by: NEric Blake <eblake@redhat.com>
      547a7c77
    • G
      Support for static routes on a virtual bridge · ccff335f
      Gene Czarcinski 提交于
      network: static route support for <network>
      
      This patch adds the <route> subelement of <network> to define a static
      route.  the address and prefix (or netmask) attribute identify the
      destination network, and the gateway attribute specifies the next hop
      address (which must be directly reachable from the containing
      <network>) which is to receive the packets destined for
      "address/(prefix|netmask)".
      
      These attributes are translated into an "ip route add" command that is
      executed when the network is started. The command used is of the
      following form:
      
        ip route add <address>/<prefix> via <gateway> \
                     dev <virbr-bridge> proto static metric <metric>
      
      Tests are done to validate that the input data are correct.  For
      example, for a static route ip definition, the address must be a
      network address and not a host address.  Additional checks are added
      to ensure that the specified gateway is directly reachable via this
      network (i.e. that the gateway IP address is in the same subnet as one
      of the IP's defined for the network).
      
      prefix='0' is supported for both family='ipv4' address='0.0.0.0'
      netmask='0.0.0.0' or prefix='0', and for family='ipv6' address='::',
      prefix=0', although care should be taken to not override a desired
      system default route.
      
      Anytime an attempt is made to define a static route which *exactly*
      duplicates an existing static route (for example, address=::,
      prefix=0, metric=1), the following error message will be sent to
      syslog:
      
          RTNETLINK answers: File exists
      
      This can be overridden by decreasing the metric value for the route
      that should be preferred, or increasing the metric for the route that
      shouldn't be preferred (and is thus in place only in anticipation that
      the preferred route may be removed in the future).  Caution should be
      used when manipulating route metrics, especially for a default route.
      
      Note: The use of the command-line interface should be replaced by
      direct use of libnl so that error conditions can be handled better.  But,
      that is being left as an exercise for another day.
      Signed-off-by: NGene Czarcinski <gene@czarc.net>
      Signed-off-by: NLaine Stump <laine@laine.org>
      ccff335f
    • E
      build: avoid shadowed variable in fdstreamtest · 84f3777a
      Eric Blake 提交于
      On RHEL 6.4 (gcc 4.4.7), I got:
      
      fdstreamtest.c: In function 'testFDStreamReadCommon':
      fdstreamtest.c:44: error: declaration of 'tmpfile' shadows a global declaration [-Wshadow]
      
      * tests/fdstreamtest.c (testFDStreamReadCommon)
      (testFDStreamWriteCommon): Rename 'tmpfile' variable.
      Signed-off-by: NEric Blake <eblake@redhat.com>
      84f3777a
    • D
      Don't overwrite useful message when creating macvlan fails · 3407e3b3
      Daniel P. Berrange 提交于
      Currently we report a bogus error message when macvlan
      creation fails:
      
      error: Failed to start domain migtest
      error: operation failed: Unable to create macvlan device
      
      With this removed, we see the real error:
      
      error: Failed to start domain migtest
      error: Unable to get index for interface p31p1: No such device
      Signed-off-by: NDaniel P. Berrange <berrange@redhat.com>
      3407e3b3
    • D
      Remove & ban use of select() for waiting for I/O · 8845d8df
      Daniel P. Berrange 提交于
      Use of the select() system call is inherantly dangerous since
      applications will hit a buffer overrun if any FD number exceeds
      the size of the select set size (typically 1024). Replace the
      two uses of select() with poll() and use cfg.mk to ban any
      future use of select().
      
      NB: This changes the phyp driver so that it uses an infinite
      timeout, instead of busy-waiting for 1ms at a time.
      Signed-off-by: NDaniel P. Berrange <berrange@redhat.com>
      8845d8df