[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