1. 15 7月, 2013 2 次提交
    • M
      qemuBuildChrDeviceCommandLine: Don't leak devstr · 797b1ffc
      Michal Privoznik 提交于
      It's caller's responsibility to free return value of
      qemuBuildChrDeviceStr().
      797b1ffc
    • G
      python: return dictionary without value in case of no blockjob · 0f9e67bf
      Guannan Ren 提交于
      Currently, when there is no blockjob, dom.blockJobInfo('vda')
      still reports error because it doesn't distinguish return value 0 from -1.
      libvirt.libvirtError: virDomainGetBlockJobInfo() failed
      
      virDomainGetBlockJobInfo() API return value:
       -1 in case of failure, 0 when nothing found, 1 found.
      
      And use PyDict_SetItemString instead of PyDict_SetItem when key is
      of string type. PyDict_SetItemString increments key/value reference
      count, so call Py_DECREF() for value. For key, we don't need to
      do this, because PyDict_SetItemString will handle it internally.
      0f9e67bf
  2. 12 7月, 2013 25 次提交
    • J
    • J
      Change domain controller index type to unsigned · 945b18eb
      Jincheng Miao 提交于
      Error out on negative index values.
      
      https://bugzilla.redhat.com/show_bug.cgi?id=981261
      945b18eb
    • P
      virsh: Mention --driver in man page for nodedev-detach · acc27c4e
      Peter Krempa 提交于
      https://bugzilla.redhat.com/show_bug.cgi?id=982987
      
      Commit d923f6c8 introduced the --driver option but didn't document it in
      the man page. The docs are borrowed from the public API documentation.
      acc27c4e
    • D
      Add a couple of debug statements to LXC driver · f45dbdb2
      Daniel P. Berrange 提交于
      When failing to start a container due to inaccessible root
      filesystem path, we did not log any meaningful error. Add a
      few debug statements to assist diagnosis
      Signed-off-by: NDaniel P. Berrange <berrange@redhat.com>
      f45dbdb2
    • M
      qemu: Introduce qemuBuildChrDeviceStr · f293d763
      Michal Privoznik 提交于
      The function being introduced is responsible for creating command
      line argument for '-device' for given character device. Based on
      the chardev type, it calls appropriate qemuBuild.*ChrDeviceStr(),
      e.g.  qemuBuildSerialChrDeviceStr() for serial chardev and so on.
      f293d763
    • M
      qemu_command: Honour chardev alias assignment with a function · 2a9a5bef
      Michal Privoznik 提交于
      The chardev alias assignment is going to be needed in a separate
      places, so it should be moved into a separate function rather
      than copying code randomly around.
      2a9a5bef
    • M
      qemu_monitor: Introduce qemuMonitorDetachCharDev · 0f7a7ce5
      Michal Privoznik 提交于
      This function wraps 'chardev-remove' qemu monitor command around.
      It takes chardev alias as its single argument besides qemu monitor
      pointer.
      0f7a7ce5
    • M
      qemu_monitor: Introduce qemuMonitorAttachCharDev · 4a51447a
      Michal Privoznik 提交于
      The function being introduced is responsible for preparing and
      executing 'chardev-add' qemu monitor command. Moreover, in case
      of PTY chardev, the corresponding pty path is updated.
      4a51447a
    • M
      qemu_monitor_json: Move InetSocketAddress build to a separate function · 41e826d5
      Michal Privoznik 提交于
      Currently, we are building InetSocketAddress qemu json type
      within the qemuMonitorJSONNBDServerStart function. However, other
      future functions may profit from the code as well. So it should
      be moved into a static function.
      41e826d5
    • M
      domain_conf: Introduce chardev hotplug helpers · 8d4c3c3f
      Michal Privoznik 提交于
      For now, only these three helpers are needed:
      virDomainChrFind - to find a duplicate chardev within VM def
      virDomainChrInsert - wrapper for inserting a new chardev into VM def
      virDomainChrRemove - wrapper for removing chardev from VM def
      
      There is, however, one internal helper as well:
      virDomainChrGetDomainPtrs which sets given pointers to one of
      vmdef->{parallels,serials,consoles,channels} based on passed
      chardev type.
      8d4c3c3f
    • P
      remote: Improve libssh2 password authentication · 273745b4
      Peter Krempa 提交于
      This patch enables the password authentication in the libssh2 connection
      driver. There are a few benefits to this step:
      
      1) Hosts with challenge response authentication will now be supported
      with the libssh2 connection driver.
      
      2) Credential for hosts can now be stored in the authentication
      credential config file
      273745b4
    • P
      libssh2: Improve password based authentication · 676504e3
      Peter Krempa 提交于
      The password authentication method wasn't used as there wasn't a
      pleasant way to pass the password. This patch adds the option to use
      virAuth util functions to request the password either from a config file
      or uses the conf callback to request it from the user.
      676504e3
    • P
      virAuth: Don't require virConnectPtr to retrieve authentication creds · c7dba5d6
      Peter Krempa 提交于
      Previously a connection object was required to retrieve the auth
      credentials. This patch adds the option to call the retrieval functions
      only using the connection URI or path to the configuration file. This
      will allow to use this toolkit to request passwords for ssh
      authentication in the libssh2 connection driver.
      
      Changes:
      *virAuthGetConfigFilePathURI(): use URI to retrieve the config file path
      *virAuthGetCredential(): Remove the need to propagate conn object
      
      virAuthGetPasswordPath():
      *virAuthGetUsernamePath(): New functions, that use config file path
                                 instead of conn object
      c7dba5d6
    • H
      nodeinfo: Don't fail on non-contiguous NUMA topologies · 6d986d99
      hejia hejia 提交于
      nodeGetFreeMemory and nodeGetCellsFreeMemory assumed that the NUMA nodes
      are contiguous and starting from 0. Unfortunately there are machines
      that don't match this assumption:
      
      available: 1 nodes (1)
      node 1 cpus: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
      node 1 size: 16340 MB
      node 1 free: 11065 MB
      
      Before this patch:
      error: internal error Failed to query NUMA free memory
      error: internal error Failed to query NUMA free memory for node: 0
      
      After this patch:
      Total: 15772580 KiB
      0: 0 KiB
      Signed-off-by: NPeter Krempa <pkrempa@redhat.com>
      6d986d99
    • E
      util: make virSetUIDGID async-signal-safe · ee777e99
      Eric Blake 提交于
      https://bugzilla.redhat.com/show_bug.cgi?id=964358
      
      POSIX states that multi-threaded apps should not use functions
      that are not async-signal-safe between fork and exec, yet we
      were using getpwuid_r and initgroups.  Although rare, it is
      possible to hit deadlock in the child, when it tries to grab
      a mutex that was already held by another thread in the parent.
      I actually hit this deadlock when testing multiple domains
      being started in parallel with a command hook, with the following
      backtrace in the child:
      
       Thread 1 (Thread 0x7fd56bbf2700 (LWP 3212)):
       #0  __lll_lock_wait ()
           at ../nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S:136
       #1  0x00007fd5761e7388 in _L_lock_854 () from /lib64/libpthread.so.0
       #2  0x00007fd5761e7257 in __pthread_mutex_lock (mutex=0x7fd56be00360)
           at pthread_mutex_lock.c:61
       #3  0x00007fd56bbf9fc5 in _nss_files_getpwuid_r (uid=0, result=0x7fd56bbf0c70,
           buffer=0x7fd55c2a65f0 "", buflen=1024, errnop=0x7fd56bbf25b8)
           at nss_files/files-pwd.c:40
       #4  0x00007fd575aeff1d in __getpwuid_r (uid=0, resbuf=0x7fd56bbf0c70,
           buffer=0x7fd55c2a65f0 "", buflen=1024, result=0x7fd56bbf0cb0)
           at ../nss/getXXbyYY_r.c:253
       #5  0x00007fd578aebafc in virSetUIDGID (uid=0, gid=0) at util/virutil.c:1031
       #6  0x00007fd578aebf43 in virSetUIDGIDWithCaps (uid=0, gid=0, capBits=0,
           clearExistingCaps=true) at util/virutil.c:1388
       #7  0x00007fd578a9a20b in virExec (cmd=0x7fd55c231f10) at util/vircommand.c:654
       #8  0x00007fd578a9dfa2 in virCommandRunAsync (cmd=0x7fd55c231f10, pid=0x0)
           at util/vircommand.c:2247
       #9  0x00007fd578a9d74e in virCommandRun (cmd=0x7fd55c231f10, exitstatus=0x0)
           at util/vircommand.c:2100
       #10 0x00007fd56326fde5 in qemuProcessStart (conn=0x7fd53c000df0,
           driver=0x7fd55c0dc4f0, vm=0x7fd54800b100, migrateFrom=0x0, stdin_fd=-1,
           stdin_path=0x0, snapshot=0x0, vmop=VIR_NETDEV_VPORT_PROFILE_OP_CREATE,
           flags=1) at qemu/qemu_process.c:3694
       ...
      
      The solution is to split the work of getpwuid_r/initgroups into the
      unsafe portions (getgrouplist, called pre-fork) and safe portions
      (setgroups, called post-fork).
      
      * src/util/virutil.h (virSetUIDGID, virSetUIDGIDWithCaps): Adjust
      signature.
      * src/util/virutil.c (virSetUIDGID): Add parameters.
      (virSetUIDGIDWithCaps): Adjust clients.
      * src/util/vircommand.c (virExec): Likewise.
      * src/util/virfile.c (virFileAccessibleAs, virFileOpenForked)
      (virDirCreate): Likewise.
      * src/security/security_dac.c (virSecurityDACSetProcessLabel):
      Likewise.
      * src/lxc/lxc_container.c (lxcContainerSetID): Likewise.
      * configure.ac (AC_CHECK_FUNCS_ONCE): Check for setgroups, not
      initgroups.
      Signed-off-by: NEric Blake <eblake@redhat.com>
      ee777e99
    • E
      util: add virGetGroupList · 75c12564
      Eric Blake 提交于
      Since neither getpwuid_r() nor initgroups() are safe to call in
      between fork and exec (they obtain a mutex, but if some other
      thread in the parent also held the mutex at the time of the fork,
      the child will deadlock), we have to split out the functionality
      that is unsafe.  At least glibc's initgroups() uses getgrouplist
      under the hood, so the ideal split is to expose getgrouplist for
      use before a fork.  Gnulib already gives us a nice wrapper via
      mgetgroups; we wrap it once more to look up by uid instead of name.
      
      * bootstrap.conf (gnulib_modules): Add mgetgroups.
      * src/util/virutil.h (virGetGroupList): New declaration.
      * src/util/virutil.c (virGetGroupList): New function.
      * src/libvirt_private.syms (virutil.h): Export it.
      Signed-off-by: NEric Blake <eblake@redhat.com>
      75c12564
    • E
      util: improve user lookup helper · c1983ba4
      Eric Blake 提交于
      A future patch needs to look up pw_gid; but it is wasteful
      to crawl through getpwuid_r twice for two separate pieces
      of information, and annoying to copy that much boilerplate
      code for doing the crawl.  The current internal-only
      virGetUserEnt is also a rather awkward interface; it's easier
      to just design it to let callers request multiple pieces of
      data as needed from one traversal.
      
      And while at it, I noticed that virGetXDGDirectory could deref
      NULL if the getpwuid_r lookup fails.
      
      * src/util/virutil.c (virGetUserEnt): Alter signature.
      (virGetUserDirectory, virGetXDGDirectory, virGetUserName): Adjust
      callers.
      Signed-off-by: NEric Blake <eblake@redhat.com>
      c1983ba4
    • J
      qemu_hostdev: Resolve Coverity issue · a5fcea55
      John Ferlan 提交于
      Recent changes uncovered a possibility that 'last_processed_hostdev_vf'
      was set to -1 in 'qemuPrepareHostdevPCIDevices' and would cause problems
      in for loop end condition in the 'resetvfnetconfig' label if the
      variable was never set to 'i' due to 'qemuDomainHostdevNetConfigReplace'
      failure.
      a5fcea55
    • J
      storage_backend: Resolve Coverity issue · ba3427a0
      John Ferlan 提交于
      The switch statement in 'virStorageBackendCreateQemuImgOpts' used the
      for loop end condition 'VIR_STORAGE_FILE_FEATURE_LAST' as a possible value,
      but since that cannot happen Coverity spits out a DEADCODE message. Adding
      the Coverity tag just removes the Coverity message
      ba3427a0
    • J
      virsh-nodedev: Resolve Coverity issues · f926804a
      John Ferlan 提交于
      Recent changes uncovered FORWARD_NULL and NEGATIVE_RETURNS problems with
      the processing of the 'ndevices' and its associated allocated arrays in
      'vshNodeDeviceListCollect' due to the possibility of returning -1 in a
      call and using the returned value as a for loop index end condition.
      f926804a
    • J
      virsh-interface: Resolve Coverity issues · 50210ab9
      John Ferlan 提交于
      Recent changes uncovered FORWARD_NULL and NEGATIVE_RETURNS problems with
      the processing of the 'nActiveIfaces' and 'nInactiveIfaces' and their
      associated allocated arrays in 'vshInterfaceListCollect' due to the
      possibility of returning -1 in a call and using the return value as a
      for loop index end condition.
      50210ab9
    • J
      virsh-domain-monitor: Resolve Coverity issues · 0cfd40ac
      John Ferlan 提交于
      Recent changes uncovered a pair of NEGATIVE_RETURNS when processing the
      'nnames' in 'vshDomainListCollect' in the for loop due to possible -1 value.
      0cfd40ac
    • J
      testutils: Resolve Coverity issues · 8283ef9e
      John Ferlan 提交于
      Recent changes uncovered a NEGATIVE_RETURNS in the return from sysconf()
      when processing a for loop in virtTestCaptureProgramExecChild() in
      testutils.c
      
      Code review uncovered 3 other code paths with the same condition that
      weren't found by Covirity, so fixed those as well.
      8283ef9e
    • J
      hellolibvirt: Resolve Coverity issues · 07768096
      John Ferlan 提交于
      Recent changes uncovered a NEGATIVE_RETURNS when processing 'numNames'
      in 'showDomains' in the for loop after a possible -1 return.
      07768096
    • E
      maint: update to latest gnulib · 7961ad21
      Eric Blake 提交于
      Future patches need LGPLv2+ versions of some modules that had
      recent license changes; but separating the gnulib update from
      the actual use of the modules makes it easier to backport to
      an older version while avoiding a submodule update (assuming,
      of course, that the backport is to a system where glibc provides
      adequate functionaliy without needing the gnulib module).
      
      * .gnulib: Update to latest, for modules needed in later patches.
      Signed-off-by: NEric Blake <eblake@redhat.com>
      7961ad21
  3. 11 7月, 2013 13 次提交