1. 26 5月, 2010 4 次提交
    • S
      vepa: parsing for 802.1Qb{g|h} XML · a8f75d2c
      Stefan Berger 提交于
      This patch parses the following two XML descriptions, one for
      802.1Qbg and one for 802.1Qbh, and stores the data internally.
      The actual triggering of the switch setup protocol has not been
      implemented here but the relevant code to do that should go into
      the functions associatePortProfileId() and disassociatePortProfileId().
      
         <interface type='direct'>
            <source dev='eth0.100' mode='vepa'/>
            <model type='virtio'/>
            <virtualport type='802.1Qbg'>
              <parameters managerid='12' typeid='0x123456' typeidversion='1'
               instanceid='fa9b7fff-b0a0-4893-8e0e-beef4ff18f8f'/>
            </virtualport>
            <filterref filter='clean-traffic'/>
          </interface>
      
          <interface type='direct'>
            <source dev='eth0.100' mode='vepa'/>
            <model type='virtio'/>
            <virtualport type='802.1Qbh'>
              <parameters profileid='my_profile'/>
            </virtualport>
          </interface>
      
      I'd suggest to use this patch as a base for triggering the setup
      protocol with the 802.1Qb{g|h} switch.
      
      Several rounds of changes were made to this patch. The
      following is a list of these changes.
      - Renamed structure virVirtualPortProfileDef to virVirtualPortProfileParams
        as per Daniel Berrange's request
      - Addressing Daniel Berrange's comments:
       - removing macvtap.h's dependency on domain_conf.h by
         moving the virVirtualPortProfileDef structure into macvtap.h
         and not passing virtDomainNetDefPtr to any functions in
         macvtap.c
      - Addressed most of Chris Wright's comments:
        - indicating error in case virtualport XML node cannot be parsed
          properly
        - parsing hex and decimal numbers using virStrToLong_ui() with
          parameter '0' for base
        - tgifname (target interface name) variable wasn't necessary
          to pass to openMacvtapTap function anymore
      - assigning the virtual port data structure to the virDomainNetDef
        only if it was previously parsed
      - make sure that the error code returned by openMacvtapTap() is a negative n
        in case the associatePortProfileId() function failed.
      - renaming vsi in the XML to virtualport
      - replace all occurrences of vsi in the source as well
      - removing mode and MAC address parameters from the functions that
        will communicate with the hareware diretctly or indirectly
      - moving the associate and disassociate functions to the end of the
        file for subsequent patches to easier make them generally available
        for export
      - passing the macvtap interface name rather than the link device since
        this otherwise gives funny side effects when using netlink messages
        where IFLA_IFNAME and IFLA_ADDRESS are specified and the link dev
        all of a sudden gets the MAC address of the macvtap interface.
      - Removing rc = -1 error indications in the case of 802.1Qbg|h setup in case
        we wanted to use hook scripts for the setup and so the setup doesn't fail
        here.
      - if instance ID UUID is not supplied it will automatically be generated
        - adapted schema to make instance ID UUID optional
        - added test case
      - parser and XML generator have been separated into their own
        functions so they can be re-used elsewhere (passthrough case
        for example)
      - Adapted XML parser and generator support the above shown type
        (802.1Qbg, 802.1Qbh).
      - Adapted schema to above XML
      - Adapted test XML to above XML
      - Passing through the VM's UUID which seems to be necessary for
        802.1Qbh -- sorry no host UUID
      - adding virtual function ID to association function, in case it's
        necessary to use (for SR-IOV)
      a8f75d2c
    • S
      vepa+vsi: Introduce dependency on libnl · a34871d9
      Stefan Berger 提交于
      This patch introduces a dependency on libnl, which subsequent patches
      will then use.
      
      Changes from V1 to V2:
      - added diffstats
      - following changes in tree
      a34871d9
    • C
      storage: Sanitize pool target paths · a7fb2258
      Cole Robinson 提交于
      Spurious / in a pool target path makes life difficult for apps using the
      GetVolByPath, and doing other path based comparisons with pools. This
      has caused a few issues for virt-manager users:
      
      https://bugzilla.redhat.com/show_bug.cgi?id=494005
      https://bugzilla.redhat.com/show_bug.cgi?id=593565
      
      Add a new util API which removes spurious /, virFileSanitizePath. Sanitize
      target paths when parsing pool XML, and for paths passed to GetVolByPath.
      
      v2: Leading // must be preserved, properly sanitize path=/, sanitize
          away /./ -> /
      
      v3: Properly handle starting ./ and ending /.
      
      v4: Drop all '.' handling, just sanitize / for now.
      a7fb2258
    • D
      Expose a host UUID in the capabilities XML · 60881161
      Daniel P. Berrange 提交于
      Allow for a host UUID in the capabilities XML. Local drivers
      will initialize this from the SMBIOS data. If a sanity check
      shows SMBIOS uuid is invalid, allow an override from the
      libvirtd.conf configuration file
      
      * daemon/libvirtd.c, daemon/libvirtd.conf: Support a host_uuid
        configuration option
      * docs/schemas/capability.rng: Add optional host uuid field
      * src/conf/capabilities.c, src/conf/capabilities.h: Include
        host UUID in XML
      * src/libvirt_private.syms: Export new uuid.h functions
      * src/lxc/lxc_conf.c, src/qemu/qemu_driver.c,
        src/uml/uml_conf.c: Set host UUID in capabilities
      * src/util/uuid.c, src/util/uuid.h: Support for host UUIDs
      * src/node_device/node_device_udev.c: Use the host UUID functions
      * tests/confdata/libvirtd.conf, tests/confdata/libvirtd.out: Add
        new host_uuid config option to test
      60881161
  2. 25 5月, 2010 12 次提交
    • D
      Fix handling of disk backing stores with cgroups · e596dbb3
      Daniel P. Berrange 提交于
      The cgroups ACL code was only allowing the primary disk image.
      It is possible to chain images together, so we need to search
      for backing stores and add them to the ACL too. Since the ACL
      only handles block devices, we ignore the EINVAL we get from
      plain files. In addition it was missing code to teardown the
      cgroup when hot-unplugging a disk
      
      * src/qemu/qemu_driver.c: Allow backing stores in cgroup ACLs
        and add missing teardown code in unplug path
      e596dbb3
    • C
      Fix up basic migration. · 93500040
      Chris Lalancette 提交于
      Basic live migration was broken by the commit that added
      non-shared block support in two ways:
      
      1)  It added a virCheckFlags() to doNativeMigrate().  Besides
      the fact that typical usage of virCheckFlags() is in driver
      entry points, and doNativeMigrate() is not an entry point,
      it was missing important flags like VIR_MIGRATE_LIVE.  Move
      the virCheckFlags to the top-level qemuDomainMigratePrepare2
      and friends.
      
      2)  It also added a memory leak in qemuMonitorTextMigrate()
      by not freeing the memory used by virBufferContentAndReset().
      This is fixed by storing the pointer in a temporary variable
      and freeing it at the end.
      
      With this patch in place, normal live migration works again.
      
      v3: Instead of the churn for virCheckFlagsUI and UL, instead
      always promote flags to an unsigned long and always use %lx
      for the fprintf.
      v2: Add back flags check, which required adding virCheckFlagsUI
      and virCheckFlagsUL
      Signed-off-by: NChris Lalancette <clalance@redhat.com>
      93500040
    • C
      qemu: Allow using regular audio backends with VNC · fb3ebd03
      Cole Robinson 提交于
      Currently all host audio backends are disabled if a VM is using VNC, in
      favor of the QEMU VNC audio extension. Unfortunately no released VNC
      client supports this extension, so users have no way of getting audio
      to work if using VNC.
      
      Add a new config option in qemu.conf which allows changing libvirt's
      behavior, but keep the default intact.
      
      v2: Fix doc typos, change name to vnc_allow_host_audio
      fb3ebd03
    • C
      storage: mpath: Fix incorrect VIR_ERROR use · c82d106e
      Cole Robinson 提交于
      c82d106e
    • C
      Allow nwfilter functions to be compiled with C++ · 60d05f73
      Chris Lalancette 提交于
      Unfortunately the NWFilter functions were outside of the
      "extern C { ... }" declaration in include/libvirt/libvirt.h.in,
      which means that they couldn't be properly used with C++.  Move
      them inside of the braces, which should fix the problem.
      Signed-off-by: NChris Lalancette <clalance@redhat.com>
      60d05f73
    • S
      nwfilter: documentation · f36eb693
      Stefan Berger 提交于
      This patch adds documentation of the nwfilter subsystem of libvirt to
      the existing (web) docs.
      f36eb693
    • E
      maint: update AUTHORS with recent contributors · 7488107f
      Eric Blake 提交于
      git shortlog $(git log -1 --format=%H AUTHORS).. | grep -v "^ "
      
      then add missing entries to AUTHORS.
      
      * AUTHORS: Update.
      7488107f
    • A
    • A
      qemu: avoid corrupting guest info struct on host device PCI hot add · ddfd4dba
      Alex Williamson 提交于
      The device path doesn't make use of guestAddr, so the memcpy corrupts
      the guest info struct.
      Signed-off-by: NAlex Williamson <alex.williamson@redhat.com>
      ddfd4dba
    • D
      Query block allocation extent from QEMU monitor · ebb0c19c
      Daniel P. Berrange 提交于
      The virDomainGetBlockInfo API allows query physical block
      extent and allocated block extent. These are normally the
      same value unless storing a special format like qcow2
      inside a block device. In this scenario we can query QEMU
      to get the actual allocated extent.
      
      Since last time:
      
       - Return fatal error in text monitor
       - Only invoke monitor command for block devices
       - Fix error handling JSON code
      
      * src/qemu/qemu_driver.c: Fill in block aloction extent when VM
        is running
      * src/qemu/qemu_monitor.c, src/qemu/qemu_monitor.h,
        src/qemu/qemu_monitor_json.c, src/qemu/qemu_monitor_json.h,
        src/qemu/qemu_monitor_text.c, src/qemu/qemu_monitor_text.h: Add
        API to query the highest block extent via info blockstats
      ebb0c19c
    • J
      lxcSetSchedulerParameters: reverse order of tests; diagnose a failure · dd1058fa
      Jim Meyering 提交于
      * src/lxc/lxc_driver.c (lxcSetSchedulerParameters): Ensure that
      "->field" is "cpu_shares" before possibly giving a diagnostic about
      a type for a "cpu_shares" value.
      Also, virCgroupSetCpuShares could fail without evoking a diagnostic.
      Add one.
      dd1058fa
    • C
      fff6be0c
  3. 24 5月, 2010 3 次提交
    • C
      storage: Combine some duplicate code · e40a285b
      Cole Robinson 提交于
      Volume detection in the scsi backend was duplicating code already
      present in storage_backend.c. Let's drop the duplicate code.
      
      Also, change the shared function name to be less generic, and remove
      some error squashing in the other call site.
      e40a285b
    • C
      storage: mpath: Clean up some error handling · 5086f85c
      Cole Robinson 提交于
      We were squashing error messages in a few cases. Recode to follow common
      ret = -1 convention.
      
      v2: Handle more error squashing issues further up in MakeNewVol and
          CreateVols. Use ret = -1 convention in MakeVols.
      5086f85c
    • J
      Remove dead code after refactoring qemudDomainStart · bfa6b73e
      Jiri Denemark 提交于
      The event is already generated and sent by qemudDomainObjStart, no need
      to do anything about here.
      bfa6b73e
  4. 23 5月, 2010 2 次提交
    • J
      libvirtd: start each diagnostic with "argv0: " · d5fda6d6
      Jim Meyering 提交于
      Some diagnostics had a hard-coded "libvirtd: " prefix, some used
      "error: " and some used "argv[0]: ".  Always use "argv[0]: ".
      * daemon/libvirtd.c (argv0): New global.
      (main): Set it.
      (version, usage): Remove argv0 parameter.  Use global; update callers.
      (daemonForkIntoBackground): Use argv0:, not error:.
      (qemudWritePidFile): Start each diagnostic with argv0:.
      Suggested by Eric Blake.
      d5fda6d6
    • J
      libvirtd: mark strings for translation, including --help output · 0c316338
      Jim Meyering 提交于
      * daemon/libvirtd.c (daemonForkIntoBackground, main): Mark strings
      for translation.
      (usage): Rework --help so that it is translatable, replacing
      each embedded, configuration-dependent, macro with an `%s'.
      
      libvirtd: don't ignore virInitialize failure
      * daemon/libvirtd.c (main): Diagnose virInitialize failure
      and exit nonzero.
      0c316338
  5. 22 5月, 2010 8 次提交
    • E
      build: fix cppi warnings · 0e1f4633
      Eric Blake 提交于
      * src/util/bitmap.h (includes): Placate cppi.
      0e1f4633
    • E
      build: force init scripts to rebuild on changed --prefix · 482e08a9
      Eric Blake 提交于
      Otherwise, './configure --prefix=/foo && make &&
       ./configure --prefix=/bar && make' leaves the wrong files
      in libvirtd.init (/foo instead of /bar).
      
      * daemon/Makefile.am (libvirtd.init): Add dependency on
      config.status.  Reported by Cole Robinson.
      482e08a9
    • M
      build: Distribute the whole tests/qemuhelpdata directory · 9c563e76
      Matthias Bolte 提交于
      Instead of distributing the individual files.
      
      Now it's less error prone and consistent with the rest of
      the data directories in the tests directory.
      9c563e76
    • C
      .gitignore: Add libvirt-guests.init · afa3f0af
      Cole Robinson 提交于
      afa3f0af
    • J
      Fix race in finding available vnc port · ba196952
      Jim Fehlig 提交于
      The qemu driver contains a subtle race in the logic to find next
      available vnc port.  Currently it iterates through all available ports
      and returns the first for which bind(2) succeeds.  However it is possible
      that a previously issued port has not yet been bound by qemu, resulting
      in the same port used for a subsequent domain.
      
      This patch addresses the race by using a simple bitmap to "reserve" the
      ports allocated by libvirt.
      
      V2:
        - Put port bitmap in struct qemud_driver
        - Initialize bitmap in qemudStartup
      
      V3:
        - Check for failure of virBitmapGetBit
        - Additional check for port != -1 before calling virbitmapClearBit
      
      V4:
        - Check for failure of virBitmap{Set,Clear}Bit
      ba196952
    • J
      Add defines for QEMU_VNC_PORT_{MIN,MAX} and use them · c020f620
      Jim Fehlig 提交于
      c020f620
    • J
      Add simple bitmap operations to utils · 2f32d7af
      Jim Fehlig 提交于
      V2:
        - Move bitmap impl to src/util/bitmap.[ch]
        - Use CHAR_BIT instead of explicit '8'
        - Use size_t instead of unsigned int
        - Fix calculation of bitmap size in virBitmapAlloc
        - Ensure bit is within range of map in the set, clear, and get
          operations
        - Use bool in virBitmapGetBit
        - Add virBitmapFree to free-like funcs in cfg.mk
      
      V3:
        - Check for overflow in virBitmapAlloc
        - Fix copy and paste bug in virBitmapAlloc
        - Use size_t in prototypes
        - Add ATTRIBUTE_NONNULL in prototypes where appropriate
          and remove NULL check from impl
      
      V4:
        - Add ATTRIBUTE_RETURN_CHECK in prototypes where appropriate.
      2f32d7af
    • C
      daemon: Export SDL audio environment variables · 377bc412
      Cole Robinson 提交于
      /etc/sysconfig/libvirtd has a few environment variables for configuring
      libvirt SDL audio. The libvirtd process doesn't see these, however, because
      they are never exported. Let's export the variables after sourcing the
      sysconfig script.
      
      There is another problem here that the commented out values in the
      sysconfig script are not neccessarily the actual defaults, we are qemus
      mercy here. Not sure how to solve that.
      377bc412
  6. 21 5月, 2010 11 次提交
    • C
      Remove isValidIfname. · 8583b947
      Chris Lalancette 提交于
      We shouldn't be checking validity in domain_conf, since
      it can be used by multiple different hosts and hypervisors.
      Remove the check completely.
      Signed-off-by: NChris Lalancette <clalance@redhat.com>
      8583b947
    • J
      Init script for handling guests on shutdown/boot · 66823690
      Jiri Denemark 提交于
      Example output during shutdown:
      
      Running guests on default URI: console, rhel6-1, rhel5-64
      Running guests on lxc:/// URI: lxc-shell
      Running guests on xen:/// URI: error: no hypervisor driver available for xen:///
      error: failed to connect to the hypervisor
      Running guests on vbox+tcp://orkuz/system URI: no running guests.
      Suspending guests on default URI...
      Suspending console: done
      Suspending rhel6-1: done
      Suspending rhel5-64: done
      Suspending guests on lxc:/// URI...
      Suspending lxc-shell: error: Failed to save domain 9cba8bfb-56f4-6589-2d12-8a58c886dd3b state
      error: this function is not supported by the hypervisor: virDomainManagedSave
      
      Note, the "Suspending $guest: " shows progress during the suspend phase
      if domjobinfo gives meaningful output.
      
      Example output during boot:
      
      Resuming guests on default URI...
      Resuming guest rhel6-1: done
      Resuming guest rhel5-64: done
      Resuming guest console: done
      Resuming guests on lxc:/// URI...
      Resuming guest lxc-shell: already active
      
      Configuration used for generating the examples above:
      URIS='default lxc:/// xen:/// vbox+tcp://orkuz/system'
      
      The script uses /var/lib/libvirt/libvirt-guests files to note all active
      guest it should try to resume on next boot. It's content looks like:
      
      default 7f8b9d93-30e1-f0b9-47a7-cb408482654b 085b4c95-5da2-e8e1-712f-6ea6a4156af2 fb4d8360-5305-df3a-2da1-07d682891b8c
      lxc:/// 9cba8bfb-56f4-6589-2d12-8a58c886dd3b
      66823690
    • J
      Autostart domains using virDomainObjStart · e0037c2e
      Jiri Denemark 提交于
      e0037c2e
    • J
      Refactor qemudDomainStart · 5e3537f8
      Jiri Denemark 提交于
      We need a common internal function for starting managed domains to be
      used during autostart. This patch factors out relevant code from
      qemudDomainStart into qemudDomainObjStart and makes it use the
      refactored code for domain restore instead of calling qemudDomainRestore
      API directly.
      5e3537f8
    • J
      Factor out def assignment to existing domain from virDomainAssignDef · 575cf9a9
      Jiri Denemark 提交于
      We need to be able to assign new def to an existing virDomainObj which
      is already locked. This patch factors out the relevant code from
      virDomainAssignDef into virDomainObjAssignDef.
      575cf9a9
    • J
      Refactor qemudDomainRestore · de5a60e1
      Jiri Denemark 提交于
      We need to be able to restore a domain which we already locked and
      started a job for it without undoing these steps. This patch factors
      out internals of qemudDomainRestore into separate functions which work
      for locked objects.
      de5a60e1
    • J
      maint: update po/POTFILES.in · b8ed797c
      Jim Meyering 提交于
      * po/POTFILES.in: Add 3 files.
      b8ed797c
    • J
      maint: enforce policy wrt VIR_DEBUG and VIR_DEBUG0 · 7a3267cf
      Jim Meyering 提交于
      * cfg.mk (sc_prohibit_gettext_markup): Just like VIR_WARN*.
      7a3267cf
    • J
      maint: don't mark VIR_DEBUG or VIR_DEBUG0 diagnostics for translation · d6f9cf42
      Jim Meyering 提交于
      Run this command:
        git grep -l VIR_DEBUG|xargs perl -pi -e \
          's/(VIR_DEBUG0?)\s*\(_\((".*?")\)/$1($2/'
      d6f9cf42
    • J
      maint: enforce policy wrt VIR_ERROR and VIR_ERROR0 · 2f26addb
      Jim Meyering 提交于
      * cfg.mk (msg_gen_function): Add VIR_ERROR and VIR_ERROR0,
      so that sc_libvirt_unmarked_diagnostics will check them, too.
      2f26addb
    • J
      maint: change "" in err ? err->message : "" to _("unknown error"), ... · 5adbd9cb
      Jim Meyering 提交于
      These changes avoid false-positive syntax-check failure,
      and also make the resulting diagnostics more comprehensible.
      5adbd9cb