Re: [PATCH v2 net] net: sch_generic: aviod concurrent reset and enqueue op for lockless qdisc

From: Vishwanath Pai
Date: Thu Oct 29 2020 - 03:36:07 EST


On 10/28/20 10:37 PM, Yunsheng Lin wrote:
> On 2020/10/29 4:04, Vishwanath Pai wrote:
>> On 10/28/20 1:47 PM, Cong Wang wrote:
>>> On Wed, Oct 28, 2020 at 8:37 AM Pai, Vishwanath <vpai@xxxxxxxxxx> wrote:
>>>> Hi,
>>>>
>>>> We noticed some problems when testing the latest 5.4 LTS kernel and traced it
>>>> back to this commit using git bisect. When running our tests the machine stops
>>>> responding to all traffic and the only way to recover is a reboot. I do not see
>>>> a stack trace on the console.
>>>
>>> Do you mean the machine is still running fine just the network is down?
>>>
>>> If so, can you dump your tc config with stats when the problem is happening?
>>> (You can use `tc -s -d qd show ...`.)
>>>
>>>>
>>>> This can be reproduced using the packetdrill test below, it should be run a
>>>> few times or in a loop. You should hit this issue within a few tries but
>>>> sometimes might take up to 15-20 tries.
>>> ...
>>>> I can reproduce the issue easily on v5.4.68, and after reverting this commit it
>>>> does not happen anymore.
>>>
>>> This is odd. The patch in this thread touches netdev reset path, if packetdrill
>>> is the only thing you use to trigger the bug (that is netdev is always active),
>>> I can not connect them.
>>>
>>> Thanks.
>>
>> Hi Cong,
>>
>>> Do you mean the machine is still running fine just the network is down?
>>
>> I was able to access the machine via serial console, it looks like it is
>> up and running, just that networking is down.
>>
>>> If so, can you dump your tc config with stats when the problem is happening?
>>> (You can use `tc -s -d qd show ...`.)
>>
>> If I try running tc when the machine is in this state the command never
>> returns. It doesn't print anything but doesn't exit either.
>>
>>> This is odd. The patch in this thread touches netdev reset path, if packetdrill
>>> is the only thing you use to trigger the bug (that is netdev is always active),
>>> I can not connect them.
>>
>> I think packetdrill creates a tun0 interface when it starts the
>> test and tears it down at the end, so it might be hitting this code path
>> during teardown.
>
> Hi, Is there any preparation setup before running the above packetdrill test
> case, I run the above test case in 5.9-rc4 with this patch applied without any
> preparation setup, did not reproduce it.
>
> By the way, I am newbie to packetdrill:), it would be good to provide the
> detail setup to reproduce it,thanks.
>
>>
>> P.S: My mail server is having connectivity issues with vger.kernel.org
>> so messages aren't getting delivered to netdev. It'll hopefully get
>> resolved soon.
>>
>> Thanks,
>> Vishwanath
>>
>>
>> .
>>

I can't reproduce it on v5.9-rc4 either, it is probably an issue only on
5.4 then (and maybe older LTS versions). Can you give it a try on
5.4.68?

For running packetdrill, download the latest version from their github
repo, then run it in a loop without any special arguments. This is what
I do to reproduce it:

while true; do ./packetdrill <test-file>; done

I don't think any other setup is necessary.

-Vishwanath