1. 10 4月, 2012 2 次提交
  2. 03 4月, 2012 1 次提交
    • M
      virsh: Clarify escape sequence · 7960ce84
      Michal Privoznik 提交于
      Currently, we put no strains on escape sequence possibly leaving users
      with console that cannot be terminated. However, not all ASCII
      characters can be used as escape sequence. Only those falling in
      @ - _ can be; implement and document this constraint.
      7960ce84
  3. 02 4月, 2012 1 次提交
  4. 30 3月, 2012 1 次提交
  5. 28 3月, 2012 1 次提交
    • A
      virsh: plug memory leaks on failure path · 03ca3317
      Alex Jia 提交于
      Leaks are introduced in commit 1cf0e3db and fe383bb5.
      
      Fixing memory leaks, in addition, the patch also fixes a potential missing
      return value issue in 'if (from)' statement, without the fixing, although
      the programming met a error, the subsequent codes will be executed
      continually.
      
      * tools/virsh.c (cmdSnapshotList): fix memory leaks and missing return value.
      
      * How to reproduce?
      
      % virsh snapshot-list <domain> --parent --roots
      % virsh snapshot-list <domain> --parent --tree
      % virsh snapshot-list <domain> --roots --tree
      
      actual result:
      error: --parent and --roots are mutually exclusive
      error: Failed to disconnect from the hypervisor, 1 leaked reference(s)
      
      error: --parent and --tree are mutually exclusive
      error: Failed to disconnect from the hypervisor, 1 leaked reference(s)
      
      error: --roots and --tree are mutually exclusive
      error: Failed to disconnect from the hypervisor, 1 leaked reference(s)
      
      % virsh snapshot-create-as <domain> --name "hello"
      % virsh snapshot-create-as <domain> --name "libvirt"
      % virsh snapshot-list <domain> --roots --from "hello"
      
      actual result:
      error: --roots and --from are mutually exclusive
       Name                 Creation Time             State
      ------------------------------------------------------------
       libvirt              2012-03-28 13:46:51 +0800 running
      Signed-off-by: NAlex Jia <ajia@redhat.com>
      03ca3317
  6. 27 3月, 2012 2 次提交
    • L
      build: fix "missing initializer" errors in virsh.c · 05c25e60
      Laine Stump 提交于
      Found when attempting to build on Fedora 17 alpha with:
      
         ./autogen.sh --system --enable-compile-warnings=error
      
      (this same build command works without problem on Fedora 16). All
      other struct initializers for this struct have the extra field filled
      in (almost always to 0), so the two errant ones were fixed by adding
      in the extra 0 field.
      05c25e60
    • M
      Cleanup for a return statement in source files · 9943276f
      Martin Kletzander 提交于
      Return statements with parameter enclosed in parentheses were modified
      and parentheses were removed. The whole change was scripted, here is how:
      
      List of files was obtained using this command:
      git grep -l -e '\<return\s*([^()]*\(([^()]*)[^()]*\)*)\s*;' |             \
      grep -e '\.[ch]$' -e '\.py$'
      
      Found files were modified with this command:
      sed -i -e                                                                 \
      's_^\(.*\<return\)\s*(\(\([^()]*([^()]*)[^()]*\)*\))\s*\(;.*$\)_\1 \2\4_' \
      -e 's_^\(.*\<return\)\s*(\([^()]*\))\s*\(;.*$\)_\1 \2\3_'
      
      Then checked for nonsense.
      
      The whole command looks like this:
      git grep -l -e '\<return\s*([^()]*\(([^()]*)[^()]*\)*)\s*;' |             \
      grep -e '\.[ch]$' -e '\.py$' | xargs sed -i -e                            \
      's_^\(.*\<return\)\s*(\(\([^()]*([^()]*)[^()]*\)*\))\s*\(;.*$\)_\1 \2\4_' \
      -e 's_^\(.*\<return\)\s*(\([^()]*\))\s*\(;.*$\)_\1 \2\3_'
      9943276f
  7. 24 3月, 2012 1 次提交
    • E
      snapshot: add atomic create flag · 4d5533ca
      Eric Blake 提交于
      Right now, it is appallingly easy to cause qemu disk snapshots
      to alter a domain then fail; for example, by requesting a two-disk
      snapshot where the second disk name resides on read-only storage.
      In this failure scenario, libvirt reports failure, but modifies
      the live domain XML in-place to record that the first disk snapshot
      was taken; and places a difficult burden on the management app
      to grab the XML and reparse it to see which disks, if any, were
      altered by the partial snapshot.
      
      This patch adds a new flag where implementations can request that
      the hypervisor make snapshots atomically; either no changes to
      XML occur, or all disks were altered as a group.  If you request
      the flag, you either get outright failure up front, or you take
      advantage of hypervisor abilities to make an atomic snapshot. Of
      course, drivers should prefer the atomic means even without the
      flag explicitly requested.
      
      There's no way to make snapshots 100% bulletproof - even if the
      hypervisor does it perfectly atomic, we could run out of memory
      during the followup tasks of updating our in-memory XML, and report
      a failure.  However, these sorts of catastrophic failures are rare
      and unlikely, and it is still nicer to know that either all
      snapshots happened or none of them, as that is an easier state to
      recover from.
      
      * include/libvirt/libvirt.h.in
      (VIR_DOMAIN_SNAPSHOT_CREATE_ATOMIC): New flag.
      * src/libvirt.c (virDomainSnapshotCreateXML): Document it.
      * tools/virsh.c (cmdSnapshotCreate, cmdSnapshotCreateAs): Expose it.
      * tools/virsh.pod (snapshot-create, snapshot-create-as): Document
      it.
      4d5533ca
  8. 23 3月, 2012 2 次提交
    • O
      qemu: Update domain status to running while wakeup event is emitted · 7c5a0c94
      Osier Yang 提交于
      This introduces a new running reason VIR_DOMAIN_RUNNING_WAKEUP,
      and new suspend event type VIR_DOMAIN_EVENT_STARTED_WAKEUP.
      
      While a wakeup event is emitted, the domain which entered into
      VIR_DOMAIN_PMSUSPENDED will be transferred to "running"
      with reason VIR_DOMAIN_RUNNING_WAKEUP, and a new domain lifecycle
      event emitted with type VIR_DOMAIN_EVENT_STARTED_WAKEUP.
      7c5a0c94
    • O
      New domain state pmsuspended · 54d9026a
      Osier Yang 提交于
      This introduces a new domain state pmsuspended to represent
      the domain which has been suspended by guest power management,
      e.g. (entered itno s3 state). Because a "running" state could
      be confused in this case, one will see the guest is paused
      actually while playing. And state "paused" is for the domain
      which was paused by virDomainSuspend.
      54d9026a
  9. 17 3月, 2012 1 次提交
  10. 15 3月, 2012 2 次提交
    • O
      virsh: A bit smarter attach-disk · 6227a220
      Osier Yang 提交于
      Detects the file type of source path if no "--sourcetype" and
      "driver" is specified, instead of always set the disk type as
      "block".
      6227a220
    • A
      virsh: fix invalid free · 68fd6a3b
      Alex Jia 提交于
      * tools/virsh.c (cmdDetachDisk): fix invalid free due to using
        uninitialised value.
      
      * How to reproduce?
      # virsh detach-disk a b
      error: failed to get domain 'a'
      *** glibc detected *** virsh: double free or corruption (out): 0x00007fff410ed1a0 ***
      ======= Backtrace: =========
      /lib64/libc.so.6[0x39cf0750c6]
      /usr/lib/libvirt.so.0(virFree+0x39)[0x7f045938a239]
      virsh[0x41c768]
      virsh[0x415075]
      virsh[0x425d64]
      /lib64/libc.so.6(__libc_start_main+0xfd)[0x39cf01ecdd]
      virsh[0x40a419]
      ======= Memory map: ========
      00400000-0044e000 r-xp 00000000 08:0e 760441                             /usr/bin/virsh
      0064e000-00650000 rw-p 0004e000 08:0e 760441                             /usr/bin/virsh
      ......
      39d7229000-39d722b000 r--p 00029000 08:0e 2183477                        /lib64/libk5crypto.so.3.1
      39d722b000-39d722c000 rw-p 0002b000 08:0e 2183477                        /lib64/lAborted (core dumped)
      Signed-off-by: NAlex Jia <ajia@redhat.com>
      68fd6a3b
  11. 12 3月, 2012 1 次提交
    • E
      cpustats: report user and sys times · 759095f6
      Eric Blake 提交于
      Thanks to cgroups, providing user vs. system time of the overall
      guest is easy to add to our existing API.
      
      * include/libvirt/libvirt.h.in (VIR_DOMAIN_CPU_STATS_USERTIME)
      (VIR_DOMAIN_CPU_STATS_SYSTEMTIME): New constants.
      * src/util/virtypedparam.h (virTypedParameterArrayValidate)
      (virTypedParameterAssign): Enforce checking the result.
      * src/qemu/qemu_driver.c (qemuDomainGetPercpuStats): Fix offender.
      (qemuDomainGetTotalcpuStats): Implement new parameters.
      * tools/virsh.c (cmdCPUStats): Tweak output accordingly.
      759095f6
  12. 09 3月, 2012 1 次提交
    • O
      virsh: Use option alias for outmoded "--persistent" · 1e31b835
      Osier Yang 提交于
      Since VIR_DOMAIN_AFFECT_{LIVE,CONFIG,CURRENT} was created,
      all new virsh commands use "--config" to represents the
      persistent changing. This patch add "--config" option
      for the old commands which still use "--persistent",
      and "--persistent" is now alias of "--config".
      
      tools/virsh.c: (use "--config", and "--persistent" is
          alias of "--config" now).
          cmdDomIfSetLink, cmdDomIfGetLink, cmdAttachDevice,
          cmdDetachDevice, cmdUpdateDevice, cmdAttachInterface,
          cmdDetachInterface, cmdAttachDisk, cmdDetachDisk
      
      toos/virsh.pod: Update docs of the changed commands, and
          add some missed docs for "--config" (detach-interface,
          detach-disk, and detach-device).
      1e31b835
  13. 08 3月, 2012 5 次提交
    • E
      virsh: improve memory unit parsing · 210ed0e8
      Eric Blake 提交于
      The last vestige of the inaccurate 'kilobytes' when we meant 1024 is
      now gone.  And virsh is now useful for setting memory in units other
      than KiB.
      
      * tools/virsh.c (cmdSetmem, cmdSetmaxmem): Use new helper routine,
      allow passing bogus arguments on to hypervisor to test driver
      sanity checking, and fix leak on parse error.
      (vshMemtuneGetSize): New helper.
      (cmdMemtune): Use it.
      * tools/virsh.pod (setmem, setmaxmem, memtune): Document this.
      210ed0e8
    • E
      virsh: improve storage unit parsing · ab95da40
      Eric Blake 提交于
      Now can now do:
      
      virsh vol-resize $vol 10M
      virsh blockresize $dom $vol 10M
      
      to get both interfaces to resize to 10MiB.  The remaining wart
      is that vol-resize defaults to bytes, but blockresize defaults
      to KiB, but we can't break existing scripts; oh well, it's no
      worse than the same wart of the underlying virDomainBlockResize.
      
      The API for virStorageVolResize states that capacity must always
      be positive, and that the presence of shrink and delta flags is
      what implies a negative change.
      
      * tools/virsh.c (vshCommandOptScaledInt): New function.
      (cmdVolResize): Don't pass negative size.
      (cmdVolSize): Rename...
      (vshVolSize): ...and use new helper routine.
      (cmdBlockResize): Use new helper routine, and support new bytes
      flag.
      * tools/virsh.pod (NOTES): Document suffixes.
      (blockresize, vol-create-as, vol-resize): Point to notes.
      ab95da40
    • E
      virsh: add command aliases, and rename nodedev-detach · af3f9aab
      Eric Blake 提交于
      Just because our public API has a typo doesn't mean that virsh
      has to keep the typo.
      
      * tools/virsh.c (VSH_CMD_FLAG_ALIAS): New flag.
      (nodedevCmds): Use it.
      (cmdHelp): Omit alias commands.
      (cmdNodeDeviceDettach): Rename...
      (cmdNodeDeviceDetach): ...to this.
      * tools/virsh.pod (nodedev-detach): Document it.
      af3f9aab
    • E
      virsh: use option aliases · 3d150d32
      Eric Blake 提交于
      Command line interfaces should use dash, not underscore, as many
      keyboard layouts allow that to be typed with fewer shift key presses.
      
      Also, the US spelling of --tunneled gets more google hits than the
      UK spelling of --tunnelled.
      
      * tools/virsh.c (opts_migrate): Allow US variant.
      (opts_blkdeviotune): Prefer - over _.
      * tools/virsh.pod (blkdeviotune): Fix spelling.
      3d150d32
    • E
      virsh: add option aliases · 1c56b9fe
      Eric Blake 提交于
      In the past, we have created some virsh options with less-than-stellar
      names.  For back-compat reasons, those names must continue to parse,
      but we don't want to document them in help output.  This introduces
      a new option type, an alias, which points to a canonical option name
      later in the option list.
      
      I'm actually quite impressed that our code has already been factored
      to do all option parsing through common entry points, such that I
      got this added in relatively few lines of code!
      
      * tools/virsh.c (VSH_OT_ALIAS): New option type.
      (opts_echo): Hook up an alias, for easy testing.
      (vshCmddefOptParse, vshCmddefHelp, vshCmddefGetOption): Allow for
      aliases.
      * tools/virsh.pod (NOTES): Document promise of back-compat.
      * tests/virshtest.c (mymain): Test new feature.
      1c56b9fe
  14. 07 3月, 2012 1 次提交
  15. 02 3月, 2012 1 次提交
    • E
      build: use correct type for pid and similar types · 3e2c3d8f
      Eric Blake 提交于
      No thanks to 64-bit windows, with 64-bit pid_t, we have to avoid
      constructs like 'int pid'.  Our API in libvirt-qemu cannot be
      changed without breaking ABI; but then again, libvirt-qemu can
      only be used on systems that support UNIX sockets, which rules
      out Windows (even if qemu could be compiled there) - so for all
      points on the call chain that interact with this API decision,
      we require a different variable name to make it clear that we
      audited the use for safety.
      
      Adding a syntax-check rule only solves half the battle; anywhere
      that uses printf on a pid_t still needs to be converted, but that
      will be a separate patch.
      
      * cfg.mk (sc_correct_id_types): New syntax check.
      * src/libvirt-qemu.c (virDomainQemuAttach): Document why we didn't
      use pid_t for pid, and validate for overflow.
      * include/libvirt/libvirt-qemu.h (virDomainQemuAttach): Tweak name
      for syntax check.
      * src/vmware/vmware_conf.c (vmwareExtractPid): Likewise.
      * src/driver.h (virDrvDomainQemuAttach): Likewise.
      * tools/virsh.c (cmdQemuAttach): Likewise.
      * src/remote/qemu_protocol.x (qemu_domain_attach_args): Likewise.
      * src/qemu_protocol-structs (qemu_domain_attach_args): Likewise.
      * src/util/cgroup.c (virCgroupPidCode, virCgroupKillInternal):
      Likewise.
      * src/qemu/qemu_command.c(qemuParseProcFileStrings): Likewise.
      (qemuParseCommandLinePid): Use pid_t for pid.
      * daemon/libvirtd.c (daemonForkIntoBackground): Likewise.
      * src/conf/domain_conf.h (_virDomainObj): Likewise.
      * src/probes.d (rpc_socket_new): Likewise.
      * src/qemu/qemu_command.h (qemuParseCommandLinePid): Likewise.
      * src/qemu/qemu_driver.c (qemudGetProcessInfo, qemuDomainAttach):
      Likewise.
      * src/qemu/qemu_process.c (qemuProcessAttach): Likewise.
      * src/qemu/qemu_process.h (qemuProcessAttach): Likewise.
      * src/uml/uml_driver.c (umlGetProcessInfo): Likewise.
      * src/util/virnetdev.h (virNetDevSetNamespace): Likewise.
      * src/util/virnetdev.c (virNetDevSetNamespace): Likewise.
      * tests/testutils.c (virtTestCaptureProgramOutput): Likewise.
      * src/conf/storage_conf.h (_virStoragePerms): Use mode_t, uid_t,
      and gid_t rather than int.
      * src/security/security_dac.c (virSecurityDACSetOwnership): Likewise.
      * src/conf/storage_conf.c (virStorageDefParsePerms): Avoid
      compiler warning.
      3e2c3d8f
  16. 01 3月, 2012 1 次提交
    • E
      virsh: expose partial pull · ff4c25ba
      Eric Blake 提交于
      Now virsh can call virDomainBlockRebase.
      
      * tools/virsh.c (cmdBlockPull): Add --base parameter.
      (blockJobImpl): Use it to expose BlockRebase API.
      * tools/virsh.pod (blockpull): Document it.
      ff4c25ba
  17. 28 2月, 2012 3 次提交
  18. 27 2月, 2012 2 次提交
    • P
      virsh: add support for VIR_DOMAIN_CONSOLE_* flags · afa4336e
      Peter Krempa 提交于
      This patch adds support for the newly introduced
      VIR_DOMAIN_CONSOLE_FORCE and VIR_DOMAIN_CONSOLE_SAFE flags. The console
      command now has an optional parameter --force that specifies that the
      user wants to forcibly interrupt an ongoing console session and create
      a new one. Flag --safe requests that the console should be opened only
      if the hypervisor driver supports safe console handling.
      
      The behaviour to this point was that the daemon opened two streams to
      the console, that competed for data from the pipe, and the result was
      that both of the consoles ended up scrambled.
      
      This patch doesn't modify operation of other commands dealing with
      console connections (start, create) as those open connections to newly
      started domains making it virtually impossible for another client to race
      for the console and steal it.
      
      * tools/console.c:
              - add support for flag passthrough
      * tools/console.h:
              - modify function prototypes to match impl.
      * tools/virsh.c:
              - add flag --force for the console command
      afa4336e
    • M
      virsh: Expose virDomainPMWakeup · a04d10f7
      Michal Privoznik 提交于
      a04d10f7
  19. 25 2月, 2012 2 次提交
    • L
      virsh: fix informational message in iface-bridge command · 4a923600
      Laine Stump 提交于
      See: https://bugzilla.redhat.com/show_bug.cgi?id=797066
      
      The position of the bridge name and ethernet device name were
      accidentally swapped in the message informing of success creating the
      bridge.
      4a923600
    • D
      Improve error reporting when virsh console is run without a TTY · af6b61ba
      Daniel P. Berrange 提交于
      If attempting to run
      
        ssh root@somehost virsh console someguest
      
      You'll get an error
      
        2012-02-15 13:11:47.683+0000: 4765: info : libvirt version: 0.9.10, package: 1.fc18 (Unknown, 2012-02-15-11:48:57, lettuce.camlab.fab.redhat.com)
        2012-02-15 13:11:47.683+0000: 4765: error : vshRunConsole:320 : unable to get tty attributes: Invalid argument
        Connected to domain f16x86_64
        Escape character is ^]
      
      There are several problems here
      
       - The actual error message is bad for users
       - We shouldn't rely on VIR_ERROR for this case
       - The prompt makes it look like we still connected
         because we didn't flush stdout.
      
      * virsh.c: Flush stdout before starting console and check
        for a valid tty
      af6b61ba
  20. 23 2月, 2012 1 次提交
  21. 22 2月, 2012 1 次提交
    • P
      virsh: Enhance list command to ease creation of shell scripts · 419e5fb3
      Peter Krempa 提交于
      This patch adds new options to the "virsh list" command enabling
      filtering of persistent and transient domains along with the option to
      print only UUIDs or names of domains instead of printing the table.
      
      Option --name prints domain names (one per line) instead of the default
      table. Similarly --uuid prints domain's UUID. The option --table is
      an alias for the default behavior.
      
      Aditionally --persistent and/or --transient may be specified to filter
      the output of domains.
      419e5fb3
  22. 08 2月, 2012 3 次提交
  23. 06 2月, 2012 2 次提交
    • P
      virsh: Fix resource leak while listing inactive domains with titles · 35d31954
      Peter Krempa 提交于
      Commit fad5cd21 introduces a new flag
      that allows to show domain's title with domains. This commit introduced
      resource leak while listing inactive domains with titles.
      35d31954
    • A
      virsh: Avoid invalid read of size errors · f228917a
      Alex Jia 提交于
      Detected by valgrind. the codes are allocating 0 bytes memory to variable
      cpumap by vshCalloc function, and then the function VIR_USE_CPU will access
      it later, a invalid read error will be hit.
      
      * tools/virsh.c(cmdVcpuPin): fix invalid read error.
      
      * How to reproduce?
      % valgrind -v --read-var-info=yes virsh vcpupin <domain> 0 0
      
      * Actual result:
      
      ==27271== ERROR SUMMARY: 5 errors from 2 contexts (suppressed: 8 from 6)
      ==27271==
      ==27271== 1 errors in context 1 of 2:
      ==27271== Invalid read of size 1
      ==27271==    at 0x39CF087E2E: __GI_memcpy (in /lib64/libc-2.12.so)
      ==27271==    by 0x39CF114FDC: xdrmem_putbytes (in /lib64/libc-2.12.so)
      ==27271==    by 0x39CF114707: xdr_opaque (in /lib64/libc-2.12.so)
      ==27271==    by 0x4D56194: xdr_remote_domain_pin_vcpu_args (remote_protocol.c:1844)
      ==27271==    by 0x4D6CCE1: virNetMessageEncodePayload (virnetmessage.c:341)
      ==27271==    by 0x4D5A44B: virNetClientProgramCall (virnetclientprogram.c:327)
      ==27271==    by 0x4D36EDB: callWithFD (remote_driver.c:4546)
      ==27271==    by 0x4D36F7B: call (remote_driver.c:4567)
      ==27271==    by 0x4D3B2C1: remoteDomainPinVcpu (remote_client_bodies.h:1566)
      ==27271==    by 0x4D199D3: virDomainPinVcpu (libvirt.c:8585)
      ==27271==    by 0x4241F4: cmdVcpuPin (virsh.c:5262)
      ==27271==    by 0x4150A6: vshCommandRun (virsh.c:17712)
      ==27271==  Address 0x5602b80 is 0 bytes after a block of size 0 alloc'd
      ==27271==    at 0x4A04A28: calloc (vg_replace_malloc.c:467)
      ==27271==    by 0x4C89BDF: virAllocN (memory.c:129)
      ==27271==    by 0x423868: _vshCalloc.clone.2 (virsh.c:454)
      ==27271==    by 0x423EF9: cmdVcpuPin (virsh.c:5190)
      ==27271==    by 0x4150A6: vshCommandRun (virsh.c:17712)
      ==27271==    by 0x426583: main (virsh.c:19289)
      ==27271==
      ==27271==
      ==27271== 4 errors in context 2 of 2:
      ==27271== Invalid read of size 1
      ==27271==    at 0x424133: cmdVcpuPin (virsh.c:5245)
      ==27271==    by 0x4150A6: vshCommandRun (virsh.c:17712)
      ==27271==    by 0x426583: main (virsh.c:19289)
      ==27271==  Address 0x5602b80 is 0 bytes after a block of size 0 alloc'd
      ==27271==    at 0x4A04A28: calloc (vg_replace_malloc.c:467)
      ==27271==    by 0x4C89BDF: virAllocN (memory.c:129)
      ==27271==    by 0x423868: _vshCalloc.clone.2 (virsh.c:454)
      ==27271==    by 0x423EF9: cmdVcpuPin (virsh.c:5190)
      ==27271==    by 0x4150A6: vshCommandRun (virsh.c:17712)
      ==27271==    by 0x426583: main (virsh.c:19289)
      Signed-off-by: NAlex Jia <ajia@redhat.com>
      f228917a
  24. 04 2月, 2012 2 次提交
    • L
      virsh: add --graceful switch to destroy command · 3e952ecc
      Laine Stump 提交于
      This allows virsh to use the new VIR_DOMAIN_DESTROY_GRACEUL flag for
      virDomainDestroyFlags.
      3e952ecc
    • E
      build: prohibit raw malloc and free · a7cfd709
      Eric Blake 提交于
      Our HACKING discourages use of malloc and free, for at least
      a couple of years now.  But we weren't enforcing it, until now :)
      
      For now, I've exempted python and tests, and will clean those up
      in subsequent patches.  Examples should be permanently exempt,
      since anyone copying our examples won't have use of our
      internal-only memory.h via libvirt_util.la.
      
      * cfg.mk (sc_prohibit_raw_allocation): New rule.
      (exclude_file_name_regexp--sc_prohibit_raw_allocation): and
      exemptions.
      * src/cpu/cpu.c (cpuDataFree): Avoid false positive.
      * src/conf/network_conf.c (virNetworkDNSSrvDefParseXML): Fix
      offenders.
      * src/libxl/libxl_conf.c (libxlMakeDomBuildInfo, libxlMakeVfb)
      (libxlMakeDeviceModelInfo): Likewise.
      * src/rpc/virnetmessage.c (virNetMessageSaveError): Likewise.
      * tools/virsh.c (_vshMalloc, _vshCalloc): Likewise.
      a7cfd709