[PATCH 07/11] drbd_transport_rdma: put kref in dtr_remap_tx_desc error
Dongsheng Yang
dongsheng.yang at easystack.cn
Mon Jul 1 04:28:31 CEST 2024
在 2024/6/28 星期五 下午 8:19, Philipp Reisner 写道:
> Hello Dongsheng,
>
> This looks wrong. In this loop, we are trying to find a path on which
> to repost this tx_desc. When the remapping fails, there is no reason
> to drop the drop a ref on the cm.
But dtr_select_and_get_cm_for_tx() get a ref, if we dont put it before
continue, who will put this ref?
>
> So, please provide a description what you are intending here with this change?
>
> best regards,
> Philipp
>
> On Mon, Jun 24, 2024 at 9:27 AM zhengbing.huang
> <zhengbing.huang at easystack.cn> wrote:
>>
>> From: Dongsheng Yang <dongsheng.yang at easystack.cn>
>>
>> Signed-off-by: Dongsheng Yang <dongsheng.yang at easystack.cn>
>> ---
>> drbd/drbd_transport_rdma.c | 5 ++++-
>> 1 file changed, 4 insertions(+), 1 deletion(-)
>>
>> diff --git a/drbd/drbd_transport_rdma.c b/drbd/drbd_transport_rdma.c
>> index c7adc87e3..77ff0055e 100644
>> --- a/drbd/drbd_transport_rdma.c
>> +++ b/drbd/drbd_transport_rdma.c
>> @@ -2355,8 +2355,11 @@ static int dtr_repost_tx_desc(struct dtr_cm *old_cm, struct dtr_tx_desc *tx_desc
>> return -ECONNRESET;
>>
>> err = dtr_remap_tx_desc(old_cm, cm, tx_desc);
>> - if (err)
>> + if (err) {
>> + pr_err("dtr_remap_tx_desc failed cm : %px\n", cm);
>> + kref_put(&cm->kref, dtr_destroy_cm);
>> continue;
>> + }
>>
>> err = __dtr_post_tx_desc(cm, tx_desc);
>> if (!err) {
>> --
>> 2.27.0
>>
> .
>
More information about the drbd-dev
mailing list