qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH v3] migration/rdma: Fix out of order wrid


From: address@hidden
Subject: Re: [PATCH v3] migration/rdma: Fix out of order wrid
Date: Fri, 29 Oct 2021 01:50:18 +0000
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.13.0


On 28/10/2021 23:17, Dr. David Alan Gilbert wrote:
> * Li Zhijian (lizhijian@cn.fujitsu.com) wrote:
>
> Apologies for taking so long.
It's okay :), thanks for your review.

>
>>       /*
>> -     * Completion queue can be filled by both read and write work requests,
>> -     * so must reflect the sum of both possible queue sizes.
>> +     * Completion queue can be filled by read work requests.
>>        */
>> -    rdma->cq = ibv_create_cq(rdma->verbs, (RDMA_SIGNALED_SEND_MAX * 3),
>> -            NULL, rdma->comp_channel, 0);
>> -    if (!rdma->cq) {
>> +    rdma->recv_cq = ibv_create_cq(rdma->verbs, (RDMA_SIGNALED_SEND_MAX * 3),
>> +                                  NULL, rdma->recv_comp_channel, 0);
>> +    if (!rdma->recv_cq) {
>> +        error_report("failed to allocate completion queue");
> Minor: It would be good to make this different from the error below;
> e.g. 'failed to allocate receive completion queue'

Good catch, i will amend them soon.


>
>> +        goto err_alloc_pd_cq;
>> +    }
>> +
>> +    /* create send completion channel */
>> +    rdma->send_comp_channel = ibv_create_comp_channel(rdma->verbs);
>> +    if (!rdma->send_comp_channel) {
>> +        error_report("failed to allocate completion channel");
>> +        goto err_alloc_pd_cq;
>> +    }
>> +
>> +    rdma->send_cq = ibv_create_cq(rdma->verbs, (RDMA_SIGNALED_SEND_MAX * 3),
>> +                                  NULL, rdma->send_comp_channel, 0);
>> +    if (!rdma->send_cq) {
>>           error_report("failed to allocate completion queue");
>>           goto err_alloc_pd_cq;
>>       }
>> @@ -1083,11 +1098,19 @@ err_alloc_pd_cq:
>>       if (rdma->pd) {
>>           ibv_dealloc_pd(rdma->pd);
>>       }
>> -    if (rdma->comp_channel) {
>> -        ibv_destroy_comp_channel(rdma->comp_channel);
>> +    if (rdma->recv_comp_channel) {
>> +        ibv_destroy_comp_channel(rdma->recv_comp_channel);
>> +    }
>> +    if (rdma->send_comp_channel) {
>> +        ibv_destroy_comp_channel(rdma->send_comp_channel);
>> +    }
>> +    if (rdma->recv_cq) {
>> +        ibv_destroy_cq(rdma->recv_cq);
>> +        rdma->recv_cq = NULL;
>>       }
> Don't you need to destroy the send_cq as well?

we don't need to do that since send_cq is that last element we allot, that means
send_cq will always be NULL once the code reaches here.

Thanks
Zhijian

>
> (Other than that I think it's fine)
>
> Dave
>
>

reply via email to

[Prev in Thread] Current Thread [Next in Thread]