1. 17 4月, 2015 18 次提交
    • Z
      qemuDomainShutdownFlags: Set fakeReboot more frequently · 8be502fd
      zhang bo 提交于
      When a qemu domain is to be rebooted, from outside, at libvirt
      level it looks like regular shutdown. To really restart the
      domain, libvirt needs to issue reset command on the monitor once
      SHUTDOWN event appeared. So, in order to differentiate bare
      shutdown and reboot libvirt uses a variable within domain private
      data. It's called fakeReboot. When the reboot API is called, the
      variable is set, but when the shutdown API is called it must be
      cleared out. But it was not for every possible case. So if user
      called virDomainReboot(), and there was no ACPI daemon running
      inside the guest (so guest didn't initiated shutdown sequence)
      and then virDomainShutdown(mode=agent) was called bad thing
      happened. We remembered the fakeReboot and instead of shutting
      the domain down, we just rebooted it.
      Signed-off-by: NZhang Bo <oscar.zhangbo@huawei.com>
      Signed-off-by: NWang Yufei <james.wangyufei@huawei.com>
      Signed-off-by: NMichal Privoznik <mprivozn@redhat.com>
      8be502fd
    • M
      Introduce virNetDevBandwidthUpdateFilter · 176a95fd
      Michal Privoznik 提交于
      This is a simple wrapper around virNetDevBandwidthManipulateFilter() that
      will update the desired filter on an interface (usually a network bridge)
      with a new MAC address. Although, the MAC address in question usually
      refers to some other interface - the one that the filter is constructed
      for. Yeah, hard to parse. Thing is, our NATed network has a bridge where
      some part of QoS takes place. And vNICs from guests are plugged into
      the bridge. However, if a guest decides to change the MAC of its vNIC,
      the corresponding qemu process emits an event which we can use to
      update the QoS configuration based on the new MAC address.. However,
      our QoS hierarchy is currently not notified, therefore it falls apart.
      This function (when called in response to the aforementioned event)
      will update our QoS hierarchy and duct tape it together again.
      Signed-off-by: NMichal Privoznik <mprivozn@redhat.com>
      176a95fd
    • M
      virnetdevbandwidth.c: Separate tc filter creation to a function · c6f0be2f
      Michal Privoznik 提交于
      Not only this simplifies the code a bit, it prepares the
      environment for upcoming patches. The new
      virNetDevBandwidthManipulateFilter() function is capable of both
      removing a filter and adding a new one. At the same time! Yeah,
      this is not currently used anywhere but look at the next commit
      where you'll see it.
      Signed-off-by: NMichal Privoznik <mprivozn@redhat.com>
      c6f0be2f
    • M
      virNetDevBandwidthSet: Add priority to filter · 2397be69
      Michal Privoznik 提交于
      Currently, when constructing traffic shaping rules, the ingress
      filter is created without any priority specified on the command
      line. This makes kernel to make up one. While this works, it
      simplifies things a bit if we provide the filter priority. In
      this case, since it's the root filter lets give it the highest
      priority of number 1.
      Signed-off-by: NMichal Privoznik <mprivozn@redhat.com>
      2397be69
    • M
      virDomainActualNetDefContentsFormat: Format class_id more frequently · b68a56bc
      Michal Privoznik 提交于
      After a3609121 the formatting of virDomainActualNetDefPtr was
      changed a bit. However, during the function rewrite, iface's class_id
      is not formatted as frequently as it could be. In fact, after rewrite
      it's formatted only for iface of type VIR_DOMAIN_NET_TYPE_DIRECT where
      it makes no sense and is unused. While where needed (_TYPE_NETWORK) is
      not formatted at all. This makes the daemon forget it upon daemon
      restart resulting in bad behaviour.
      Signed-off-by: NMichal Privoznik <mprivozn@redhat.com>
      b68a56bc
    • M
      nwfilter: Partly initialize driver even for non-privileged users · 77d92e2e
      Michal Privoznik 提交于
      https://bugzilla.redhat.com/show_bug.cgi?id=1211436
      
      This reverts commit b7829f95.
      
      The previous fix was not correct. Like everywhere else, a driver is a
      global variable allocated in stateInitialize function (or something
      similar for stateless drivers). Later, when a driver API is called,
      it's possible that the global variable is accessed and dereferenced.
      Now, some drivers require root privileges because they undertake some
      actions reserved only for the system admin (e.g. manipulating host
      firewall). And here's the trouble, the NWFilter state initializer
      exited too early when finding out it's running unprivileged, leaving
      the global NWFilter driver variable uninitialized. Any subsequent
      API call that tried to lock the driver resulted in dereferencing the
      driver and thus crash.
      
      On the other hand, in order to not resurrect the bug the original
      commit was fixing, Let's forbid the nwfilter define in session mode.
      Signed-off-by: NMichal Privoznik <mprivozn@redhat.com>
      
      Conflicts:
      	src/nwfilter/nwfilter_driver.c: Context. Code changed a bit
              since 2013.
      77d92e2e
    • M
      virNetSocketNewConnectUNIX: Don't unlink(NULL) · 1fdac3d9
      Michal Privoznik 提交于
      There is a possibility that we jump onto error label with @lockpath
      still initialized to NULL. Here, the @lockpath should be unlink()-ed,
      but passing there a NULL is not a good idea. Don't do that. In fact,
      we should call unlink() only if we created the lock file successfully.
      Reported-by: NJohn Ferlan <jferlan@redhat.com>
      Signed-off-by: NMichal Privoznik <mprivozn@redhat.com>
      1fdac3d9
    • L
      lxc: move wireless PHYs to a network namespace · 3a495948
      Lubomir Rintel 提交于
      The 802.11 interfaces can not be moved by themselves, their Phy has to move too.
      
      If there are other interfaces, they have to move too -- hopefully it's not too
      confusing. This is a less-invasive alternative to defining a new hostdev type
      for PHYs.
      Signed-off-by: NMichal Privoznik <mprivozn@redhat.com>
      3a495948
    • J
      libxl: drop virDomainObj lock when destroying a domain · 6dfec1ef
      Jim Fehlig 提交于
      A destroy operation can take considerable time on large memory
      domains due to scrubbing the domain's memory.  Unlock the
      virDomainObj while libxl_domain_destroy is executing.
      
      Implement libxlDomainDestroyInternal wrapper to handle unlocking,
      calling destroy, and locking.  Change all callers of
      libxl_domain_destroy to use the wrapper.
      Signed-off-by: NJim Fehlig <jfehlig@suse.com>
      6dfec1ef
    • J
      libxl: acquire a job when destroying a domain · 894d2ff7
      Jim Fehlig 提交于
      A job should be acquired at the beginning of a domain destroy operation,
      not at the end when cleaning up the domain.  Fix two occurrences of this
      late job acquisition in the libxl driver.  Doing so renders
      libxlDomainCleanupJob unused, so it is removed.
      Signed-off-by: NJim Fehlig <jfehlig@suse.com>
      894d2ff7
    • J
      libxl: Move job acquisition in libxlDomainStart to callers · f86ae403
      Jim Fehlig 提交于
      Let callers of libxlDomainStart decide when it is appropriate to
      acquire a job on the associated virDomainObj.
      Signed-off-by: NJim Fehlig <jfehlig@suse.com>
      f86ae403
    • J
      libxl: support HVM direct kernel boot · 13e2c220
      Jim Fehlig 提交于
      Add support for HVM direct kernel boot in libxl.  Also add a
      test to verify domXML <-> native conversions.
      Signed-off-by: NChunyan Liu <cyliu@suse.com>
      Signed-off-by: NJim Fehlig <jfehlig@suse.com>
      13e2c220
    • J
      xenconfig: don't use "kernel" for hvmloader · 0fe504f1
      Jim Fehlig 提交于
      In xl config, hvmloader is implied for hvm guests.  It is not
      specified with the "kernel" option like xm config.  The "kernel"
      option, along with "ramdisk" and "extra", is used for HVM direct
      kernel boot.  Instead of using "kernel" option to populate
      virDomainDef object's os.loader->path, use hvmloader discovered
      when gathering capabilities.
      
      This change required fixing initialization of capabilities in
      the test utils and removing 'kernel = "/usr/lib/xen/boot/hvmloader"'
      from the test config files.
      0fe504f1
    • J
      xenconfig: move <os> parsing/formating to config-specific files · 717a9251
      Jim Fehlig 提交于
      xl and xm differ a bit in how <os> configuration is represented.
      E.g. xl config supports <os><nvram .../></os> via its "bios"
      setting.
      
      Move the xenParseOS and xenFormatOS functions from xen_common.c
      and copy to xen_xl.c and xen_xm.c so they can be customized for
      xm vs xl config.  An unfortunate fallout is reordering of entries
      in the test config files.
      717a9251
    • J
      xenconfig: remove redunant parsing of device_model · a9b0d647
      Jim Fehlig 提交于
      device_model is parsed in xenParseOS(), then later in
      xenParseConfigCommon().  <emulator> is not part of <os>,
      so makes sense to remove the parsing in xenParseOS().
      a9b0d647
    • J
      xenconfig: export xenConfigCopyString · 8680a19b
      Jim Fehlig 提交于
      Export xenConfigCopyString for use outside of xen_common.c
      Signed-off-by: NJim Fehlig <jfehlig@suse.com>
      8680a19b
    • P
      virbuffer: fix build on rhel-6 · 358dbf84
      Pavel Hrdina 提交于
      On rhel-6 is broken gcc that reports this warning:
      
      util/virbuffer.c:500: error: logical '&&' with non-zero constant will
          always evaluate as true [-Wlogical-op]
      
      Move the pragma directive before function virBufferEscapeString because
      since commit aeb5262e this function uses 'strchr' too.
      Signed-off-by: NPavel Hrdina <phrdina@redhat.com>
      358dbf84
    • J
      storage: Refactor virStorageBackendSCSINewLun · 0cf87b51
      John Ferlan 提交于
      Invert the logical of retval and clean up code paths, especially goto's
      Signed-off-by: NJohn Ferlan <jferlan@redhat.com>
      0cf87b51
  2. 16 4月, 2015 12 次提交
  3. 15 4月, 2015 10 次提交
    • J
      Add an example for EVENT_ID_DEVICE_ADDED · a809c474
      Ján Tomko 提交于
      a809c474
    • J
      Emit VIR_DOMAIN_EVENT_ID_DEVICE_ADDED in the QEMU driver · b693b2fb
      Ján Tomko 提交于
      Only for devices that have an alias.
      b693b2fb
    • J
      Add VIR_DOMAIN_EVENT_ID_DEVICE_ADDED event · 1882c0bd
      Ján Tomko 提交于
      The counterpart to VIR_DOMAIN_EVENT_ID_DEVICE_REMOVED.
      
      https://bugzilla.redhat.com/show_bug.cgi?id=1206114
      1882c0bd
    • M
      Cleanup "/sys/class/net" usage · 96a21e97
      Michal Privoznik 提交于
      Throughout the code, we have several places need to construct a path
      somewhere in /sys/class/net/... They are not consistent and nearly
      each code piece invents its own way how to do it. So unify this by:
      
      1) use virNetDevSysfsFile() wherever possible
      
      2) At least use common macro SYSFS_NET_DIR declared in virnetdev.h at
         the rest of places which can't go with 1)
      Signed-off-by: NMichal Privoznik <mprivozn@redhat.com>
      96a21e97
    • M
      tests: Add virnetdevtestdata to EXTRA_DIST · 598f3fdd
      Michal Privoznik 提交于
      In one of my previous commits (49ed6cff) I've introduced a test
      among with some files stored under virnetdevtestdata folder.
      While this works perfectly within a git tree, the folder was not
      getting into .tar.gz and therefore the dist-check would fail.
      Signed-off-by: NMichal Privoznik <mprivozn@redhat.com>
      598f3fdd
    • J
      tests: Resolve Coverity RESOURCE_LEAK · 960e009c
      John Ferlan 提交于
      Commit id 'b77ce18a' added a new bitmap, but neglected to virBitmapFree it
      960e009c
    • E
      virsh: fix regression in 'virsh event' by domain · 31ef0836
      Eric Blake 提交于
      Commit a0670aef caused a regression in 'virsh event' and
      'virsh qemu-monitor-event' - if a user tries to filter the
      command to a specific domain, an error message is printed:
      
      $ virsh event dom --loop
      error: internal error: virsh qemu-monitor-event: no domain VSH_OT_DATA option
      
      and then the command continues as though no domain had been
      supplied (giving events for ALL domains, instead of the
      requested one).  This is because the code was incorrectly
      assuming that all "domain" options would be supplied via a
      mandatory VSH_OT_DATA, even though "domain" is optional for
      these two commands, so we had changed them to VSH_OT_STRING
      to quit failing for other reasons (ever since it was decided
      that VSH_OT_DATA and VSH_OT_STRING should no longer be
      synonyms).
      
      In looking at the situation, though, the code for looking up
      a domain was making a pointless check for whether the option
      exists prior to finding the option's string value, as
      vshCommandOptStringReq does just fine at reporting any errors
      when looking up a string whether or not the option was present.
      
      So this is a case of regression fixing by pure code deletion :)
      
      * tools/virsh-domain.c (vshCommandOptDomainBy): Drop useless filter.
      * tools/virsh-interface.c (vshCommandOptInterfaceBy): Likewise.
      * tools/virsh-network.c (vshCommandOptNetworkBy): Likewise.
      * tools/virsh-nwfilter.c (vshCommandOptNWFilterBy): Likewise.
      * tools/virsh-secret.c (vshCommandOptSecret): Likewise.
      * tools/virsh.h (vshCmdHasOption): Drop unused function.
      * tools/virsh.c (vshCmdHasOption): Likewise.
      Signed-off-by: NEric Blake <eblake@redhat.com>
      31ef0836
    • P
      node: udev: Remove some redundant error reports · ee1cc9a4
      Peter Krempa 提交于
      All the called functions already report an error.
      ee1cc9a4
    • M
      virPidFileConstructPath: Drop useless VIR_FREE() · 6515f3df
      Michal Privoznik 提交于
      If a virAsprintf() within the function fails, we call VIR_FREE()
      over @rundir variable and jump onto cleanup label, where it is
      freed again.  It doesn't hurt, but not make much sense too.
      Signed-off-by: NMichal Privoznik <mprivozn@redhat.com>
      6515f3df
    • P
      qemu: monitor: Fix qemuMonitorGetAllBlockStatsInfo with HMP · 79617134
      Peter Krempa 提交于
      Commit f6563bc3 introduced HMP impl of the function (so that a different
      uglier function could be removed). Before the HMP code is called there's
      a leftover check that the monitor is JSON which inhibits the code from
      working.
      79617134