|
@@ -2024,6 +2024,20 @@ static struct nvmf_transport_ops nvme_rdma_transport = {
|
|
|
static void nvme_rdma_remove_one(struct ib_device *ib_device, void *client_data)
|
|
|
{
|
|
|
struct nvme_rdma_ctrl *ctrl;
|
|
|
+ struct nvme_rdma_device *ndev;
|
|
|
+ bool found = false;
|
|
|
+
|
|
|
+ mutex_lock(&device_list_mutex);
|
|
|
+ list_for_each_entry(ndev, &device_list, entry) {
|
|
|
+ if (ndev->dev == ib_device) {
|
|
|
+ found = true;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ mutex_unlock(&device_list_mutex);
|
|
|
+
|
|
|
+ if (!found)
|
|
|
+ return;
|
|
|
|
|
|
/* Delete all controllers using this device */
|
|
|
mutex_lock(&nvme_rdma_ctrl_mutex);
|