1. 18 10月, 2012 20 次提交
  2. 24 9月, 2012 4 次提交
  3. 22 9月, 2012 5 次提交
    • L
      network: log error for unknown virNetworkUpdate command codes · 5cdcb75d
      Laine Stump 提交于
      Every level of the code for virNetworkUpdate was assuming that some
      other level was checking for validity of the "command" arg, but none
      actually were. The result was that an invalid command code would do
      nothing, but also report success.
      
      Since the command code isn't used until the very lowest level backend
      functions, that's where I put the check. I made a separate one-line
      function to log the error. The compiler would have combined the
      identical strings used by multiple calls if I'd just called
      virReportError directly in each location, but sending them all to the
      same string in the source guards against inadvertant divergence (which
      would lead to extra work for translators.)
      5cdcb75d
    • L
      network: make virNetworkObjUpdate error detection/recovery better · f59e25e0
      Laine Stump 提交于
      1) virNetworkObjUpdate should be an all or none operation, but in the
      case that we want to update both the live state and persistent config
      versions of the network, it was committing the update to the live
      state before starting to update the persistent config. If update of
      the persistent config failed, we would leave with things in an
      inconsistent state - the live state would be updated (even though an
      error was returned), but persistent config unchanged.
      
      This patch changed virNetworkObjUpdate to use a separate pointer for
      each copy of the virNetworkDef, and not commit either of them in the
      virNetworkObj until both live and config parts of the update have
      successfully completed.
      
      2) The parsers for various pieces of the virNetworkDef have all sorts
      of subtle limitations on them that may not be known by the
      Update[section] function, making it possible for one of these
      functions to make a modification directly to the object that may not
      pass the scrutiny of a subsequent parse. But normally another parse
      wouldn't be done on the data until the *next* time the object was
      updated (which could leave the network definition in an unusable
      state).
      
      Rather than fighting the losing battle of trying to duplicate all the
      checks from the parsers into the update functions as well, the more
      foolproof solution to this is to simply do an extra
      virNetworkDefCopy() operation on the updated networkdef -
      virNetworkDefCopy() does a virNetworkFormat() followed by a
      virNetworkParseString(), so it will do all the checks we need. If this
      fails, then we don't commit the changed def.
      f59e25e0
    • L
      network: don't "refresh" iptables rules on rule-less networks · 36ba0ee7
      Laine Stump 提交于
      The bridge driver implementation of virNetworkUpdate() removes and
      re-adds iptables rules any time a network has an <ip>, <forward>, or
      <forward>/<interface> element updated. There are some types of
      networks that have those elements and yet have no iptables rules
      associated with them, and unfortunately the functions that remove/add
      iptables rules don't check the type of network before attempting to
      remove/add the rules, sometimes leading to an erroneous failure of the
      entire update operation.
      
      Under normal circumstances I would refactor the lower level functions
      to be more robust, but to avoid code churn as much as possible, I've
      just added extra checks directly to networkUpdate().
      36ba0ee7
    • M
      Drop unused return value of virLogOutputFunc · fca338a0
      Miloslav Trmač 提交于
      Nothing uses the return value, and creating it requries otherwise
      unnecessary strlen () calls.
      
      This cleanup is conceptually independent from the rest of the series
      (although the later patches won't apply without it).  This just seems
      a good opportunity to clean this up, instead of entrenching the unnecessary
      return value in the virLogOutputFunc instance that will be added in this
      series.
      Signed-off-by: NMiloslav Trmač <mitr@redhat.com>
      fca338a0
    • T
      Remove redundant lines in src/qemu/qemu_driver.c · 9ce64e6a
      Tang Chen 提交于
      maxcpu and hostcpus are defined and calculated in qemudDomainPinVcpuFlags()
      and qemudDomainPinEmulator(), but never used. So remove them including nodeinfo.
      Signed-off-by: NTang Chen <tangchen@cn.fujitsu.com>
      9ce64e6a
  4. 21 9月, 2012 11 次提交
    • R
      Add <seclabel> to character devices. · f8b08d0e
      Richard W.M. Jones 提交于
      This allows the user to control labelling of each character device
      separately (the default is to inherit from the VM).
      Signed-off-by: NRichard W.M. Jones <rjones@redhat.com>
      f8b08d0e
    • R
      Make virSecurityDeviceLabelDefParseXML into generic device <seclabel> parser. · db2aff6a
      Richard W.M. Jones 提交于
      This is just code motion, allowing us to reuse the same function to
      parse the <seclabel> from character devices too.
      
      However it also fixes a possible segfault in the original code if
      VIR_ALLOC_N returns an error and the cleanup code (at the error:
      label) tries to iterate over the unallocated array (thanks Michal
      Privoznik for spotting this).
      Signed-off-by: NRichard W.M. Jones <rjones@redhat.com>
      db2aff6a
    • J
      qemu: Fix failure path in disk hotplug · 8125113c
      Jiri Denemark 提交于
      Disk hotplug is a two phase action: qemuMonitorAddDrive followed by
      qemuMonitorAddDevice. When the first part succeeds but the second one
      fails, we need to rollback the drive addition.
      8125113c
    • J
      locking: Remove README file in favor of internals/locking.html · 98be861b
      Jiri Denemark 提交于
      The README file seems to be a leftover from some previous version of
      locking driver. It is not consistent with what the code does nor is it
      consistent with existing documentation in internals/locking.html.
      98be861b
    • D
    • D
      Ensure existing selinux mount is removed before mounting new one in LXC · c15d8932
      Daniel P. Berrange 提交于
      Some kernel versions (at least RHEL-6 2.6.32) do not let you over-mount
      an existing selinuxfs instance with a new one. Thus we must unmount the
      existing instance inside our namespace.
      Signed-off-by: NDaniel P. Berrange <berrange@redhat.com>
      c15d8932
    • D
      Fix crash accessing a NULL URI when looking up auth credentials · ab42772a
      Daniel P. Berrange 提交于
      When auto-probing hypervisor drivers, the conn->uri field will
      initially be NULL. Care must be taken not to access members
      when doing auth lookups in the config file
      Signed-off-by: NDaniel P. Berrange <berrange@redhat.com>
      ab42772a
    • T
      Remove a redundant line in src/qemu/qemu_driver.c · 1437ea6f
      Tang Chen 提交于
      Signed-off-by: NTang Chen <tangchen@cn.fujitsu.com>
      1437ea6f
    • L
      network: backend for virNetworkUpdate of portgroups · 8b6f831c
      Laine Stump 提交于
      portgroup elements are located in the toplevel of <network>
      objects. There can be multiple <portgroup> elements, and they each
      have a unique name attribute.
      
      Add, delete, and modify are all supported for portgroup. When deleting
      a portgroup, only the name must be specified in the provided xml - all
      other attributes and subelements are ignored for the purposes of
      matching and existing portgroup.
      
      The bridge driver and virsh already know about the portgroup element,
      so providing this backend should cause the entire stack to work. Note
      that in the case of portgroup, there is no external daemon based on
      the portgroup config, so nothing must be restarted.
      
      It is important to note that guests make a copy of the appropriate
      network's portgroup data when they are started, so although an updated
      portgroup's configuration will have an affect on new guests started
      after the cahange, existing guests won't magically have their
      bandwidth changed, for example. If something like that is desired, it
      will take a lot of redesign work in the way network devices are setup
      (there is currently no link from the network back to the individual
      interfaces using it, much less from a portgroup within a network back
      to the individual interfaces).
      8b6f831c
    • L
      network: backend for virNetworkUpdate of dhcp range · 1100f610
      Laine Stump 提交于
      The dhcp range element is contained in the <dhcp> element of one of a
      network's <ip> elements. There can be multiple <range>
      elements. Because there are only two attributes (start and end), and
      those are exactly what you would use to identify a particular range,
      it doesn't really make sense to modify an existing element, so
      VIR_NETWORK_UPDATE_COMMAND_MODIFY isn't supported for this section,
      only ADD_FIRST, ADD_LAST, and DELETE.
      
      Since virsh already has support for understanding all the defined
      sections, this new backend is automatically supported by virsh. You
      would use it like this:
      
        virsh net-update mynet add ip-dhcp-range \
              "<range start='1.2.3.4' end='1.2.3.20'/>" --live --config
      
      The bridge driver also already supports all sections, so it's doing
      the correct thing in this case as well - since the dhcp range is
      placed on the dnsmasq commandline, the bridge driver recreates the
      dnsmasq commandline, and re-runs dnsmasq whenever a range is
      added/deleted (and AFFECT_LIVE is specified in the flags).
      1100f610
    • L
      virsh: new net-update command · fe787282
      Laine Stump 提交于
      This command uses the new virNetworkUpdate() API to modify an existing
      network definition, and optionally have those modifications take
      effect immediately without restarting the network.
      
      An example usage:
      
        virsh net-update mynet add-last ip-dhcp-host \
         "<host mac='00:11:22:33:44:55' ip='192.168.122.45'/>" \
         --live --config
      
      If you like, you can instead put the xml into a file, and call like
      this:
      
        virsh net-update mynet add ip-dhcp-host /tmp/myxml.xml
         --live --config
      
      virsh will autodetect whether the argument is itself an xml element,
      or if it's a file, by looking at the first character - the first
      character of an xml element is always "<", and the first character of
      a file is almost always *not* "<" (in the rare case that it is, the
      user could specify "./<filename...").
      
      A --parent-index option is also available (to give the index within a
      list of parent objects, e.g. the index of the parent <ip> element when
      updating ip-dhcp-host elements), but is optional and at least for now
      will probably be used rarely.
      
      --live, --config, and --current options - if you specify --live, only
      the live state of the network will be updated. If you also specify
      --config, then the persistent configuration will also be updated;
      these two commands can be given separately, or both together. If you
      don't specify either (you can optionally specify "--current" for the
      same effect), then the "current" config will be updated (i.e. if the
      network is active, then only its live config is affected, but if the
      network is inactive, only the persistent config is affected).
      fe787282