[Libvirt-cim] [PATCH v3 0/8] Add Controller Device Support

John Ferlan jferlan at redhat.com
Fri Apr 4 15:19:40 UTC 2014


Ping? Any thoughts on the changes?   I'd like to get this off my list of
things to do...

Thanks

John

On 03/27/2014 05:18 PM, John Ferlan wrote:
> 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
> 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