• Sagi Grimberg's avatar
    nvmet-rdma: Correctly handle RDMA device hot removal · d8f7750a
    Sagi Grimberg authored
    When configuring a device attached listener, we may
    see device removal events. In this case we return a
    non-zero return code from the cm event handler which
    implicitly destroys the cm_id. It is possible that in
    the future the user will remove this listener and by
    that trigger a second call to rdma_destroy_id on an
    already destroyed cm_id -> BUG.
    
    In addition, when a queue bound (active session) cm_id
    generates a DEVICE_REMOVAL event we must guarantee all
    resources are cleaned up by the time we return from the
    event handler.
    
    Introduce nvmet_rdma_device_removal which addresses
    (or at least attempts to) both scenarios.
    Signed-off-by: default avatarSagi Grimberg <sagi@grimberg.me>
    Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
    d8f7750a
rdma.c 36.3 KB