Прием завершится (со статусом «ошибка сброса») асинхронно (возможно) после возврата rdma_disconnect (). Как видно из источника для rdma_disconnect (), все, что он делает - это переводит QP в состояние ошибки и отправляет запрос на отключение на другую сторону.
Переход QP в состояние ошибки действительно гарантирует, что все ожидающие рабочие запросы, отправленные в QP, будут выполнены с состоянием ошибки, но операция модификации QP немедленно возвращается, не дожидаясь истечения очередей. Точно так же rdma_disconnect () не ожидает завершения всех ожидающих рабочих запросов - на самом деле было бы трудно понять, как это возможно, поскольку CM RDMA на самом деле не имеет никакого способа узнать, сколько рабочих запросов находится в очереди, в одиночку загляните в связанный CQ, чтобы увидеть, когда все они завершатся.
Глава 10 тома 1 спецификации IB подробно описывает обработку рабочих запросов, если вас интересуют угловые случаи запросов, которые находятся в полете во время перехода в состояние ошибки и т. Д.