From: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>
To: Ding Tianhong <dingtianhong@huawei.com>,
Jay Vosburgh <fubar@us.ibm.com>,
Andy Gospodarek <andy@greyhouse.net>,
"David S. Miller" <davem@davemloft.net>,
Nikolay Aleksandrov <nikolay@redhat.com>,
Veaceslav Falico <vfalico@redhat.com>,
Netdev <netdev@vger.kernel.org>
Subject: Re: [PATCH net-next 6/9] bonding: use RTNL instead of bond lock for bond_3ad_state_machine_handler()
Date: Thu, 07 Nov 2013 02:50:20 +0300 [thread overview]
Message-ID: <527AD5BC.7040907@cogentembedded.com> (raw)
In-Reply-To: <5279E74C.8070403@huawei.com>
Hello.
On 11/06/2013 09:53 AM, Ding Tianhong wrote:
> The bond_3ad_state_machine_handler() is a slow path, it use the bond
> lock to protect the bond slave list and slave port, the slave list
> could not be protect by bond lock anymore, so I need to use RTNL or
> RCU instead of bond lock, but if I remove the bond lock, the
> bond_3ad_state_machine_handler() may use the slave port when bond
> releasing the slave, it will occur problems.
> As the bond_3ad_unbind_slave() only protected by bond lock or RTNL,
> so add RCU is not a good solution as it could not protect the slave
> port, so RTNL is fit here.
> Signed-off-by: Ding Tianhong <dingtianhong@huawei.com>
> ---
> drivers/net/bonding/bond_3ad.c | 15 +++++++--------
> 1 file changed, 7 insertions(+), 8 deletions(-)
>
> diff --git a/drivers/net/bonding/bond_3ad.c b/drivers/net/bonding/bond_3ad.c
> index 187b1b7..a4d190e 100644
> --- a/drivers/net/bonding/bond_3ad.c
> +++ b/drivers/net/bonding/bond_3ad.c
> @@ -2068,18 +2068,19 @@ void bond_3ad_state_machine_handler(struct work_struct *work)
[...]
> - //check if there are any slaves
> if (!bond_has_slaves(bond))
> goto re_arm;
>
> - // check if agg_select_timer timer after initialize is timed out
> + /* check if agg_select_timer timer after initialize is timed out */
> if (BOND_AD_INFO(bond).agg_select_timer && !(--BOND_AD_INFO(bond).agg_select_timer)) {
> slave = bond_first_slave(bond);
> port = slave ? &(SLAVE_AD_INFO(slave).port) : NULL;
>
> - // select the active aggregator for the bond
> if (port) {
> if (!port->slave) {
> pr_warning("%s: Warning: bond's first port is uninitialized\n",
> @@ -2093,7 +2094,6 @@ void bond_3ad_state_machine_handler(struct work_struct *work)
> bond_3ad_set_carrier(bond);
> }
>
> - // for each port run the state machines
> bond_for_each_slave(bond, slave, iter) {
> port = &(SLAVE_AD_INFO(slave).port);
> if (!port->slave) {
> @@ -2114,7 +2114,7 @@ void bond_3ad_state_machine_handler(struct work_struct *work)
> ad_mux_machine(port);
> ad_tx_machine(port);
>
> - // turn off the BEGIN bit, since we already handled it
> + /* turn off the BEGIN bit, since we already handled it */
> if (port->sm_vars & AD_PORT_BEGIN)
> port->sm_vars &= ~AD_PORT_BEGIN;
>
These comment changes are not documented in the changelog and should most
probably be in a separate patch.
WBR, Sergei
next prev parent reply other threads:[~2013-11-06 22:50 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-11-06 6:53 [PATCH net-next 6/9] bonding: use RTNL instead of bond lock for bond_3ad_state_machine_handler() Ding Tianhong
2013-11-06 23:50 ` Sergei Shtylyov [this message]
2013-11-07 1:40 ` Ding Tianhong
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=527AD5BC.7040907@cogentembedded.com \
--to=sergei.shtylyov@cogentembedded.com \
--cc=andy@greyhouse.net \
--cc=davem@davemloft.net \
--cc=dingtianhong@huawei.com \
--cc=fubar@us.ibm.com \
--cc=netdev@vger.kernel.org \
--cc=nikolay@redhat.com \
--cc=vfalico@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.