Received: by 2002:a05:6a10:22f:0:0:0:0 with SMTP id 15csp1037546pxk; Fri, 18 Sep 2020 02:04:07 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzkBCEACD8nwrjETPPzbZTU+4rvYUVXeZ5z/G6t5gjn071OBoo7/kJIWbo7r25irLX3wvTt X-Received: by 2002:a17:906:82d1:: with SMTP id a17mr34514843ejy.385.1600419847493; Fri, 18 Sep 2020 02:04:07 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1600419847; cv=none; d=google.com; s=arc-20160816; b=su9t13bL1ExdVD87pLLgytmPJz/UZXpGP50mYli+6aDEw8KpVjplkYuel/AWfc28Dz kaQ2ZxlZ2N4mjqWff2STSyNg35WatwV0gRXa2afayUqQ8Dg67xrsqh3Niqxh5fOtFmVo Gca8ABcQTiP5pB6v/rUMjUfb4YcNSoicLZvSE9E5I6FoX65ORj6PNVZrW/aNGgJRtIST rwQOZctoh/GGHj5FW0jyEOfNjJSu7sjSgcThcbxsdiRMtmyXpfBJtsy/1EfuB98yKOPO gYgbrmPcYBjgzmn4HzWvlb+3zNC9cUgFMiJYiz66AHjAMBW9SwZ9YsdFrWzwxEXLc1Ax DC3g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version:dkim-signature; bh=VEcVIKjTQPRY5wW56LKl3iYYM2PdJSTYEi/Boje3RWY=; b=X+x/TLbmXmzNgEY7JiLEMODhwdkNL1wYQgsDqnFQTdfgrOhEXSVogKlUml4g0NrPhj jY8qR9tgBWptQYO+ygRyuz4fc3V/vnza0kyP9m+EByn3ur1Vey6cSuLSyYAeuSw7BWbM UpVFuz7Gr/ldVGnYWakJMkrvoES5Lphip4pHJZyCJVGGVx3oYGZJAIaKLJ/6IFzL4MJx vQgW9JfEN5oF9vHqWk5SsqXS7m0Ptmq9ncu1j4Q1NQMlv1Qs02rf4TVIjoJszNI4M4e/ hW3SFFYgiJ8eagme2sL/Hgv8ZOwRkqtjsK1oPrhjnMHwBLwg1EWOq66Hf/fu9MVqZwa6 farg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=o5rqldtq; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id i22si1637629edy.183.2020.09.18.02.03.44; Fri, 18 Sep 2020 02:04:07 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=o5rqldtq; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726544AbgIRJAQ (ORCPT + 99 others); Fri, 18 Sep 2020 05:00:16 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33230 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726109AbgIRJAP (ORCPT ); Fri, 18 Sep 2020 05:00:15 -0400 Received: from mail-io1-xd44.google.com (mail-io1-xd44.google.com [IPv6:2607:f8b0:4864:20::d44]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 3FD17C06174A for ; Fri, 18 Sep 2020 02:00:15 -0700 (PDT) Received: by mail-io1-xd44.google.com with SMTP id d190so6054787iof.3 for ; Fri, 18 Sep 2020 02:00:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=VEcVIKjTQPRY5wW56LKl3iYYM2PdJSTYEi/Boje3RWY=; b=o5rqldtqmWX5hCHBkiWtR7T+Po97/Yz7dFzA/+1Q8xsypztn8I8v61yQKg/7dQXrSK dtBxitR/JDxyy8NAEptSAKDM/g4IFEIX4CDt87Y/mkxGEH9GJ0nQ+cTc4PYy0XcAsk7/ S6YAtP7Bl5RsOPZn+dj7q9JjZU7SPOqUxnuUue8HD4STKthWXqZgHgUut3tXa1UrMSsP Ce2GyXlk10zYIc3fthiuoSYWW2Vfl9HIfCy+A/GQ2JH8Ijz1R+5I1+Pyht/DxGya8DuU q1FDJLNPpO4ZUGNao14bhYzDkNJIKNnBq2klmN7ks7K3ikLyGiKghJQTHt0/jD4VedQu EjPg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=VEcVIKjTQPRY5wW56LKl3iYYM2PdJSTYEi/Boje3RWY=; b=UtKHRva842Q/wD1PW0zM81bdceagsKLR9RarJQX9yAnLJQPAHMHMa+aXpYdYv0/qAt v4Q9nz4l8qy1e+LlBlvGuXEk6TpQGN5EgAV9q2IuRXPl4bjiSnDbBJMtWIiImGNcDsqb uU89tAupmXVJGwE+5d2k33Viw/I8VUiENSU/sXoWX9uJr1rowGcqaxFlmmtO3UPmvYDK bMD+ajfzxvK+vZ2xulLnhp4NkIrFpnMHTof42+LSxlY4WQgwph6T8b3Hw13V9uP1mXhe CEECFCdqLoGkDN/X/mqKB+ihF442QZW12SyIZUXRSGGOYohfdSUfATp6VExG0iQhZiGC 2uqw== X-Gm-Message-State: AOAM532C5mtUI18IALUA9A1aYRkjCXL54gcLF/qJViOfBXjk8sni9zSl iFWdpF8NCsbAvy7bY7QmYtd6RN7dZcI+Efuc8njTWw== X-Received: by 2002:a6b:3bd3:: with SMTP id i202mr26666506ioa.145.1600419614392; Fri, 18 Sep 2020 02:00:14 -0700 (PDT) MIME-Version: 1.0 References: <20200917234953.CB1D295C0A69@us180.sjc.aristanetworks.com> In-Reply-To: From: Eric Dumazet Date: Fri, 18 Sep 2020 11:00:02 +0200 Message-ID: Subject: Re: [PATCH v3] net: use exponential backoff in netdev_wait_allrefs To: Francesco Ruggeri Cc: LKML , netdev , Cong Wang , Taehee Yoo , Andrii Nakryiko , Jiri Pirko , Alexei Starovoitov , Jakub Kicinski , David Miller Content-Type: text/plain; charset="UTF-8" Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri, Sep 18, 2020 at 10:48 AM Eric Dumazet wrote: > > > Also, I would try using synchronize_rcu() instead of the first s/synchronize_rcu/rcu_barrier/ of course :/ > msleep(), this might avoid all msleep() calls in your case. > > Patch without the macros to see the general idea : > > diff --git a/net/core/dev.c b/net/core/dev.c > index 266073e300b5fc21440ea8f8ffc9306a1fc9f370..2d3b65034bc0dd99017dea846e6c0a966f1207ee > 100644 > --- a/net/core/dev.c > +++ b/net/core/dev.c > @@ -9989,7 +9989,7 @@ EXPORT_SYMBOL(netdev_refcnt_read); > static void netdev_wait_allrefs(struct net_device *dev) > { > unsigned long rebroadcast_time, warning_time; > - int refcnt; > + int wait = 0, refcnt; > > linkwatch_forget_dev(dev); > > @@ -10023,8 +10023,13 @@ static void netdev_wait_allrefs(struct net_device *dev) > rebroadcast_time = jiffies; > } > > - msleep(250); > - > + if (!wait) { > + synchronize_rcu(); rcu_barrier(); > + wait = 1; > + } else { > + msleep(wait); > + wait = min(wait << 1, 250); > + } > refcnt = netdev_refcnt_read(dev); > > if (refcnt && time_after(jiffies, warning_time + 10 * HZ)) {