[libvirt PATCH v2 00/16] Add support for persistent mediated devices

Jonathon Jongsma posted 16 patches 3 years, 8 months ago
Test syntax-check failed
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/libvirt tags/patchew/20200818144806.134738-1-jjongsma@redhat.com
There is a newer version of this series
create mode 100644 tests/nodedevmdevctldata/mdevctl-list-single.json
create mode 100644 tests/nodedevmdevctldata/mdevctl-list-single.out.xml
create mode 100644 tests/nodedevmdevctldata/mdevctl-undefine.argv
[libvirt PATCH v2 00/16] Add support for persistent mediated devices
Posted by Jonathon Jongsma 3 years, 8 months ago
This patch series follows the previously-merged series which added support for
transient mediated devices. This series expands mdev support to include
persistent device definitions. Again, it relies on mdevctl as the backend.

It follows the common libvirt pattern of APIs by adding the following new APIs
for node devices:
    - virNodeDeviceDefineXML() - defines a persistent device
    - virNodeDeviceUndefine() - undefines a persistent device
    - virNodeDeviceCreate() - starts a previously-defined device

It also adds virsh commands mapping to these new APIs: nodedev-define,
nodedev-undefine, and nodedev-start.

The method of staying up-to-date with devices defined by mdevctl is currently=
 a
little bit crude due to the fact that mdevctl does not emit any events when n=
ew
devices are added or removed. As a workaround, we create a file monitor for t=
he
mdevctl config directory and re-query mdevctl when we detect changes within
that directory. In the future, mdevctl may introduce a more elegant solution.

Changes in v2:
 - rebase to latest git master

Jonathon Jongsma (16):
  tests: remove extra trailing semicolon
  nodedev: introduce concept of 'active' node devices
  nodedev: Add ability to filter by active state
  virsh: Add --active, --inactive, --all to nodedev-list
  nodedev: add ability to list and parse defined mdevs
  nodedev: add STOPPED/STARTED lifecycle events
  nodedev: add mdevctl devices to node device list
  nodedev: handle mdevs that disappear from mdevctl
  nodedev: add an mdevctl thread
  api: add virNodeDeviceDefineXML()
  virsh: add nodedev-define command
  api: add virNodeDeviceUndefine()
  virsh: Factor out function to find node device
  virsh: add nodedev-undefine command
  api: add virNodeDeviceCreate()
  virsh: add "nodedev-start" command

 examples/c/misc/event-test.c                  |   4 +
 include/libvirt/libvirt-nodedev.h             |  19 +-
 src/conf/node_device_conf.h                   |   9 +
 src/conf/virnodedeviceobj.c                   |  24 +
 src/conf/virnodedeviceobj.h                   |   7 +
 src/driver-nodedev.h                          |  14 +
 src/libvirt-nodedev.c                         | 115 ++++
 src/libvirt_private.syms                      |   2 +
 src/libvirt_public.syms                       |   6 +
 src/node_device/node_device_driver.c          | 525 +++++++++++++++++-
 src/node_device/node_device_driver.h          |  38 ++
 src/node_device/node_device_udev.c            | 275 ++++++++-
 src/remote/remote_driver.c                    |   3 +
 src/remote/remote_protocol.x                  |  40 +-
 src/remote_protocol-structs                   |  16 +
 src/rpc/gendispatch.pl                        |   1 +
 ...19_36ea_4111_8f0a_8c9a70e21366-define.argv |   1 +
 ...19_36ea_4111_8f0a_8c9a70e21366-define.json |   1 +
 ...39_495e_4243_ad9f_beb3f14c23d9-define.argv |   1 +
 ...39_495e_4243_ad9f_beb3f14c23d9-define.json |   1 +
 ...16_1ca8_49ac_b176_871d16c13076-define.argv |   1 +
 ...16_1ca8_49ac_b176_871d16c13076-define.json |   1 +
 tests/nodedevmdevctldata/mdevctl-create.argv  |   1 +
 .../mdevctl-list-defined.argv                 |   1 +
 .../mdevctl-list-multiple-parents.json        |  59 ++
 .../mdevctl-list-multiple-parents.out.xml     |  39 ++
 .../mdevctl-list-multiple.json                |  59 ++
 .../mdevctl-list-multiple.out.xml             |  39 ++
 .../mdevctl-list-single-noattr.json           |  11 +
 .../mdevctl-list-single-noattr.out.xml        |   8 +
 .../mdevctl-list-single.json                  |  31 ++
 .../mdevctl-list-single.out.xml               |  14 +
 .../nodedevmdevctldata/mdevctl-undefine.argv  |   1 +
 tests/nodedevmdevctltest.c                    | 227 +++++++-
 tools/virsh-nodedev.c                         | 281 ++++++++--
 35 files changed, 1787 insertions(+), 88 deletions(-)
 create mode 100644 tests/nodedevmdevctldata/mdev_d069d019_36ea_4111_8f0a_8c9=
a70e21366-define.argv
 create mode 100644 tests/nodedevmdevctldata/mdev_d069d019_36ea_4111_8f0a_8c9=
a70e21366-define.json
 create mode 100644 tests/nodedevmdevctldata/mdev_d2441d39_495e_4243_ad9f_beb=
3f14c23d9-define.argv
 create mode 100644 tests/nodedevmdevctldata/mdev_d2441d39_495e_4243_ad9f_beb=
3f14c23d9-define.json
 create mode 100644 tests/nodedevmdevctldata/mdev_fedc4916_1ca8_49ac_b176_871=
d16c13076-define.argv
 create mode 100644 tests/nodedevmdevctldata/mdev_fedc4916_1ca8_49ac_b176_871=
d16c13076-define.json
 create mode 100644 tests/nodedevmdevctldata/mdevctl-create.argv
 create mode 100644 tests/nodedevmdevctldata/mdevctl-list-defined.argv
 create mode 100644 tests/nodedevmdevctldata/mdevctl-list-multiple-parents.js=
on
 create mode 100644 tests/nodedevmdevctldata/mdevctl-list-multiple-parents.ou=
t.xml
 create mode 100644 tests/nodedevmdevctldata/mdevctl-list-multiple.json
 create mode 100644 tests/nodedevmdevctldata/mdevctl-list-multiple.out.xml
 create mode 100644 tests/nodedevmdevctldata/mdevctl-list-single-noattr.json
 create mode 100644 tests/nodedevmdevctldata/mdevctl-list-single-noattr.out.x=
ml
 create mode 100644 tests/nodedevmdevctldata/mdevctl-list-single.json
 create mode 100644 tests/nodedevmdevctldata/mdevctl-list-single.out.xml
 create mode 100644 tests/nodedevmdevctldata/mdevctl-undefine.argv

--=20
2.26.2