1. 03 3月, 2012 2 次提交
    • L
      util: combine bools in virNetDevTapCreateInBridgePort into flags · d1c31023
      Laine Stump 提交于
      With an additional new bool added to determine whether or not to
      discourage the use of the supplied MAC address by the bridge itself,
      virNetDevTapCreateInBridgePort had three booleans (well, 2 bools and
      an int used as a bool) in the arg list, which made it increasingly
      difficult to follow what was going on. This patch combines those three
      into a single flags arg, which not only shortens the arg list, but
      makes it more self-documenting.
      d1c31023
    • A
      util: centralize tap device MAC address 1st byte "0xFE" modification · c1b164d7
      Ansis Atteka 提交于
      When a tap device for a domain is created and attached to a bridge,
      the first byte of the tap device MAC address is set to 0xFE, while the
      rest is set to match the MAC address that will be presented to the
      guest as its network device MAC address. Setting this high value in
      the tap's MAC address discourages the bridge from using the tap
      device's MAC address as the bridge's own MAC address (Linux bridges
      always take on the lowest numbered MAC address of all attached devices
      as their own).
      
      In one case within libvirt, a tap device is created and attached to
      the bridge with the intent that its MAC address be taken on by the
      bridge as its own (this is used to assure that the bridge has a fixed
      MAC address to prevent network outages created by the bridge MAC
      address "flapping" as guests are started and stopped). In this case,
      the first byte of the mac address is *not* altered to 0xFE.
      
      In the current code, callers to virNetDevTapCreateInBridgePort each
      make the MAC address modification themselves before calling, which
      leads to code duplication, and also prevents lower level functions
      from knowing the real MAC address being used by the guest. The problem
      here is that openvswitch bridges must be informed about this MAC
      address, or they will be unable to pass traffic to/from the guest.
      
      This patch centralizes the location of the MAC address "0xFE fixup"
      into virNetDevTapCreateInBridgePort(), meaning 1) callers of this
      function no longer need the extra strange bit of code, and 2)
      bitNetDevTapCreateBridgeInPort itself now is called with the guest's
      unaltered MAC address, and can pass it on, unmodified, to
      virNetDevOpenvswitchAddPort.
      
      There is no other behavioral change created by this patch.
      c1b164d7
  2. 02 3月, 2012 6 次提交
    • P
      daemon: Remove deprecated HAL from init script dependencies · 2dcca3ec
      Peter Krempa 提交于
      The init script for the daemon requests to start HAL although it has
      been deprecated long time ago. This patch removes the dependency.
      2dcca3ec
    • E
      build: fix output of pid values · 355ec281
      Eric Blake 提交于
      Nuke the last vestiges of printing pid_t values with the wrong
      types, at least in code compiled on mingw64.  There may be other
      places, but for now they are only compiled on systems where the
      existing %d doesn't trigger gcc warnings.
      
      * src/rpc/virnetsocket.c (virNetSocketNew): Use %lld and casting,
      rather than assuming any particular int type for pid_t.
      * src/util/command.c (virCommandRunAsync, virPidWait)
      (virPidAbort): Likewise.
      (verify): Drop a now stale assertion.
      355ec281
    • 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
    • E
      build: prohibit cross-inclusion · 5c3a1564
      Eric Blake 提交于
      Make it easier to detect invalid cross-directory includes, by
      adding a syntax check.  The check is designed to be extensible:
      the default case lists only the non-driver directories, and
      specific directories can list a different set (for example,
      util/ can only use itself, network/ can only use itself, util/,
      or conf/).
      
      * .gnulib: Update to latest, for syntax check improvment.
      * cfg.mk (sc_prohibit_cross_inclusion): New check.
      (sc_prohibit_strncmp, sc_libvirt_unmarked_diagnostics): Simplify.
      5c3a1564
    • H
      avoid global variable shadowed · 362077e7
      Hu Tao 提交于
      If "conf/domain_conf.h" included in file nodeinfo.c, gcc complains about
      a variable shadowing. fix it for potential further including of the file.
      
      ref: https://www.redhat.com/archives/libvir-list/2012-February/msg00955.html
      362077e7
    • L
      util: remove unneeded #include in virrandom.c · 3c30fbcd
      Laine Stump 提交于
      Commit 7c90026d added #include "conf/domain_conf.h" to
      util/virrandom.c. Fortunately it didn't actually use anything from
      domain_conf.h, since as far as I'm aware, files in util aren't allowed
      to reference anything in conf (although the opposite is allowed). So
      this #include is unnecessary.
      
      I verified it still compiles with the line removed, but have placed a
      one day moratorium on me doing any "trivial rule" pushes, so will
      wait for someone else to verify/ACK before pushing.
      3c30fbcd
  3. 01 3月, 2012 7 次提交
    • 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
    • E
      qemu: pass block pull backing file to monitor · 10ec36e2
      Eric Blake 提交于
      This actually wires up the new optional parameter to block_stream:
      http://wiki.qemu.org/Features/LiveBlockMigration/ImageStreamingAPI
      
      The error checking is still sparse, since libvirt must not use
      qemu-img or header probing on a qcow2 file in use by qemu to
      check if the backing file name is valid; so for now, libvirt is
      relying on qemu to diagnose an incorrect backing name.  Fixing this
      will require libvirt to track the entire backing file chain at the
      time qemu is started and keeps it updated with snapshot and pull
      operations.
      
      * src/qemu/qemu_monitor_json.c (qemuMonitorJSONBlockJob): Add
      parameter, and update callers.
      * src/qemu/qemu_monitor_json.h (qemuMonitorJSONBlockJob): Update
      signature.
      * src/qemu/qemu_monitor.h (qemuMonitorBlockJob): Likewise.
      * src/qemu/qemu_driver.c (qemuDomainBlockJobImpl): Update caller.
      * src/qemu/qemu_monitor.c (qemuMonitorBlockJob): Likewise.
      10ec36e2
    • E
      qemu: require json for block jobs · 68a13005
      Eric Blake 提交于
      Block job commands are not part of upstream qemu until 1.1; and
      proper support of job completion and cancellation depends on being
      able to receive QMP events, which implies the JSON monitor.
      Additionally, some early versions of block job commands were
      backported to RHEL qemu, but these versions lacked asynchronous
      job cancellation and partial block pull, so there are several
      patches that will still be needed in this area of libvirt code
      to support both flavors of block job commands.
      
      Due to earlier patches in libvirt, we are guaranteed that all versions
      of qemu that support block job commands already require libvirt to
      use the JSON monitor.  That means that the text version of block jobs
      will not be used, and having to refactor two copies of the block job
      handlers makes no sense.  So instead, we delete the text handlers.
      
      * src/qemu/qemu_monitor.c (qemuMonitorBlockJob): Drop text monitor
      support.
      * src/qemu/qemu_monitor_text.h (qemuMonitorTextBlockJob): Delete.
      * src/qemu/qemu_monitor_text.c (qemuMonitorTextParseBlockJobOne)
      (qemuMonitorTextParseBlockJob, qemuMonitorTextBlockJob):
      Likewise.
      68a13005
    • L
      513fc057
    • L
      util: wrap virnetlink.c to 80 columns · e91be41e
      Laine Stump 提交于
      e91be41e
    • E
      build: update to latest gnulib · 47d05109
      Eric Blake 提交于
      It's been a while, and we're between releases, so now's as good
      a time as any to resync.  This also fixes a build-breaker on
      cygwin, where cygwin 1.7.11 introduced a header bug in <termios.h>.
      
      * .gnulib: Update to latest.
      * bootstrap: Resync.
      * cfg.mk (sc_prohibit_strncmp): Copy upstream changes to
      sc_prohibit_strcmp.
      47d05109
    • C
      Fix typo in domain XML documentation · df873c80
      Christophe Fergeau 提交于
      s/Modyfing/Modifying
      df873c80
  4. 29 2月, 2012 16 次提交
  5. 28 2月, 2012 9 次提交
    • L
      libxl: eliminate memory leak in libxmlDomainModifyDeviceFlags · 3207de30
      Laine Stump 提交于
      This call to virDomainDeviceDefParse is both unnecessary (since
      it will again be called at the top of the immediately following if(),
      and if not there, then at the top of the if following that), but it
      also creates a leak of one virDomainDeviceDef and one [whatever type
      of device the DeviceDef is pointing to; probably a virDomainDiskDef]
      in the case that the function has been called with
      VIR_DOMAIN_DEVICE_MODIFY_CONFIG (the second parse will overwrite the
      devicedef that was just created).
      3207de30
    • O
      virsh: Break long lines in virsh.pod · 3aab4d79
      Osier Yang 提交于
      No content changes, just breaking long lines.
      3aab4d79
    • O
      virsh: New command cmdChangeMedia · 33855f5d
      Osier Yang 提交于
      One could use it to eject, insert, or update media of the CDROM
      or floppy drive. See the documentation for more details.
      33855f5d
    • O
      virsh: Use vshFindDisk and vshPrepareDiskXML in cmdDetachDisk · 42accf1b
      Osier Yang 提交于
      The first use of the two new helper functions.
      42accf1b
    • O
      virsh: Two new helper functions for disk device changes · 025998eb
      Osier Yang 提交于
      vshFindDisk is to find the disk node in xml doc with given source
      path or target of disk device, and type (indicates disk type,
      normal disk or changeable disk).
      
      vshPrepareDiskXML is to make changes on the disk node (e.g. create
      and insert the new <source> node for inserting media of CDROM drive).
      
      They are marked as unused temporarily.
      025998eb
    • O
      c4302486
    • O
      qemu: Build command line for the new address format · c56fe7f1
      Osier Yang 提交于
      For any disk controller model which is not "lsilogic", the command
      line will be like:
      
        -drive file=/dev/sda,if=none,id=drive-scsi0-0-3-0,format=raw \
        -device scsi-disk,bus=scsi0.0,channel=0,scsi-id=3,lun=0,i\
        drive=drive-scsi0-0-3-0,id=scsi0-0-3-0
      
      The relationship between the libvirt address attrs and the qdev
      properties are (controller model is not "lsilogic"; strings
      inside <> represent libvirt adress attrs):
        bus=scsi<controller>.0
        channel=<bus>
        scsi-id=<target>
        lun=<unit>
      
      * src/qemu/qemu_command.h: (New param "virDomainDefPtr def"
        for function qemuBuildDriveDevStr; new param "virDomainDefPtr
        vmdef" for function qemuAssignDeviceDiskAlias. Both for
        virDomainDiskFindControllerModel's use).
      
      * src/qemu/qemu_command.c:
        - New param "virDomainDefPtr def" for qemuAssignDeviceDiskAliasCustom.
          For virDomainDiskFindControllerModel's use, if the disk bus is "scsi"
          and the controller model is not "lsilogic", "target" is one part of
          the alias name.
        - According change on qemuAssignDeviceDiskAlias and qemuBuildDriveDevStr
      
      * src/qemu/qemu_hotplug.c:
        - Changes to be consistent with declarations of qemuAssignDeviceDiskAlias
          qemuBuildDriveDevStr, and qemuBuildControllerDevStr.
      
      * tests/qemuxml2argvdata/qemuxml2argv-pseries-vio-user-assigned.args,
        tests/qemuxml2argvdata/qemuxml2argv-pseries-vio.args: Update the
        generated command line.
      c56fe7f1
    • O
      05fbe728
    • O
      conf: Introduce new attribute for device address format · 4288b22f
      Osier Yang 提交于
      * src/conf/domain_conf.h: Add new member "target" to struct
        _virDomainDeviceDriveAddress.
      
      * src/conf/domain_conf.c: Parse and format "target"
      
      * Lots of tests (.xml) in tests/domainsnapshotxml2xmlout,
        tests/qemuxml2argvdata, tests/qemuxml2xmloutdata, and
        tests/vmx2xmldata/ are modified for newly introduced
        attribute "target" for address of "drive" type.
      4288b22f