sma: fix multiple bus support for NVMe/vfio_user plugin
In original code, device search was performed only on first attached bus. If device resided on second attached bus, it couldn't be found and properly deleted in qemu. This patch allows to traverse all attached buses to find required device. Signed-off-by: Artsiom Koltun <artsiom.koltun@intel.com> Change-Id: I0840d0a2367d3382c6723ee4cdb6d768128c8032 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/14651 Reviewed-by: Konrad Sztyber <konrad.sztyber@intel.com> Reviewed-by: <sebastian.brzezinka@intel.com> Reviewed-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com> Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
This commit is contained in:
parent
9a028f88ac
commit
01471e63bc
@ -112,13 +112,17 @@ class NvmfVfioDeviceManager(DeviceManager):
|
||||
|
||||
def _find_pcidev(self, qclient, name):
|
||||
def rsearch(devices, name):
|
||||
found_dev = None
|
||||
for dev in devices:
|
||||
if dev['qdev_id'] == name:
|
||||
return dev
|
||||
if 'pci_bridge' in dev:
|
||||
return rsearch(dev['pci_bridge']['devices'], name)
|
||||
else:
|
||||
pass
|
||||
found_dev = dev
|
||||
elif 'pci_bridge' in dev:
|
||||
found_dev = rsearch(dev['pci_bridge']['devices'], name)
|
||||
|
||||
if found_dev:
|
||||
break
|
||||
return found_dev
|
||||
|
||||
try:
|
||||
buses = qclient.query_pci()['return']
|
||||
for bus in buses:
|
||||
|
Loading…
Reference in New Issue
Block a user