1. 18 9月, 2012 20 次提交
    • O
      qemu: Add caps to indentify if setting wwn is supported by qemu · 331934b2
      Osier Yang 提交于
      This assumes ide-drive.wwn, ide-hd.wwn, ide-cd.wwn were supported
      at the same time, similar for scsi-disk.wwn, scsi-hd.wwn, and
      scsi-cd.wwn. So only two new caps (QEMU_CAPS_IDE_DRIVE_WWN,
      and QEMU_CAPS_SCSI_DISK_WWN) are introduced.
      331934b2
    • O
      conf: Parse and format disk <wwn> · facc1c00
      Osier Yang 提交于
      Validates the wwn while parsing, error out if it's malformed.
      
      * src/util/util.h: Declare virValidateWWN
      * src/util/util.c: Implement virValidateWWN
      * src/libvirt_private.syms: Export virValidateWWN.
      * src/conf/domain_conf.h: New member 'wwn' for disk def.
      * src/conf/domain_conf.c: Parse and format disk <wwn>
      facc1c00
    • O
      schema: Add schema for disk <wwn> · dbb7df1f
      Osier Yang 提交于
      * docs/formatdomain.html.in: Add document.
      * docs/schemas/nodedev.rng: Move definition of "wwn" to ...
      * docs/schemas/basictypes.rng: ...Here
      * docs/schemas/domaincommon.rng: Add schema for disk <wwn>
      dbb7df1f
    • E
      blockjob: add blockcommit support to rpc · 85edb0c8
      Eric Blake 提交于
      Relatively straightforward.  Our decision to make block job
      speed a long keeps haunting us on new API.
      
      * src/remote/remote_protocol.x (remote_domain_block_commit_args):
      New struct.
      * src/remote/remote_driver.c (remote_driver): Enable it.
      * src/remote_protocol-structs: Regenerate.
      * src/rpc/gendispatch.pl (long_legacy): Exempt another bandwidth.
      85edb0c8
    • E
      blockjob: add virsh blockcommit · ed23b106
      Eric Blake 提交于
      The new command 'virsh blockcommit $dom $disk' requests the start
      of an asynchronous commit operation across the entire chain of
      $disk.  Further arguments can fine-tune which portion of the
      chain is committed.  Existing 'virsh blockjob' commands can then
      track the status, change the bandwidth, or abort the commit job.
      
      With a bit more on the command line, 'virsh blockcommit $dom $disk
      --wait --verbose' can be used for blocking behavior, with visual
      feedback on the overall status, and can be canceled with Ctrl-C.
      
      The overall design, including the wait loop logic, borrows heavily
      from the existing blockpull command.
      
      * tools/virsh-domain.c (cmdBlockCommit): New function.
      * tools/virsh.pod (blockcommit): Document it.
      ed23b106
    • E
      blockjob: add virDomainBlockCommit · ef1e024d
      Eric Blake 提交于
      A block commit moves data in the opposite direction of block pull.
      Block pull reduces the chain length by dropping backing files after
      data has been pulled into the top overlay, and is always safe; block
      commit reduces the chain length by dropping overlays after data has
      been committed into the backing file, and any files that depended
      on base but not on top are invalidated at any point where they have
      unallocated data that is now pointing to changed contents in base.
      Both directions are useful, however: a qcow2 layer that is more than
      50% allocated will typically be faster with a pull operation, while
      a qcow2 layer with less than 50% allocation will be faster as a
      commit operation.  Committing across multiple layers can be more
      efficient than repeatedly committing one layer at a time, but
      requires extra support from the hypervisor.
      
      This API matches Jeff Cody's proposed qemu command 'block-commit':
      https://lists.gnu.org/archive/html/qemu-devel/2012-09/msg02226.html
      
      Jeff's command is still in the works for qemu 1.3, and may gain
      further enhancements, such as the ability to control on-error
      handling (it will be comparable to the error handling Paolo is
      adding to 'drive-mirror', so a similar solution will be needed
      when I finally propose virDomainBlockCopy with more functionality
      than the basics supported by virDomainBlockRebase).  However, even
      without qemu support, this API will be useful for _offline_ block
      commits, by wrapping qemu-img calls and turning them into a block
      job, so this API is worth committing now.
      
      For some examples of how this will be implemented, all starting
      with the chain: base <- snap1 <- snap2 <- active
      
      + These are equivalent:
       virDomainBlockCommit(dom, disk, NULL, NULL, 0, 0)
       virDomainBlockCommit(dom, disk, NULL, "active", 0, 0)
       virDomainBlockCommit(dom, disk, "base", NULL, 0, 0)
       virDomainBlockCommit(dom, disk, "base", "active", 0, 0)
      but cannot be implemented for online qemu with round 1 of
      Jeff's patches; and for offline images, it would require
      three back-to-back qemu-img invocations unless qemu-img
      is patched to allow more efficient multi-layer commits;
      the end result would be 'base' as the active disk with
      contents from all three other files, where 'snap1' and
      'snap2' are invalid right away, and 'active' is invalid
      once any further changes to 'base' are made.
      
      + These are equivalent:
       virDomainBlockCommit(dom, disk, "snap2", NULL, 0, 0)
       virDomainBlockCommit(dom, disk, NULL, NULL, 0, _SHALLOW)
      they cannot be implemented for online qemu, but for offline,
      it is a matter of 'qemu-img commit active', so that 'snap2'
      is now the active disk with contents formerly in 'active'.
      
      + Similarly:
       virDomainBlockCommit(dom, disk, "snap2", NULL, 0, _DELETE)
      for an offline domain will merge 'active' into 'snap2', then
      delete 'active' to avoid leaving a potentially invalid file
      around.
      
      + This version:
       virDomainBlockCommit(dom, disk, NULL, "snap2", 0, _SHALLOW)
      can be implemented online with 'block-commit' passing a base of
      snap1 and a top of snap2; and can be implemented offline by
      'qemu-img commit snap2' followed by 'qemu-img rebase -u
      -b snap1 active'
      
      * include/libvirt/libvirt.h.in (virDomainBlockCommit): New API.
      * src/libvirt.c (virDomainBlockCommit): Implement it.
      * src/libvirt_public.syms (LIBVIRT_0.10.2): Export it.
      * src/driver.h (virDrvDomainBlockCommit): New driver callback.
      * docs/apibuild.py (CParser.parseSignature): Add exception.
      ef1e024d
    • E
      qemu: drop unused arguments for dump-guest-memory · d239085e
      Eric Blake 提交于
      Upstream qemu has raised a concern about whether dumping guest
      memory by reading guest paging tables is a security hole:
      https://lists.gnu.org/archive/html/qemu-devel/2012-09/msg02607.html
      
      While auditing libvirt to see if we would be impacted, I noticed
      that we had some dead code.  It is simpler to nuke the dead code
      and limit our monitor code to just the subset we make use of.
      
      * src/qemu/qemu_monitor.h (QEMU_MONITOR_DUMP): Drop poorly named
      and mostly-unused enum.
      * src/qemu/qemu_monitor.c (qemuMonitorDumpToFd): Drop arguments.
      * src/qemu/qemu_monitor_json.h (qemuMonitorJSONDump): Likewise.
      * src/qemu/qemu_monitor_json.c (qemuMonitorJSONDump): Likewise.
      * src/qemu/qemu_driver.c (qemuDumpToFd): Update caller.
      d239085e
    • O
      build: Fix build failure on non-linux platform · 22acfdc7
      Osier Yang 提交于
      22acfdc7
    • L
      conf: avoid freeing network object with undestroyed mutex · 16d9a3df
      Laine Stump 提交于
      virNetworkAssignDef was allocating a new network object, initing and
      grabbing its lock, then potentially freeing it without unlocking or
      destroying the lock. In practice 1) this will probably never happen,
      and 2) even if it did, the lock implementation used on most (all?)
      platforms doesn't actually hold any resources for an initialized or
      held lock, but it still bothered me, so I moved the realloc that could
      lead to this bad situation earlier in the function, and now the mutex
      isn't inited or locked until we are assured of complete success.
      16d9a3df
    • L
      conf: separate functions to parse DHCPHostDef and DHCPRangeDef · 764bd853
      Laine Stump 提交于
      These two objects were previously always parsed as a part of an IpDef,
      but we will now need to be able to parse them on their own for
      virNetworkUpdate(). Split the parsing functions out, with no
      functional changes.
      764bd853
    • H
      remove virDomainCpuSetFormat and virDomainCpuSetParse · afe86981
      Hu Tao 提交于
      virBitmap is recommanded to store cpuset info, and
      virBitmapFormat/virBitmapParse can do the format/parse
      jobs.
      afe86981
    • L
      xen: eliminate remaining uses of virDomainCpuSetParse · 58d372d4
      Laine Stump 提交于
      The final patch in Hu Tao's series to enhance virBitmap actually
      removes virDomainCpuSetParse and virDomainCpuSetFormat as "no longer
      used", and the rest of the series hadn't taken care of two uses of
      virDomainCpuSetParse in the xen code.
      
      This patch replaces those with appropriate virBitmap functions. It
      should be pushed prior to the patch removing virDomainCpuSetParse.
      58d372d4
    • H
      use virBitmap to store nodeinfo. · fe2a0b02
      Hu Tao 提交于
      fe2a0b02
    • H
      use virBitmap to store cells' cpumask info. · f4b2dcf5
      Hu Tao 提交于
      f4b2dcf5
    • H
      use virBitmap to store cpumask info. · ee7d23ba
      Hu Tao 提交于
      ee7d23ba
    • H
      use virBitmap to store numa nodemask info. · 75b198b3
      Hu Tao 提交于
      75b198b3
    • H
      use virBitmap to store cpu affinity info · f1a43a8e
      Hu Tao 提交于
      f1a43a8e
    • H
      use virBitmap to store cpupin info · f970d848
      Hu Tao 提交于
      f970d848
    • H
      New functions for virBitmap · 0fc89098
      Hu Tao 提交于
      In many places we store bitmap info in a chunk of data
      (pointed to by a char *), and have redundant codes to
      set/unset bits. This patch extends virBitmap, and convert
      those codes to use virBitmap in subsequent patches.
      0fc89098
    • H
      bitmap: new member variable and function renaming · 0831a5ba
      Hu Tao 提交于
      Add a new member variable map_len to store map len of bitmap.
      and rename size to max_bit accordingly.
      
      rename virBitmapAlloc to virBitmapNew.
      0831a5ba
  2. 17 9月, 2012 20 次提交
    • P
      virsh: Clarify behavior of domain list filtering. · 60b0284f
      Peter Krempa 提交于
      Some combinations of filtering flags produce no result. This patch tries
      to clarify this.
      60b0284f
    • O
      Build: Fix typos which cause build failure · 4ed43d62
      Osier Yang 提交于
      Pushed under build-breaker rules.
      4ed43d62
    • O
      node_memory: Expose the APIs to Python bindings · 4c4c80df
      Osier Yang 提交于
      * python/libvirt-override-api.xml: (Add document to describe
        the APIs).
      * python/libvirt-override.c: (Implement the API wrappers manually)
      4c4c80df
    • O
      node_memory: Expose the APIs to virsh · 0e96fa54
      Osier Yang 提交于
      New command node-memory-tune to get/set the node memory parameters,
      only two parameters are allowed to set (pages_to_scan, and sleep_millisecs,
      see documents in this patch for more details).
      
      Example of node-memory-tune's output:
      
      Shared memory:
      	pages_to_scan   100
      	sleep_millisecs 20
      	pages_shared    0
      	pages_sharing   0
      	pages_unshared  0
      	pages_volatile  0
      	full_scans      0
      0e96fa54
    • O
      node_memory: Support get/set memory parameters for drivers · 8268a245
      Osier Yang 提交于
      Including QEMU, LXC, UML, XEN drivers.
      8268a245
    • O
      node_memory: Implement the internal APIs · aaa8ab3e
      Osier Yang 提交于
      Only implemented for linux platform.
      
      * src/nodeinfo.h: (Declare node{Get,Set}MemoryParameters)
      * src/nodeinfo.c: (Implement node{Get,Set}MemoryParameters)
      * src/libvirt_private.syms: (Export those two new internal APIs to
        private symbols)
      aaa8ab3e
    • O
      node_memory: Wire up the RPC protocol · 00792722
      Osier Yang 提交于
      * src/rpc/gendispatch.pl: (virNodeSetMemoryParameters is the
        the special one which needs a connection object as the first
        argument, improve the generator to support it).
      * daemon/remote.c: (Implement the server side handler for
        virDomainGetMemoryParameters)
      * src/remote/remote_driver.c: (Implement the client side handler
        for virDomainGetMemoryParameters)
      * src/remote/remote_protocol.x: (New RPC procedures for the two
        new APIs and structs to represent the args and ret for it)
      * src/remote_protocol-structs: Likewise
      00792722
    • O
      node_memory: Define the APIs to get/set memory parameters · 12ad7435
      Osier Yang 提交于
      * include/libvirt/libvirt.h.in: (Add macros for the param fields,
        declare the APIs).
      * src/driver.h: (New methods for the driver struct)
      * src/libvirt.c: (Implement the public APIs)
      * src/libvirt_public.syms: (Export the public symbols)
      12ad7435
    • O
      list: Use virConnectListAllSecrets in virsh · d15d092c
      Osier Yang 提交于
      This introduces four new options for secret-list, to filter the
      returned secrets by whether it's ephemeral or not, and/or by
      whether it's private or not.
      
      * tools/virsh-secret.c: (New helper vshSecretSorter,
        vshSecretListFree, and vshCollectSecretList; Use the new
        API for secret-list; error out if flags are specified,
        because there is no way to filter the results when using
        old APIs (no APIs to get the properties (ephemeral, private)
        of a secret yet).
      
      * tools/virsh.pod: Document the 4 new options.
      d15d092c
    • O
      list: Expose virConnectListAllSecrets to Python binding · 473ee27e
      Osier Yang 提交于
      The implementation is done manually as the generator does not support
      wrapping lists of C pointers into Python objects.
      
      python/libvirt-override-api.xml: Document
      
      python/libvirt-override-virConnect.py: Implementation for listAllSecrets.
      
      python/libvirt-override.c: Implementation for the wrapper.
      473ee27e
    • O
      list: Implement listAllSecrets · 288f9b13
      Osier Yang 提交于
      Simply returns the object list. Supports to filter the secrets
      by its storage location, and whether it's private or not.
      
      src/secret/secret_driver.c: Implement listAllSecrets
      288f9b13
    • O
      list: Implement RPC calls for virConnectListAllSecrets · 86737407
      Osier Yang 提交于
      The RPC generator doesn't support returning list of object yet, this patch
      does the work manually.
      
        * daemon/remote.c:
          Implement the server side handler remoteDispatchConnectListAllSecrets.
      
        * src/remote/remote_driver.c:
          Add remote driver handler remoteConnectListAllSecrets.
      
        * src/remote/remote_protocol.x:
          New RPC procedure REMOTE_PROC_CONNECT_LIST_ALL_SECRETS and
          structs to represent the args and ret for it.
      
        * src/remote_protocol-structs: Likewise.
      86737407
    • O
      list: Define new API virConnectListAllSecrets · 7a236982
      Osier Yang 提交于
      This is to list the secret objects. Supports to filter the secrets
      by its storage location, and whether it's private or not.
      
      include/libvirt/libvirt.h.in: Declare enum virConnectListAllSecretFlags
                                    and virConnectListAllSecrets.
      python/generator.py: Skip auto-generating
      src/driver.h: (virDrvConnectListAllSecrets)
      src/libvirt.c: Implement the public API
      src/libvirt_public.syms: Export the symbol to public
      7a236982
    • O
      list: Use virConnectListAllNWFilters in virsh · 9b096843
      Osier Yang 提交于
      tools/virsh-nwfilter.c:
        * vshNWFilterSorter to sort network filters by name
      
        * vshNWFilterListFree to free the network filter objects list.
      
        * vshNWFilterListCollect to collect the network filter objects, trying
          to use new API first, fall back to older APIs if it's not supported.
      9b096843
    • O
      list: Expose virConnectListAllNWFilters to Python binding · f4c1efaa
      Osier Yang 提交于
      The implementation is done manually as the generator does not support
      wrapping lists of C pointers into Python objects.
      
      python/libvirt-override-api.xml: Document
      
      python/libvirt-override-virConnect.py:
        * Implementation for listAllNWFilters.
      
      python/libvirt-override.c: Implementation for the wrapper.
      f4c1efaa
    • O
      list: Implement listAllNWFilters · 1483d79c
      Osier Yang 提交于
      Simply returns the object list. No filtering.
      
      src/nwfilter/nwfilter_driver.c: Implement listAllNWFilters
      1483d79c
    • O
      list: Implement RPC calls for virConnectListAllNWFilters · 3f47ff8b
      Osier Yang 提交于
      The RPC generator doesn't support returning list of object yet, this patch
      do the work manually.
      
        * daemon/remote.c:
          Implemente the server side handler remoteDispatchConnectListAllNWFilters.
      
        * src/remote/remote_driver.c:
          Add remote driver handler remoteConnectListAllNWFilters.
      
        * src/remote/remote_protocol.x:
          New RPC procedure REMOTE_PROC_CONNECT_LIST_ALL_NWFILTERS and
          structs to represent the args and ret for it.
      
        * src/remote_protocol-structs: Likewise.
      3f47ff8b
    • O
      list: Define new API virConnectListAllNWFilters · 6498f76e
      Osier Yang 提交于
      This is to list the network filter objects. No flags are supported
      
      include/libvirt/libvirt.h.in: Declare enum virConnectListAllNWFilterFlags
                                    and virConnectListAllNWFilters.
      python/generator.py: Skip auto-generating
      src/driver.h: (virDrvConnectListAllNWFilters)
      src/libvirt.c: Implement the public API
      src/libvirt_public.syms: Export the symbol to public
      6498f76e
    • O
      list: Use virConnectListAllNodeDevices in virsh · aa20e975
      Osier Yang 提交于
      tools/virsh-nodedev.c:
        * vshNodeDeviceSorter to sort node devices by name
      
        * vshNodeDeviceListFree to free the node device objects list.
      
        * vshNodeDeviceListCollect to collect the node device objects, trying
          to use new API first, fall back to older APIs if it's not supported.
      
        * Change option --cap to accept multiple capability types.
      
      tools/virsh.pod
        * Update document for --cap
      aa20e975
    • O
      virsh: Don't motify the const string · f5fb059a
      Osier Yang 提交于
      This improve helper vshStringToArray to accept const string as
      argument instead. To not convert the const string when using
      vshStringToArray, and thus avoid motifying it.
      f5fb059a