1. 12 5月, 2015 2 次提交
    • L
      qemu: eliminate duplicated code in qemuBuildDriveDevStr() · e27c5c8f
      Laine Stump 提交于
      The code to add device type to the commandline was identical for lsi
      and other models of SCSI controllers, but was duplicated (with the
      exception of a minor ordering difference of the if-else clauses) for
      the two cases. This patch replaces those two with a single instance of
      the code just before the if().
      e27c5c8f
    • L
      qemu: use qemuDomainMachineIsI440FX() in appropriate place · da558e72
      Laine Stump 提交于
      This patch makes qemuValideDevicePCISlotsChipsets() more consistent in
      appearance by replacing several clauses of an if with the equivalent
      call to qemuDomainMachineIsI440FX. The if was checking exactly the
      same items, just in a slightly different order.
      da558e72
  2. 11 5月, 2015 11 次提交
  3. 08 5月, 2015 1 次提交
    • C
      caps: Fix regression defaulting to host arch · 8910e063
      Cole Robinson 提交于
      My commit 747761a7 (v1.2.15 only) dropped this bit of logic when filling
      in a default arch in the XML:
      
      -    /* First try to find one matching host arch */
      -    for (i = 0; i < caps->nguests; i++) {
      -        if (caps->guests[i]->ostype == ostype) {
      -            for (j = 0; j < caps->guests[i]->arch.ndomains; j++) {
      -                if (caps->guests[i]->arch.domains[j]->type == domain &&
      -                    caps->guests[i]->arch.id == caps->host.arch)
      -                    return caps->guests[i]->arch.id;
      -            }
      -        }
      -    }
      
      That attempt to match host.arch is important, otherwise we end up
      defaulting to i686 on x86_64 host for KVM, which is not intended.
      Duplicate it in the centralized CapsLookup function.
      
      Additionally add some testcases that would have caught this.
      
      https://bugzilla.redhat.com/show_bug.cgi?id=1219191
      8910e063
  4. 07 5月, 2015 3 次提交
    • M
      processSerialChangedEvent: Close agent monitor early · 2af51483
      Michal Privoznik 提交于
      https://bugzilla.redhat.com/show_bug.cgi?id=890648
      
      So, imagine you've issued an API that involves guest agent. For
      instance, you want to query guest's IP addresses. So the API acquires
      QUERY_JOB, locks the guest agent and issues the agent command.
      However, for some reason, guest agent replies to initial ping
      correctly, but then crashes tragically while executing real command
      (in this case guest-network-get-interfaces). Since initial ping went
      well, libvirt thinks guest agent is accessible and awaits reply to the
      real command. But it will never come. What will is a monitor event.
      Our handler (processSerialChangedEvent) will try to acquire
      MODIFY_JOB, which will fail obviously because the other thread that's
      executing the API already holds a job. So the event handler exits
      early, and the QUERY_JOB is never released nor ended.
      
      The way how to solve this is to put flag somewhere in the monitor
      internals. The flag is called @running and agent commands are issued
      iff the flag is set. The flag itself is set when we connect to the
      agent socket. And unset whenever we see DISCONNECT event from the
      agent. Moreover, we must wake up all the threads waiting for the
      agent. This is done by signalizing the condition they're waiting on.
      Signed-off-by: NMichal Privoznik <mprivozn@redhat.com>
      2af51483
    • M
      qemuDomainShutdownFlags: check for domain activeness prior to guest presence · 21e8fc36
      Michal Privoznik 提交于
      Running shutdown with mode agent on a shutoff domain gives cryptic
      error message:
      
          virsh # shutdown --mode agent gentoo
          error: Failed to shutdown domain gentoo
          error: Guest agent is not responding: QEMU guest agent is not connected
      
      After this patch, the error is more clear:
      
          virsh # shutdown --mode agent gentoo
          error: Failed to shutdown domain gentoo
          error: Requested operation is not valid: domain is not running
      Reported-by: NMartin Kletzander <mkletzan@redhat.com>
      Signed-off-by: NMichal Privoznik <mprivozn@redhat.com>
      21e8fc36
    • L
      lxc: don't up the veth interfaces unless explicitly asked to · c3cf3c43
      Lubomir Rintel 提交于
      Upping an interface for no reason and not configuring it is a cardinal sin.
      
      With the default addrgenmode if eui64 it sticks a link-local address to the
      interface. That is not good, as NetworkManager would see an address configured,
      assume the interface is already configured and won't touch it iself and the
      interface might stay unconfigured until the end of the days.
      
      Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1124721Signed-off-by: NMichal Privoznik <mprivozn@redhat.com>
      c3cf3c43
  5. 06 5月, 2015 9 次提交
    • B
      qemu: multiqueue for ccw devices · 808e771e
      Boris Fiuczynski 提交于
      Allow ccw devices to be used with multiqueues. ccw provides a one to
      one relation of fds to queues and does not support the vectors option.
      Signed-off-by: NBoris Fiuczynski <fiuczy@linux.vnet.ibm.com>
      Reviewed-by: NMatthew Rosato <mjrosato@linux.vnet.ibm.com>
      Reviewed-by: NDaniel Hansel <daniel.hansel@linux.vnet.ibm.com>
      Reviewed-by: NCornelia Huck <cornelia.huck@de.ibm.com>
      808e771e
    • J
      qemu: Resolve Coverity FORWARD_NULL · b8e60f00
      John Ferlan 提交于
      Coverity points out that qemuMonitorGetAllBlockStatsInfo could return a
      -1 and thus not fill in 'stats' (leaving it NULL). Then the call to
      qemuMonitorBlockStatsUpdateCapacity will dereference it.
      b8e60f00
    • J
      qemu: Resolve Coverity FORWARD_NULL · 3e4ce359
      John Ferlan 提交于
      Coverity complains over the [n]values pairing in virQEMUCapsFreeStringList
      and rather than make a bunch if "if values" checks prior to calling, by
      just adding the values check inside the free function we avoid the chance
      that somehow nvalues is > 0, while values == NULL
      3e4ce359
    • J
      qemu: Resolve Coverity FORWARD_NULL · e7664eed
      John Ferlan 提交于
      Coverity points out it was possible to have a zero return from
      qemuBuildRNGBackendProps thus not filling in 'props' and then
      causing a NULL dereference on the next call.
      e7664eed
    • J
      xen: Resolve Coverity FORWARD_NULL · c9a8e594
      John Ferlan 提交于
      Coverity found that xenXMConfigCacheAddFile has an error path in which
      no error message and a -1 was not returned which could have resulted in
      a NULL dereference in a VIR_DEBUG statement and of course an erroneous
      0 value returned!
      c9a8e594
    • J
      qemu: Resolve Coverity FORWARD_NULL · 75dfbb85
      John Ferlan 提交于
      Coverity notes that ->ifname is used after the VIR_FREE done in the
      code path after the call to virNetDevMacVLanDeleteWithVPortProfile
      by a call to virNetDevOpenvswitchRemovePort.
      
      Since the ->ifname will be VIR_FREE()'d eventually in virDomainNetDefFree
      just remove the extraneous VIR_FREE here.
      
      When originally added, the Openvswitch code wasn't present and checks
      were made for non NULL prior to use.
      75dfbb85
    • J
      qemu: Resolve Coverity IDENTICAL_BRANCHES · 9ad32e50
      John Ferlan 提交于
      Coverity complains that in the error paths both the < 0 condition and
      the success path after the qemuDomainObjExitMonitor failure will end
      up going to cleanup.  So just use ignore_value in this error path to
      resolve the complaint.
      9ad32e50
    • J
      vbox: Resolve Coverity RESOURCE_LEAK · 74aab575
      John Ferlan 提交于
      If the virStringSearch() returns a 0 (zero), then each of the uses
      of the call will just jump to cleanup forgetting to free the returned
      empty list. Expand the scope a bit of each use and free at cleanup.
      74aab575
    • J
      libxl: Resolve Coverity RESOURCE_LEAK · 11b91679
      John Ferlan 提交于
      The returned socks from virNetSocketNewListenTCP needs to be VIR_FREE'd
      as well as seach of the Close/Unref on all the socks[i] that is
      already done
      11b91679
  6. 05 5月, 2015 9 次提交
    • J
      libxl: support soundhw for hvm domains · c0d3f608
      Jim Fehlig 提交于
      The xend driver and the parsing/formating code in src/xenconfig
      have long supported soundhw.  Add support in the libxl driver too.
      c0d3f608
    • L
      conf: Add the cpu duplicate use check for vm numa settings · 8fedbbdb
      Luyao Huang 提交于
      https://bugzilla.redhat.com/show_bug.cgi?id=1176020
      
      We had a check for the vcpu count total number in <numa>
      before, however this check is not good enough. There are
      some examples:
      
      1. one of cpu id is out of maxvcpus, can set success(cpu count = 5 < 10):
      
      <vcpu placement='static'>10</vcpu>
      <cell id='0' cpus='0-3,100' memory='512000' unit='KiB'/>
      
      2. use the same cpu in 2 cell, can set success(cpu count = 8 < 10):
      <vcpu placement='static'>10</vcpu>
      <cell id='0' cpus='0-3' memory='512000' unit='KiB'/>
      <cell id='1' cpus='0-3' memory='512000' unit='KiB'/>
      
      3. use the same cpu in 2 cell, cannot set success(cpu count = 11 > 10):
      <vcpu placement='static'>10</vcpu>
      <cell id='0' cpus='0-6' memory='512000' unit='KiB'/>
      <cell id='1' cpus='0-3' memory='512000' unit='KiB'/>
      
      Add a check for numa cpus, check if duplicate use one cpu in more
      than one cell.
      Signed-off-by: NLuyao Huang <lhuang@redhat.com>
      Signed-off-by: NMichal Privoznik <mprivozn@redhat.com>
      8fedbbdb
    • M
      qemu: Implement GIC · 608c95c7
      Michal Privoznik 提交于
      The only version that's supported in QEMU is version 2, currently.
      Fortunately, it is enabled by aarch64 automatically, so there's
      nothing for us that needs to be put onto command line.
      Signed-off-by: NMichal Privoznik <mprivozn@redhat.com>
      608c95c7
    • M
      Introduce GIC feature · 921c52b0
      Michal Privoznik 提交于
      Some platforms, like aarch64, don't have APIC but GIC. So there's
      no reason to have <apic/> feature turned on. However, we are
      still missing <gic/> feature. This commit introduces the feature
      to XML parser and formatter, adds documentation and updates RNG
      schema.
      Signed-off-by: NMichal Privoznik <mprivozn@redhat.com>
      921c52b0
    • J
      qemu: Properly rename persistent def after migration · fc3601a3
      Jiri Denemark 提交于
      When migrating a domain while changing its name and using
      VIR_MIGRATE_PERSIST_DEST flag, libvirt would fail to properly change the
      name in the persistent definition. The inconsistency results in weird
      behavior when dumping domain XML, destroying the domain, restarting
      libvirtd and likely in several other situations.
      
      Since the new name is already stored in vm->def->name, we just need to
      make sure the persistent definition uses this new name too.
      
      https://bugzilla.redhat.com/show_bug.cgi?id=1076354Signed-off-by: NJiri Denemark <jdenemar@redhat.com>
      fc3601a3
    • C
      storage: fs: Don't try to chown directory unless user requested · 28c547ed
      Cole Robinson 提交于
      Currently we try to chown any directory passed to virDirCreate,
      even if the user didn't request any explicit owner/group via the
      pool/vol XML.
      
      This causes issues with qemu:///session: try to build a pool of
      a root owned directory like /tmp, and it fails trying to chown the
      directory to the session user. Instead it should just leave things
      as they are, unless the user requests changing permissions via
      the pool XML.
      
      Similarly this is annoying if creating a storage pool via system
      libvirtd of an existing directory in user $HOME, it's now owned
      by root.
      
      The virDirCreate function is pretty convoluted, since it needs to
      fork off in certain specific cases. Try to document that, to make
      it clear where exactly we are changing behavior.
      28c547ed
    • C
      storage: fs: Don't attempt directory creation if it already exists · 262b3c05
      Cole Robinson 提交于
      The current code attempts to handle this, but it only catches mkdir
      failing with EEXIST. However if say trying to build /tmp for an
      unprivileged qemu:///session, mkdir will fail with EPERM.
      
      Rather than catch any errors, just don't attempt mkdir if the directory
      already exists.
      262b3c05
    • C
      storage: fs: Fill in permissions on pool refresh · d6f8b35d
      Cole Robinson 提交于
      This means pool XML actually reports accurate user/group/mode/label.
      
      This uses UpdateVolTargetInfoFD in a bit of a hackish way, but it works
      d6f8b35d
    • C
      storage: fs: Don't overwrite virDirCreate error · 27a4c492
      Cole Robinson 提交于
      virDirCreate will give us fine grained details about what actually failed.
      27a4c492
  7. 04 5月, 2015 5 次提交