1. 03 12月, 2015 1 次提交
    • J
      libxl: implement virDomainInterfaceStats · d2e5538b
      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 adminstrator.
      
      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>
      d2e5538b
  2. 02 12月, 2015 1 次提交
    • I
      network: selectively disable -Wcast-align in virNetDevParseDadStatus · af2954ae
      Ian Campbell 提交于
      Commit 0f7436ca "network: wait for DAD to finish for bridge IPv6 addresses"
      results in:
      
       CC     util/libvirt_util_la-virnetdevmacvlan.lo
      util/virnetdev.c: In function 'virNetDevParseDadStatus':
      util/virnetdev.c:1319:188: error: cast increases required alignment of target type [-Werror=cast-align]
      util/virnetdev.c:1332:41: error: cast increases required alignment of target type [-Werror=cast-align]
      util/virnetdev.c:1334:92: error: cast increases required alignment of target type [-Werror=cast-align]
      cc1: all warnings being treated as errors
      
      on at least ARM platforms.
      
      The three macros involved (NLMSG_NEXT, IFA_RTA and RTA_NEXT) all appear to
      correctly take care of alignment, therefore suppress Wcast-align around their
      uses.
      Signed-off-by: NIan Campbell <ian.campbell@citrix.com>
      Cc: Maxim Perevedentsev <mperevedentsev@virtuozzo.com>
      Cc: Laine Stump <laine@laine.org>
      Cc: Dario Faggioli <dario.faggioli@citrix.com>
      Cc: Jim Fehlig <jfehlig@suse.com>
      af2954ae
  3. 01 12月, 2015 7 次提交
    • M
      log_manager: Include configmake.h last · bd205a90
      Michal Privoznik 提交于
      The problem is that in some mingw header DATADIR is used but
      gnulib defines it too. This leads to the following compile error:
      
        CC       locking/libvirt_driver_la-lock_manager.lo
      In file included from /usr/i686-w64-mingw32/sys-root/mingw/include/objbase.h:66:0,
                       from /usr/i686-w64-mingw32/sys-root/mingw/include/ole2.h:17,
                       from /usr/i686-w64-mingw32/sys-root/mingw/include/wtypes.h:12,
                       from /usr/i686-w64-mingw32/sys-root/mingw/include/winscard.h:10,
                       from /usr/i686-w64-mingw32/sys-root/mingw/include/windows.h:97,
                       from /usr/i686-w64-mingw32/sys-root/mingw/include/winsock2.h:23,
                       from ../gnulib/lib/unistd.h:48,
                       from ../../src/util/virutil.h:29,
                       from ../../src/logging/log_manager.c:30:
      /usr/i686-w64-mingw32/sys-root/mingw/include/objidl.h:12275:2: error: expected identifier or '(' before string constant
       } DATADIR;
        ^
      Makefile:7888: recipe for target 'logging/libvirt_driver_la-log_manager.lo' failed
      
      The fix is to include configmake.h at the end of includes.
      Signed-off-by: NMichal Privoznik <mprivozn@redhat.com>
      bd205a90
    • M
      tests: Run virnetdaemontest iff WITH_YAJL · 01f6cbcf
      Michal Privoznik 提交于
      The test itself and daemon require a JSON parsing library. If not
      present, skip the test.
      Signed-off-by: NMichal Privoznik <mprivozn@redhat.com>
      01f6cbcf
    • M
      admin: Distribute libvirt-admin.conf · 2340f3eb
      Martin Kletzander 提交于
      Commit 48cd3dfa introduced configuration
      file for libvirt-admin but forgot to distribute it.  Also the change
      made to libvirt.conf in commit dbecb87f
      should've been removed thanks to introduction of separate config file.
      Signed-off-by: NMartin Kletzander <mkletzan@redhat.com>
      2340f3eb
    • M
      admin: Rename virAdmConnect to virAdmDaemon · df8192aa
      Martin Kletzander 提交于
      virAdmConnect was named after virConnect, but after some discussions,
      most of the APIs called will be working with remote daemon and starting
      them virAdmDaemon will make more sense.  Only possibly controversal name
      is CloseCallback (de)registration, and connecting to the daemon (which
      will still be Open/Close), but even this makes sense if one thinks about
      the daemon being opened and closed, e.g. as file, etc.
      
      This way all the APIs working with the daemon will start with
      virAdmDaemon prefix, they will accept virAdmDaemonPtr as first parameter
      and that will better suit with other namings as well (virDomain*,
      virAdmServer*, etc.).
      
      Because in virt-admin, the connection name does not refer to a struct
      that would have a connect in its name, also adjust 'connname' in
      clients.  And because it is not used anywhere in the vsh code, move it
      from there into each client.
      Signed-off-by: NMartin Kletzander <mkletzan@redhat.com>
      df8192aa
    • M
      spec: Temporarily disable new admin-related files · 15b0a6d6
      Martin Kletzander 提交于
      The virt-admin binary and its man page should not yet be distributed,
      but we need libvirt-common.h.  RPM build fails without specifying these.
      Signed-off-by: NMartin Kletzander <mkletzan@redhat.com>
      15b0a6d6
    • M
      admin: Include admin_remote.c in the dist package · 524492dc
      Martin Kletzander 提交于
      Otherwise all builds from the package will fail.
      Signed-off-by: NMartin Kletzander <mkletzan@redhat.com>
      524492dc
    • W
      qemu_agent: fix deadlock in qemuProcessHandleAgentEOF · fe51174f
      Wang Yufei 提交于
      If VM A is shutdown a by qemu agent at appoximately the same time
      an agent EOF of VM A happened, there's a chance that deadlock may occur:
      
      qemuProcessHandleAgentEOF in main thread
      A)  priv->agent = NULL; //A happened before B
      
          //deadlock when we get agent lock which's held by worker thread
          qemuAgentClose(agent);
      
      qemuDomainObjExitAgent called by qemuDomainShutdownFlags in worker thread
      B)  hasRefs = virObjectUnref(priv->agent); // priv->agent is NULL,
                                                 // return false
          if (hasRefs)
              virObjectUnlock(priv->agent); //agent lock will not be released here
      
      In order to resolve, during EOF close the agent first, then set priv->agent
      to NULL to fix the deadlock.
      
      This essentially reverts commit id '1020a504'. It's also of note that commit
      id '362d0477' notes a possible/rare deadlock similar to what was seen in
      the monitor in commit id '25f582e3'. However, it seems interceding changes
      including commit id 'd960d06f' should remove the deadlock issue.
      
      With this change, if EOF is called:
      
          Get VM lock
          Check if !priv->agent || priv->beingDestroyed, then unlock VM
          Call qemuAgentClose
          Unlock VM
      
      When qemuAgentClose is called
          Get Agent lock
          If Agent->fd open, close it
          Unlock Agent
          Unref Agent
      
      qemuDomainObjEnterAgent
          Enter with VM lock
          Get Agent lock
          Increase Agent refcnt
          Unlock VM
      
      After running agent command, calling qemuDomainObjExitAgent
          Enter with Agent lock
          Unref Agent
          If not last reference, unlock Agent
          Get VM lock
      
      If we were in the middle of an EnterAgent, call Agent command, and
      ExitAgent sequence and the EOF code is triggered, then the EOF code
      can get the VM lock, make it's checks against !priv->agent ||
      priv->beingDestroyed, and call qemuAgentClose. The CloseAgent
      would wait to get agent lock. The other thread then will eventually
      call ExitAgent, release the Agent lock and unref the Agent. Once
      ExitAgent releases the Agent lock, AgentClose will get the Agent
      Agent lock, close the fd, unlock the agent, and unref the agent.
      The final unref would cause deletion of the agent.
      Signed-off-by: NWang Yufei <james.wangyufei@huawei.com>
      Reviewed-by: NRen Guannan <renguannan@huawei.com>
      fe51174f
  4. 30 11月, 2015 28 次提交
  5. 27 11月, 2015 3 次提交