Message ID | f5a7893d8a83c6fb8233bb3127d301e12f45e9b3.1669147951.git.jtoppins@redhat.com |
---|---|
State | New |
Headers |
Return-Path: <linux-kernel-owner@vger.kernel.org> Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:f944:0:0:0:0:0 with SMTP id q4csp2448623wrr; Tue, 22 Nov 2022 13:32:41 -0800 (PST) X-Google-Smtp-Source: AA0mqf4tOZt8zyyJVPTXlvCQ/WmZOmbEroaelozJKnYcpps6mDF8xSW1grYZywvOvZwSTR5jjoKb X-Received: by 2002:a17:906:470c:b0:78a:383a:e714 with SMTP id y12-20020a170906470c00b0078a383ae714mr21382293ejq.105.1669152761534; Tue, 22 Nov 2022 13:32:41 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1669152761; cv=none; d=google.com; s=arc-20160816; b=POZin04Unqpf0OJySzTTqPK83rgDTwtD9zuC6ExzYAYN2JJyaRyCuEtbOunSnoTPKl vAa/XJ37J7LYW8ojRp3uLkB58vMcZe4dlK1AnwsExe3QGwxxsLWLtpdGqyHVNewqd876 LhNtWaWkXdqdA1ors6E8FpS9UASucGJVOGgyCHv1Fzp/1KCi53Sq9cYEfjUdsH18WSVO PSZnjcIwDqze9TQZ+pzWPKd7Al+gxZqVmOaUMGBxt8fBPbYc4LI5eiPcP6TDv1aaCRBU A9hqHGVaEkXsEaYWHGTwsrFqBpAL5ZEVOEuaoPgZ7CsrhHQzOzuZbNepVfXlHs3TfKws guAg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=HPuBaWQRr8cpwhtPqmiKsJrBi/GFZSasH/SPpO6YLxs=; b=skAn8X/3v1bHeCpe+Vcj4Md98sJbe6lLF7g+m2MPPiafLd5u2xobuE0fiMlRMdx4rT Pkm9FIpGE/KwndBvnHxCoRPQs37W6Pgy+TMlPo+zjdrvE2oRRyXdm/4JJ7o4Hil1WQs7 /tMx4NutBWQCU+xKGY/cg4SoFyYoQEOPaD1AGXUvCxdY8G7glcqmQnxqYbpPLtAaesv6 f8paVvHDBPHnEJNSOgrPQJBWt2XMbNf/ePrpbDcZMWHKl6lnFlNRJL13dYyUv9J2L08l a1oh3VmsDspHMHM9acLGRDJC0NSl/TuFCmtSarkAphdgY3fOlgtghzU754Zi6ShOebHo JpDw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=En3C8TfJ; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id e13-20020a17090658cd00b007ae43ee86aesi14014780ejs.69.2022.11.22.13.32.12; Tue, 22 Nov 2022 13:32:41 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=En3C8TfJ; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231773AbiKVVZl (ORCPT <rfc822;cjcooper78@gmail.com> + 99 others); Tue, 22 Nov 2022 16:25:41 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49306 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235001AbiKVVZf (ORCPT <rfc822;linux-kernel@vger.kernel.org>); Tue, 22 Nov 2022 16:25:35 -0500 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 3F39C8221F for <linux-kernel@vger.kernel.org>; Tue, 22 Nov 2022 13:24:41 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1669152280; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=HPuBaWQRr8cpwhtPqmiKsJrBi/GFZSasH/SPpO6YLxs=; b=En3C8TfJB4axDyZqZhol9qeldmQ5fHapWMwr2nx48M5Wpin6oBcxnB9r0ZzeuFYxE4ztG7 Ym0iOXPSztCRzHD2QCoTGHJT2s21nHnOC1lIxKdN4HHKN8EKtlBGyVVv4qalzT+GLeSXfn +QlIh4nziBk+gCQ5G/aEpE/YQWMo3wk= Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-5-jh6kNTyaNHm9HmJfHgzvJg-1; Tue, 22 Nov 2022 16:24:36 -0500 X-MC-Unique: jh6kNTyaNHm9HmJfHgzvJg-1 Received: from smtp.corp.redhat.com (int-mx09.intmail.prod.int.rdu2.redhat.com [10.11.54.9]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id A9FFC801585; Tue, 22 Nov 2022 21:24:35 +0000 (UTC) Received: from jtoppins.rdu.csb (unknown [10.22.32.190]) by smtp.corp.redhat.com (Postfix) with ESMTP id 3E8CC4B3FC6; Tue, 22 Nov 2022 21:24:35 +0000 (UTC) From: Jonathan Toppins <jtoppins@redhat.com> To: "netdev @ vger . kernel . org" <netdev@vger.kernel.org>, pabeni@redhat.com Cc: Jay Vosburgh <j.vosburgh@gmail.com>, Veaceslav Falico <vfalico@gmail.com>, Andy Gospodarek <andy@greyhouse.net>, "David S. Miller" <davem@davemloft.net>, Eric Dumazet <edumazet@google.com>, Jakub Kicinski <kuba@kernel.org>, linux-kernel@vger.kernel.org Subject: [PATCH net-next v2 2/2] bonding: fix link recovery in mode 2 when updelay is nonzero Date: Tue, 22 Nov 2022 16:24:29 -0500 Message-Id: <f5a7893d8a83c6fb8233bb3127d301e12f45e9b3.1669147951.git.jtoppins@redhat.com> In-Reply-To: <cover.1669147951.git.jtoppins@redhat.com> References: <cover.1669147951.git.jtoppins@redhat.com> MIME-Version: 1.0 Content-Type: text/plain Content-Transfer-Encoding: 8bit X-Scanned-By: MIMEDefang 3.1 on 10.11.54.9 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2,SPF_HELO_NONE,SPF_NONE autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: <linux-kernel.vger.kernel.org> X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1750233526239845171?= X-GMAIL-MSGID: =?utf-8?q?1750233526239845171?= |
Series |
[net-next,v2,1/2] selftests: bonding: up/down delay w/ slave link flapping
|
|
Commit Message
Jonathan Toppins
Nov. 22, 2022, 9:24 p.m. UTC
Before this change when a bond in mode 2 lost link, all of its slaves
lost link, the bonding device would never recover even after the
expiration of updelay. This change removes the updelay when the bond
currently has no usable links. Conforming to bonding.txt section 13.1
paragraph 4.
Fixes: 41f891004063 ("bonding: ignore updelay param when there is no active slave")
Signed-off-by: Jonathan Toppins <jtoppins@redhat.com>
---
Notes:
v2:
* added fixes tag and reposted to net tree
drivers/net/bonding/bond_main.c | 11 ++++++++++-
1 file changed, 10 insertions(+), 1 deletion(-)
Comments
Jonathan Toppins <jtoppins@redhat.com> wrote: >Before this change when a bond in mode 2 lost link, all of its slaves >lost link, the bonding device would never recover even after the >expiration of updelay. This change removes the updelay when the bond >currently has no usable links. Conforming to bonding.txt section 13.1 >paragraph 4. > >Fixes: 41f891004063 ("bonding: ignore updelay param when there is no active slave") >Signed-off-by: Jonathan Toppins <jtoppins@redhat.com> This looks correct, although I suspect it would affect more than just balance-xor ("mode 2"); if memory serves, balance-rr mode operates similarly. Acked-by: Jay Vosburgh <jay.vosburgh@canonical.com> -J >--- > >Notes: > v2: > * added fixes tag and reposted to net tree > > drivers/net/bonding/bond_main.c | 11 ++++++++++- > 1 file changed, 10 insertions(+), 1 deletion(-) > >diff --git a/drivers/net/bonding/bond_main.c b/drivers/net/bonding/bond_main.c >index f298b9b3eb77..f747bd60d399 100644 >--- a/drivers/net/bonding/bond_main.c >+++ b/drivers/net/bonding/bond_main.c >@@ -2536,7 +2536,16 @@ static int bond_miimon_inspect(struct bonding *bond) > struct slave *slave; > bool ignore_updelay; > >- ignore_updelay = !rcu_dereference(bond->curr_active_slave); >+ if (BOND_MODE(bond) == BOND_MODE_ACTIVEBACKUP) { >+ ignore_updelay = !rcu_dereference(bond->curr_active_slave); >+ } else { >+ struct bond_up_slave *usable_slaves; >+ >+ usable_slaves = rcu_dereference(bond->usable_slaves); >+ >+ if (usable_slaves && usable_slaves->count == 0) >+ ignore_updelay = true; >+ } > > bond_for_each_slave_rcu(bond, slave, iter) { > bond_propose_link_state(slave, BOND_LINK_NOCHANGE); >-- >2.31.1 >
diff --git a/drivers/net/bonding/bond_main.c b/drivers/net/bonding/bond_main.c index f298b9b3eb77..f747bd60d399 100644 --- a/drivers/net/bonding/bond_main.c +++ b/drivers/net/bonding/bond_main.c @@ -2536,7 +2536,16 @@ static int bond_miimon_inspect(struct bonding *bond) struct slave *slave; bool ignore_updelay; - ignore_updelay = !rcu_dereference(bond->curr_active_slave); + if (BOND_MODE(bond) == BOND_MODE_ACTIVEBACKUP) { + ignore_updelay = !rcu_dereference(bond->curr_active_slave); + } else { + struct bond_up_slave *usable_slaves; + + usable_slaves = rcu_dereference(bond->usable_slaves); + + if (usable_slaves && usable_slaves->count == 0) + ignore_updelay = true; + } bond_for_each_slave_rcu(bond, slave, iter) { bond_propose_link_state(slave, BOND_LINK_NOCHANGE);