[PATCH v3] nvmet-rdma: Correctly handle RDMA device hot removal

Sagi Grimberg sagi at grimberg.me
Mon Aug 1 04:30:37 PDT 2016


> This looks reasonable to me, but a little question below:
>
>> @@ -1442,7 +1491,8 @@ static void nvmet_rdma_remove_port(struct nvmet_port *port)
>>  {
>>  	struct rdma_cm_id *cm_id = port->priv;
>>
>> -	rdma_destroy_id(cm_id);
>> +	if (cm_id)
>> +		rdma_destroy_id(cm_id);
>>  }
>
> How is ->remove_port synchronized vs the RDMA/CM even handler?

Easy, it isn't :)

So we have three choices here:
1. Add a lock in nvmet_port that only rdma will use for now (don't like
it)
or
2. Add nvmet_rdma_port as nvmet_port->priv with a lock (don't like it)
or
3. take the global nvmet_config_sem (hate it)

Any preferences?



More information about the Linux-nvme mailing list