Commit 79f6fb18 authored by Jacek Kalwas's avatar Jacek Kalwas Committed by Jim Harris
Browse files

sma: add listener check on vfio device creation



If not checked it would be created for the 2nd time with the same
parameters which actually shall return error (incoming change).

Change-Id: I0bdbc9dd9951f496b1f47c72e8c614f32809109b
Signed-off-by: default avatarJacek Kalwas <jacek.kalwas@intel.com>
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/22888


Reviewed-by: default avatarJim Harris <jim.harris@samsung.com>
Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: default avatarShuhei Matsumoto <smatsumoto@nvidia.com>
Reviewed-by: default avatarKonrad Sztyber <konrad.sztyber@intel.com>
parent 2272ae29
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -92,8 +92,16 @@ class NvmfVfioDeviceManager(DeviceManager):
            logging.error('Failed to delete subsystem')
        return False

    def _check_addr(self, addr, addrlist):
        return next(filter(lambda a: (
            a['trtype'].lower() == 'vfiouser' and
            a['traddr'].lower() == addr.lower()), addrlist), None) is not None

    def _subsystem_add_listener(self, client, subnqn, addr):
        try:
            listeners = client.call('nvmf_subsystem_get_listeners', {'nqn': subnqn})
            if self._check_addr(addr, [a['address'] for a in listeners]):
                return True
            return client.call('nvmf_subsystem_add_listener',
                               {'nqn': subnqn,
                                'listen_address': {