1. 26 2月, 2016 3 次提交
    • J
      openvz: Use virStringSplitCount instead of strtok_r · fe006368
      John Ferlan 提交于
      When parsing the barrier:limit values, use virStringSplitCount in order
      to split the pair and make the approriate checks to get the data.
      Signed-off-by: NJohn Ferlan <jferlan@redhat.com>
      fe006368
    • A
      hostdev: Remove temporary variable when checking for VF · b2ce5b02
      Andrea Bolognani 提交于
      The virHostdevIsVirtualFunction() was called exactly twice, and in
      both cases the return value was saved to a temporary variable before
      being checked. This would be okay if it improved readability, but in
      this case is pretty pointless.
      
      Get rid of the temporary variable and check the return value
      directly; while at it, change the check from '<= 0' to '!= 1' to
      align it with the way other similar *IsVirtualFunction() functions
      are used thorough the code.
      b2ce5b02
    • A
      netdev: Use virNetDevIsVirtualFunction() properly · dec3a4a1
      Andrea Bolognani 提交于
      virNetDevIsVirtualFunction() returns 1 if the interface is a
      virtual function, 0 if it isn't and -1 on error. This means that,
      despite the name suggesting otherwise, using it as a predicate is
      not correct.
      
      Fix two callers that were doing so adding an explicit check on
      the return value.
      dec3a4a1
  2. 25 2月, 2016 5 次提交
    • J
      util: Avoid calling closedir(NULL) · 04e10925
      Jiri Denemark 提交于
      Signed-off-by: NJiri Denemark <jdenemar@redhat.com>
      04e10925
    • M
      vircgroupmock: Mock access("/sys/devices/system/cpu/present") · 50129dcc
      Michal Privoznik 提交于
      There's been a report on the upstream list [1] describing we
      access /sys/devices/system/cpu/present directly on the host from
      within our test suite. This may end up in unpredictable results
      as no all linux systems are required to have that file. Mock
      access to the file.
      
      libvirt.git/tests $ ../run strace vircgrouptest
      ...
      access("/sys/devices/system/cpu/present", F_OK) = 0
      ...
      Signed-off-by: NMichal Privoznik <mprivozn@redhat.com>
      50129dcc
    • O
      Fix bug of attaching redirdev device · c92547c3
      Osier Yang 提交于
      RHBZ: https://bugzilla.redhat.com/show_bug.cgi?id=1298070
      
      The corresponding chardev must be attached first, otherwise the
      the qemu command line won't be complete (missing the host part),
      c92547c3
    • E
      build: accomodate selinux 2.5 header API change · 5ea3a690
      Eric Blake 提交于
      Yet again, selinux has been adding const-correctness; this change
      is ABI-compatible, but breaks API, which affects us when we try to
      override things in our testsuite:
      
      ../../tests/securityselinuxhelper.c:307:24: error: conflicting types for 'selabel_open'
       struct selabel_handle *selabel_open(unsigned int backend,
                              ^~~~~~~~~~~~
      In file included from ../../tests/securityselinuxhelper.c:32:0:
      /usr/include/selinux/label.h:73:24: note: previous declaration of 'selabel_open' was here
      
      The problem is a new 'const' prior to the second parameter.
      
      Fix it the same way we did in commit 292d3f2d: check for the new
      const at configure time.
      Signed-off-by: NEric Blake <eblake@redhat.com>
      5ea3a690
    • J
      libxl: implement virDomainInterfaceStats · 77fdd82e
      Joao Martins 提交于
      Introduce support for domainInterfaceStats API call for querying
      network interface statistics. Consequently it also enables the use of
      `virsh domifstat <dom> <interface name>` command plus seeing the
      interfaces names instead of "-" when doing `virsh domiflist <dom>`.
      
      After successful guest creation we fill the network interfaces names
      based on domain, device id and append suffix if it's emulated in the
      following form: vif<domid>.<devid>[-emu].  We extract the network
      interfaces info from the libxl_domain_config object in
      libxlDomainCreateIfaceNames() to generate ifname. On domain cleanup we
      also clear ifname, in case it was set by libvirt (i.e. being prefixed
      with "vif"). We also skip these two steps in case the name of the
      interface was manually inserted by the administrator. Since the
      introduction of netprefix (commit a040ba9e), ifnames with a registered
      prefix will be freed on virDomain{Obj,Def}Format*, thus eliminating
      the migration issues observed with the reverted commit d2e5538b whereas
      source and destination would have the same ifname.
      
      For getting the interface statistics we resort to virNetInterfaceStats
      and let libvirt handle the platform specific nits. Note that the
      latter is not yet supported in FreeBSD.
      Signed-off-by: NJoao Martins <joao.m.martins@oracle.com>
      77fdd82e
  3. 24 2月, 2016 3 次提交
    • C
      libxl: small fix in parsing network · 5c79c445
      Chunyan Liu 提交于
      Signed-off-by: NChunyan Liu <cyliu@suse.com>
      5c79c445
    • E
      rbd: fix 32-bit build · 5a5c2837
      Eric Blake 提交于
      %zu is not always synonymous with uint64_t; on 32-bit machines,
      size_t is only 32 bits.  Prefer "%lld"/'unsigned long long' when
      the variable is under our control, and "%"PRIu64 when we are
      stuck with 'uint64_t' from RBD.
      
      Fixes errors such as:
      
      ../../src/storage/storage_backend_rbd.c: In function 'virStorageBackendRBDVolWipe':
      ../../src/storage/storage_backend_rbd.c:1281:15: error: format '%zu' expects argument of type 'size_t', but argument 8 has type 'uint64_t {aka long long unsigned int}' [-Werror=format=]
           VIR_DEBUG("Need to wipe %zu bytes from RBD image %s/%s",
                     ^
      ../../src/util/virlog.h:90:73: note: in definition of macro 'VIR_DEBUG_INT'
           virLogMessage(src, VIR_LOG_DEBUG, filename, linenr, funcname, NULL, __VA_ARGS__)
                                                                               ^
      ../../src/storage/storage_backend_rbd.c:1281:5: note: in expansion of macro 'VIR_DEBUG'
           VIR_DEBUG("Need to wipe %zu bytes from RBD image %s/%s",
           ^
      Signed-off-by: NEric Blake <eblake@redhat.com>
      5a5c2837
    • J
      libxl: fix bogus indentation from commit fb2bd208 · c23bbfad
      Jim Fehlig 提交于
      c23bbfad
  4. 23 2月, 2016 10 次提交
    • M
      qemuBuildCommandLine: Change the condition for -nographics · 01c31852
      Michal Privoznik 提交于
      There's this check when building command line that whenever
      domain has no graphics card configured we put -nographics onto
      qemu command line. The check is 'if (!def->graphics)'. This
      makes coverity think that def->graphics can be NULL, which is
      true. But later in the code every access to def->graphics is
      guarded by check for def->ngraphics, so no crash occurs. But this
      is something that coverity fails to deduct.
      In order to shut coverity up lets change the condition to
      'if (!def->ngraphics)'.
      Signed-off-by: NMichal Privoznik <mprivozn@redhat.com>
      01c31852
    • M
      xen: Check return value of virStringReplace · e0392f5a
      Michal Privoznik 提交于
      After 6604a3dd in which new helper function has been
      introduced, the code calls virStringReplace and dereference the
      result immediately. The string function can, however, return NULL
      so this would SIGSEGV right away. Check for the return value of
      the string function.
      Signed-off-by: NMichal Privoznik <mprivozn@redhat.com>
      e0392f5a
    • M
      vbox: Avoid signed and unsigned comparison · a0e5faaf
      Michal Privoznik 提交于
      After 457ff97f there are two defects in our code. In both of
      them we use a signed variable to hold up a number of snapshots
      that domain has. We use a helper function to count the number.
      However, the helper function may fail in which case it returns
      a negative one and control jumps to cleanup label where an
      unsigned variable is used to iterate over array of snapshots. The
      loop condition thus compare signed and unsigned variables which
      in this specific case ends up badly for us.
      Signed-off-by: NMichal Privoznik <mprivozn@redhat.com>
      a0e5faaf
    • M
      docs: Try harder to uninstall · 0f396a41
      Michal Privoznik 提交于
      Imagine you have partially installed libvirt, or maybe you're
      just running 'make uninstall' from a different version than 'make
      install' has been ran. One way or another, we are doing plain
      'rm' instead of 'rm -f' and thus not trying hard enough when
      uninstalling. In the rest of our code we stick with -f switch. Do
      that for docs too.
      Signed-off-by: NMichal Privoznik <mprivozn@redhat.com>
      0f396a41
    • A
      tests: Fix typo oaque -> opaque · 73fc4651
      Andrea Bolognani 提交于
      No functional changes.
      73fc4651
    • J
      libxl: add support for rbd qdisk · fb2bd208
      Jim Fehlig 提交于
      xl/libxl already supports qemu's network-based block backends
      such as nbd and rbd. libvirt has supported configuring such
      <disk>s for long time too. This patch adds support for rbd
      disks in the libxl driver by generating a rbd device URL from
      the virDomainDiskDef object. The URL is passed to libxl via the
      pdev_path field of libxl_device_disk struct. libxl then passes
      the URL to qemu for cosumption by the rbd backend.
      Signed-off-by: NJim Fehlig <jfehlig@suse.com>
      fb2bd208
    • J
      xenconfig: support xl<->xml conversion of rbd disk devices · 6604a3dd
      Jim Fehlig 提交于
      The target= setting in xl disk configuration can be used to encode
      meta info that is meaningful to a backend. Leverage this fact to
      support qdisk network disk types such as rbd. E.g. <disk> config
      such as
      
         <disk type='network' device='disk'>
           <driver name='qemu' type='raw'/>
           <source protocol='rbd' name='pool/image'>
             <host name='mon1.example.org' port='6321'/>
             <host name='mon2.example.org' port='6322'/>
             <host name='mon3.example.org' port='6322'/>
           </source>
           <target dev='hdb' bus='ide'/>
           <address type='drive' controller='0' bus='0' target='0' unit='1'/>
         </disk>
      
      can be converted to the following xl config (and vice versa)
      
        disk = [ "format=raw,vdev=hdb,access=rw,backendtype=qdisk,
                  target=rbd:pool/image:auth_supported=none:mon_host=mon1.example.org\\:6321\\;mon2.example.org\\:6322\\;mon3.example.org\\:6322"
               ]
      
      Note that in xl disk config, a literal backslash in target= must
      be escaped with a backslash. Conversion of <auth> config is not
      handled in this patch, but can be done in a follow-up patch.
      
      Also add a test for the conversions.
      Signed-off-by: NJim Fehlig <jfehlig@suse.com>
      6604a3dd
    • J
      xenconfig: produce key=value disk config syntax in xl formatter · a44f1f85
      Jim Fehlig 提交于
      The most formal form of xl disk configuration uses key=value
      syntax to define each configuration item, e.g.
      
      format=raw, vdev=xvda, access=rw, backendtype=phy, target=disksrc
      
      Change the xl disk formatter to produce this syntax, which allows
      target= to contain meta info needed to setup a network-based
      disksrc (e.g. rbd, nbd, iscsi). For details on xl disk config
      format, see  $xen-src/docs/misc/xl-disk-configuration.txt
      
      Update the disk config in the tests to use the formal syntax.
      But add tests to ensure disks specified with the positional
      parameter syntax are correctly converted to <disk> XML.
      Signed-off-by: NJim Fehlig <jfehlig@suse.com>
      a44f1f85
    • J
      xenconfig: replace text 'xm' with 'xl' in xlconfigtest · 8910ceaf
      Jim Fehlig 提交于
      While at it, improve a few comments. No functional change.
      Signed-off-by: NJim Fehlig <jfehlig@suse.com>
      8910ceaf
    • A
      hostdev: Minor style adjustments · dad0ae1c
      Andrea Bolognani 提交于
      Mostly labels names and whitespace.
      
      No functional changes.
      dad0ae1c
  5. 22 2月, 2016 8 次提交
  6. 20 2月, 2016 3 次提交
  7. 19 2月, 2016 8 次提交
    • P
      qemu: iothreadpin: Always set affinity when pinning iothread · 29eeb814
      Peter Krempa 提交于
      Similarly to VM startup always set the legacy affinity. Additionally we
      don't need to report an explicit error since virProcessSetAffinity
      reports them themselves.
      29eeb814
    • P
      qemu: emulatorpin: Always set affinity when pinning emulator thread · 2242503e
      Peter Krempa 提交于
      Similarly to VM startup always set the legacy affinity. Additionally we
      don't need to report an explicit error since virProcessSetAffinity
      reports them themselves.
      2242503e
    • C
      qemu: parse: drop redundant AddImplicitControllers · e6ad2b69
      Cole Robinson 提交于
      PostParse handles it for us now.
      
      This causes some test suite churn; qemu's custom PostParse could is
      now invoked before the generic AddImplicitControllers, so PCI
      controllers end up sequentially in the XML before the generically
      added IDE controllers. So it's just some XML reordering
      e6ad2b69
    • C
      qemu: parse: rename qemuCaps->caps · 378a9dc6
      Cole Robinson 提交于
      Everywhere else in qemu driver code 'qemuCaps' is a virQEMUCapsPtr,
      and virCapsPtr is generally named just 'caps'. Rename the offenders
      378a9dc6
    • C
      domain: add implicit controllers from post parse · 4066c734
      Cole Robinson 提交于
      Seems like the natural fit, since we are already adding other XML bits
      in the PostParse routine.
      
      Previously AddImplicitControllers was only called at the end of XML
      parsing, meaning code that builds a DomainDef by hand had to manually
      call it. Now those PostParse callers get it for free.
      
      There's some test churn here; xen xm and sexpr test suite bits weren't
      calling this before, but now they are, so you'll see new IDE controllers.
      I don't think this will cause problems in practice, since the code already
      needs to handle these implicit controllers like in the case when a user
      defines their own XML.
      4066c734
    • J
      Check for active domain in virDomainObjWait · 5591ca50
      Jiri Denemark 提交于
      virDomainObjWait is designed to be called in a loop. Make sure we break
      the loop in case the domain dies to avoid waiting for an event which
      will never happen.
      Signed-off-by: NJiri Denemark <jdenemar@redhat.com>
      5591ca50
    • J
      qemu: Avoid calling qemuProcessStop without a job · 81f50cb9
      Jiri Denemark 提交于
      Calling qemuProcessStop without a job opens a way to race conditions
      with qemuDomainObjExitMonitor called in another thread. A real world
      example of such a race condition:
      
        - migration thread (A) calls qemuMigrationWaitForSpice
        - another thread (B) starts processing qemuDomainAbortJob API
        - thread B signals thread A via qemuDomainObjAbortAsyncJob
        - thread B enters monitor (qemuDomainObjEnterMonitor)
        - thread B calls qemuMonitorSend
        - thread A awakens and calls qemuProcessStop
        - thread A calls qemuMonitorClose and sets priv->mon to NULL
        - thread B calls qemuDomainObjExitMonitor with priv->mon == NULL
        => monitor stays ref'ed and locked
      
      Depending on how lucky we are, the race may result in a memory leak or
      it can even deadlock libvirtd's event loop if it tries to lock the
      monitor to process an event received before qemuMonitorClose was called.
      Signed-off-by: NJiri Denemark <jdenemar@redhat.com>
      81f50cb9
    • J
      6f08cbb8