[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <31e5860d-7e66-0a2d-99d6-7cde623f9c3c@tintri.com>
Date: Tue, 23 May 2017 14:35:41 -0700
From: Nithin Sujir <nsujir@...tri.com>
To: Mahesh Bandewar (महेश बंडेवार) <maheshb@...gle.com>
Cc: linux-netdev <netdev@...r.kernel.org>
Subject: Re: bond link state mismatch, rtnl_trylock() vs rtnl_lock()
On 5/23/2017 2:30 PM, Mahesh Bandewar (महेश बंडेवार) wrote:
> On Tue, May 23, 2017 at 12:32 PM, Nithin Sujir <nsujir@...tri.com> wrote:
>> diff --git a/drivers/net/bonding/bond_main.c
>> b/drivers/net/bonding/bond_main.c
>> index 5dca77e..1f60503 100644
>> --- a/drivers/net/bonding/bond_main.c
>> +++ b/drivers/net/bonding/bond_main.c
>> @@ -2614,8 +2614,7 @@ static void bond_loadbalance_arp_mon(struct
>> work_struct *work)
>> rcu_read_unlock();
>>
>> if (do_failover || slave_state_changed) {
>> - if (!rtnl_trylock())
>> - goto re_arm;
>> + rtnl_lock();
> Nitin, you can't do this. The tryRTNL code is to prevent deadlock
> during work-cancellation during bond_close().
Thanks, Mahesh. Yes, Jay pointed me to your patch and I will take a look
at how to use a similar approach.
Nithin.
>> if (slave_state_changed) {
>> bond_slave_state_change(bond);
>>
>>
Powered by blists - more mailing lists