TL;DR: nodedev: - contained a decent amount of redundant code handling the same thing, now it doesn't. - only updated dynamic capabilities during dumpXML, now it does every time it touches them mdev: - didn't update mdev capabilities at all, now it does This series combines some long-needed refactor changes to the nodedev driver with some necessary mdev fixes based on Wu Zongyong's patch series [1]. There's a lot of simple code movement due to the fact that update of the device capabilities is strictly bound to the nodedev driver. The problem with the existing approach is that in order to properly update all capabilities, especially mdev, we would have to violate the logical code flow we have and call back into the driver to have access to sysfs, i.e. driver->(conf|obj) handling->util_helpers->DRIVER. Therefore to resolve it, along with all the compilation dependencies, I moved most of the capability handling out of the driver into src/conf/node_device_conf.c which already contained more than just parsing and formatting of the capabilities. I also had to move the existing virNodeDevCapMdevType into src/util so that the util helpers would know the type they're working with. [1] https://www.redhat.com/archives/libvir-list/2018-January/msg00315.html Erik Skultety (15): conf: nodedev: Rename virNodeDevObjHasCap to virNodeDevObjHasCapStr conf: nodedev: Rename virNodeDeviceCapMatch to virNodeDevObjHasCap conf: nodedev: Convert virNodeDevObjHasCapStr to a simple wrapper nodedev: Drop the nodeDeviceSysfsGetSCSIHostCaps wrapper nodedev: Move the sysfs-related cap handling to node_device_conf.c nodedev: Export nodeDeviceUpdateCaps from node_device_conf.c nodedev: Introduce virNodeDeviceCapsListExport conf: nodedev: Refresh capabilities before touching them util: mdev: Drop some unused symbols/includes from the header util: mdev: Introduce virMediatedDeviceType structure util: mdev: Introduce virMediatedDeviceTypeReadAttrs getter util: pci: Introduce virPCIGetMdevTypes helper nodedev: udev: Drop the unused mdev type helpers conf: Replace usage of virNodeDevCapMdevType with virMediatedDeviceType conf: nodedev: Update PCI mdev capabilities dynamically src/Makefile.am | 4 +- src/conf/node_device_conf.c | 343 ++++++++++++++++++++++++++++-- src/conf/node_device_conf.h | 29 +-- src/conf/virnodedeviceobj.c | 74 ++----- src/libvirt_private.syms | 7 +- src/node_device/node_device_driver.c | 130 ++--------- src/node_device/node_device_hal.c | 5 +- src/node_device/node_device_linux_sysfs.c | 218 ------------------- src/node_device/node_device_linux_sysfs.h | 34 --- src/node_device/node_device_udev.c | 127 +---------- src/util/virmdev.c | 47 ++++ src/util/virmdev.h | 20 +- src/util/virpci.c | 58 +++++ src/util/virpci.h | 4 + 14 files changed, 516 insertions(+), 584 deletions(-) delete mode 100644 src/node_device/node_device_linux_sysfs.c delete mode 100644 src/node_device/node_device_linux_sysfs.h -- 2.13.6 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list