[Libvirt-cim] [PATCH v3 0/8] Add Controller Device Support
Xu Wang
gesaint at linux.vnet.ibm.com
Mon Apr 14 07:43:00 UTC 2014
于 2014年03月28日 05:18, John Ferlan 写道:
> I know this is a long cover letter, but it covers a lot of ground...
>
> I was just about done with all the merges this morning - I ran the cimtest
> one more time and found that there's a couple of tests which associate
> RASDs and Pools. So I jumped into the rabbit hole and wound my way through
> the maze of twisty little passages. I even heard a babbling brook (it's an
> old computer game reference).
>
> So here's where I'm at - I have cimtest completely passing again which keeps
> me happy. Although I have a pile of cimtest related changes that will also
> need to be made, but I have to wait to do them until I get a libvirt-cim
> revision number to compare against so as to be able to add conditional code
I just wonder how to get that revision, apply it from some organization
or company?
Thanks,
Xu Wang
> to support controllers devices, rasds, and pools.
>
> For now support is only for KVM. We've already determined LXC doesn't have
> the concept of a controller and I have no way to test Xen. I also don't have
> the cycles to dig through the Xen source code and determine what that driver
> supports. If someone wants to add that - great - have at it!
>
> I want to put it out there for review - knowing that I probably still have
> a bit of cleanup left. I think I'm going to need to add KVM specific code
> to a number of places, but I figured I needed to get everything merged first
> then I could determine that. I'm also hoping it'll be pointed out to me :-).
>
> I kept the changes split even though I know only changes 1 & 2 can be compiled
> alone and run without any new cimtest failures. Each step of changes can
> compile successfully/cleanly - although once you hit change 3, you'll need
> to regenerate your Makefile
>
> Changes 1 & 2 are more or less Xu's previous patch #1. I split it for
> ease of review - there's no real reason, although you will note I
> have left out the addition of CONTROLLER to the cim_res_types until
> patch 4... With that patch 2 will have cimtest failures.
> Change 3 adds the MOF's and adjusts the install resulting in cimtest
> failures because of "missing" links between MOF and code.
> Change 4 adds the bulk of the code required to fill in all the fields for
> the mofs from the xml/data structures.
> Change 6 adds the various associations between the new elements
> Change 7 adds the MOF's and modifies install/build to include ControllerPool's
> Change 8 adds the code and associations for Controller Pools. Without it
> there are a few cimtest failures.
>
> My plan is to allow review of Changes 3->8 separately, but when it comes
> time to push - 3-8 could be squashed together so that the ability to bisect
> history and run cimtest without too many failures isn't lost. Although I'm
> also considering combining 3-6 and 7-8 for "functionality" likeness. I'll
> take suggestions from the community if it's felt strongly to keep the split
> as is, then so bit it.
>
> The following is a list of the differences between this set of changes
> and what Xu posted as his v2. All I did was pull down his changes into a
> clean branch, then 'git am' those changes. Then after making all my changes
> a simple 'git diff' of the branches let me know what was different.
>
>
> Makefile.am
> * Copyright date
> * Add controller pool
>
> libvirt-cim.spec.in
> * Order - kept closer to DisplayController/PointingDevice
> * Add controller pool
>
> libxkutil/device_parsing.c
> * Copyright date
> * Additional CU_DEBUG messages - useful in debugging free() issues
> * Merged sgio/rawio changes
> * cleanup_controller_device():
> * Free new controller fields for queues, ports, vectors, address
> * Changed controller 'type' from "char *" to "uint16_t", no need to free
> * parse_controller_device():
> * Use controller_protocol_type_StrToID() to store type integer
> * Fail in "index" is not present
> * Convert/store "index" as uint64_t and free "index"
> * Added controller fields for queues, ports, vectors, address
> * Format id as "controller:<type_str>:<index#>"
>
> libxkutil/device_parsing.h
> * Copyright date
> * Add CONTROLLER_INDEX_NOT_SET as -1
> * Change type to uint16_t, add uint64_t index, and char */device_address fields
>
> libxkutil/xmlgen.c
> * Copyright date
> * Change how we store fields
> * Be sure to convert the "type" to it's string representation
> * Handle missing/default Index value (eg from define system from vdev)
> * Print out model, ports, vectors, queues, and address if present
>
> schema/Controller.mof
> * Remove {Xen|LXC}_Controller
>
> schema/Controller.registration
> * Remove {Xen|LXC}_Controller
>
> schema/ControllerPool.mof
> * Add ControllerPool mof
>
> schema/ControllerPool.registration
> * Add ControllerPool registration
>
> schema/ResourceAllocationSettingData.mof
> * Copyright date
> * Merged rawio/sgio changes
> * Remove {Xen|LXC}_ControllerResourceAllocationSettingData
> * Add comments and properties we care about
>
> schema/ResourceAllocationSettingData.registration
> * Copyright date
> * Remove {Xen|LXC}_ControllerResourceAllocationSettingData
>
> src/Virt_Device.c
> * Copyright date
> * Set the Virtual Controller Logical Device properties:
> * ProtocolSupported <== String from controller_device->type (pci, usb, etc.)
> * ProtocolDescription <== If available, string from model
> * Adjusted some debug messages
> * Removed incorrect setting of "Controller" property (twice)
>
> src/Virt_DevicePool.c
> * Add ControllerPool support
>
> src/Virt_ElementAllocatedFromPool.c
> * Copyright date
> * Remove Xen/LXC associations
> * Add ControllerPool
>
> src/Virt_ElementCapabilities.c
> * Copyright date
> * Add ControllerPool
>
> src/Virt_ElementSettingData.c
> * Copyright date
> * Remove Xen/LXC associations
>
> src/Virt_HostedResourcePool.c
> * Copyright date
> * Add ControllerPool
>
> src/Virt_RASD.c
> * Copyright date
> * Merged sgio/rawio changes
> * set_controller_rasd_params():
> * Set the fields properly based on defintion of structure/mof
> * ResourceSubType <== String-ified type (pci, usb, etc)
> * Other fields set if available in data structure
> * Changed vdev_device -> type to use CIM_RES_TYPE_OTHER - this is the parent
> structure to the controller_device structure
>
> src/Virt_ResourceAllocationFromPool.c
> * Copyright date
> * Controller RASD Association
> * ControllerPool Association
>
> src/Virt_ResourcePoolConfigurationService.c
> * Copyright date
> * Add ControllerPool
>
> src/Virt_ServiceAffectsElement.c
> * Copyright date
> * Add "Controller" to list that use get_device_by_ref() call
> * Remove Xen/LXC associations
>
> src/Virt_SettingsDefineState.c
> * Copyright date
> * Remove Xen/LXC associations
>
> src/Virt_SystemDevice.c
> * Copyright date
> * Remove Xen/LXC associations
>
> src/Virt_VSSDComponent.c
> * Copyright date
> * Remove Xen/LXC associations
>
> src/Virt_VirtualSystemManagementService.c
> * Copyright date
> * Merged sgio/rawio changes
> * Fix controller_rasd_to_vdev():
> * Handle the controller_device->type properly to get 'type_str'
> * Build dev->id based on Index:
> NOTE: I found through debugging cimtest code that on input the dev->id
> is NULL. It cannot be left that way since a subsequent call to
> add_device_nodup() would core on the STREQC(ptr->id, dev->id).
> Thus I formulated an InstanceID with the -1. If there's another
> similarly "undefined" element, it'll go through the overriding
> code and be removed.
> * Set other fields if present in data
> * Following Boris' earlier advice, mimic the method that disks, networks,
> and graphics devices use to set things up.
> * Similarly for resource_del, resource_add, and resource_mod - allow
> the code to do it's magic for controller devices.
> * HMM: Given what I discovered about dev->id in controller_rasd_to_vdev()
> described above, I wonder if the check in resource_add could ever
> happen. I guess it's "safe" to keep...
>
> src/svpc_types.h
> * Copyright date
> * Add some pointers to where to find the details we're describing
> * Add CIM_controller_protocol_type enum to describe the various values
> * Add controller_protocol_type_StrToID() and controller_protocol_type_IDToStr()
> to handle the "supported" conversions
>
>
>
> John Ferlan (3):
> Associations
> Add MOFS and change install for ControllerPools
> Add code and associations for ControllerPool
>
> Xu Wang (5):
> Add virtual controller device types
> Parse/Store controller XML tags
> Add virtual controller object definitions to mofs
> Set fields in mofs for Controller Device/RASD
> VSMS: Support for domains with controller devices
>
> Makefile.am | 6 +-
> libvirt-cim.spec.in | 4 +
> libxkutil/device_parsing.c | 119 ++++++++++++++++++-
> libxkutil/device_parsing.h | 17 ++-
> libxkutil/xmlgen.c | 74 +++++++++++-
> schema/Controller.mof | 7 ++
> schema/Controller.registration | 4 +
> schema/ControllerPool.mof | 6 +
> schema/ControllerPool.registration | 3 +
> schema/ResourceAllocationSettingData.mof | 37 +++++-
> schema/ResourceAllocationSettingData.registration | 3 +-
> src/Virt_Device.c | 68 ++++++++++-
> src/Virt_DevicePool.c | 55 ++++++++-
> src/Virt_ElementAllocatedFromPool.c | 6 +-
> src/Virt_ElementCapabilities.c | 4 +-
> src/Virt_ElementSettingData.c | 3 +-
> src/Virt_HostedResourcePool.c | 3 +-
> src/Virt_RASD.c | 57 +++++++++-
> src/Virt_ResourceAllocationFromPool.c | 2 +
> src/Virt_ResourcePoolConfigurationCapabilities.c | 2 +-
> src/Virt_ResourcePoolConfigurationService.c | 2 +
> src/Virt_ServiceAffectsElement.c | 8 +-
> src/Virt_SettingsDefineState.c | 4 +-
> src/Virt_SystemDevice.c | 3 +-
> src/Virt_VSSDComponent.c | 3 +-
> src/Virt_VirtualSystemManagementService.c | 87 +++++++++++++-
> src/svpc_types.h | 132 +++++++++++++++++++++-
> 27 files changed, 695 insertions(+), 24 deletions(-)
> create mode 100644 schema/Controller.mof
> create mode 100644 schema/Controller.registration
> create mode 100644 schema/ControllerPool.mof
> create mode 100644 schema/ControllerPool.registration
>
More information about the Libvirt-cim
mailing list