From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-3.6 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,HTML_MESSAGE,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS autolearn=no autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 7304FC54FD0 for ; Mon, 27 Apr 2020 11:23:18 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id 20809205C9 for ; Mon, 27 Apr 2020 11:23:18 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="itDZ/ofd" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 20809205C9 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id C680C8E0006; Mon, 27 Apr 2020 07:23:17 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id C17678E0001; Mon, 27 Apr 2020 07:23:17 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id B2D308E0006; Mon, 27 Apr 2020 07:23:17 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0239.hostedemail.com [216.40.44.239]) by kanga.kvack.org (Postfix) with ESMTP id 9AC4B8E0001 for ; Mon, 27 Apr 2020 07:23:17 -0400 (EDT) Received: from smtpin17.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay01.hostedemail.com (Postfix) with ESMTP id 5E09B180AD804 for ; Mon, 27 Apr 2020 11:23:17 +0000 (UTC) X-FDA: 76753398834.17.dog14_56e2e18cf3c54 X-HE-Tag: dog14_56e2e18cf3c54 X-Filterd-Recvd-Size: 9691 Received: from mail-yb1-f196.google.com (mail-yb1-f196.google.com [209.85.219.196]) by imf49.hostedemail.com (Postfix) with ESMTP for ; Mon, 27 Apr 2020 11:23:16 +0000 (UTC) Received: by mail-yb1-f196.google.com with SMTP id o139so9245377ybc.11 for ; Mon, 27 Apr 2020 04:23:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=ff6H9rbNfVi82eS+37by9BVr7WvwMvv3IAI0sVHNPVI=; b=itDZ/ofdfcse2bU2S1py1AdTf7iGn7dLn2j5wGv5SWb9Sy08NjprSzxmOXDFQ+wfwK Zliv7c+ODBqsxch2mVe3LwnAIt8Sp2bAzB6KOeYzqXo8so5XtytbG80R4aMyqGRI0CCA zlaBK+GaYqavicVwg1wGlei+3bG1nTK4kAO4tkmte4vjq6BrEOsZPX60yuQpkdqwo/5M N0VYMRlDmbQUveuoITmfyH5eMiyyamww7qShHc3vSY+EhgwMSK9+5+dL2anlzEvoRG+E RI3gV9By8nvdrkK8SOSfsIv/o5vMoEb2z7deusv+1ClJO6fOk0WQUL096ldLX1CGKDBQ 31NQ== 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=ff6H9rbNfVi82eS+37by9BVr7WvwMvv3IAI0sVHNPVI=; b=Sh7UULAWb4PCxBUYPBfBapklrTye/dbuvDlBfZmHMcP1RylBnkw0ZwO36+jOO6aZ2N oL28jykldmHpvN7uzOTqvMVNhUUW7alSwNVxWuEQ5ON37gk4NGxzjVLHnzOEsbQEfSRj 4CtNDVDioQQV/4PPMImg7bp9It11HGmneuGaWlyOBTP7Ui7weNTyKmaNIhghmT8v6zA6 iTCPpwwbKlU5wyke5/77CNOoBu9JQb9DGQFcYTirgdQLwPni2GgvZXf+AksXpO8pToio kUKRpEQgQbRFvsb1EGjFpSQsIDsPt/te9ATnHBG+2ZY5Oh0uQ+vfdPKlNx/yO5v9Pga7 EF2A== X-Gm-Message-State: AGi0PuYUSeLLhpLPxqO3qj+LqxGD7LSfX4CBmCpGOojtjJc0lu42b4Y8 Q/AaL0acOVeJQAaNM+dMCBdySntNotIN3vGNi5s= X-Google-Smtp-Source: APiQypJS54DzCluMiCY0dw1hHDtkdKeztFFypjvASh63vTs+F/x4mpCr/1HQ0MO7D/BfaT9MDblqOVnxxvbzpxIeN/I= X-Received: by 2002:a25:ced3:: with SMTP id x202mr36745723ybe.164.1587986596343; Mon, 27 Apr 2020 04:23:16 -0700 (PDT) MIME-Version: 1.0 References: <20200427111113.5956-1-urezki@gmail.com> <20200427111113.5956-18-urezki@gmail.com> In-Reply-To: <20200427111113.5956-18-urezki@gmail.com> From: Uladzislau Rezki Date: Mon, 27 Apr 2020 13:23:05 +0200 Message-ID: Subject: Re: [PATCH 18/24] mm/list_lru.c: Remove kvfree_rcu_local() function To: Joel Fernandes Cc: Linux Memory Management List , Andrew Morton , RCU Content-Type: multipart/alternative; boundary="000000000000fbb4c605a443f0a0" X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: --000000000000fbb4c605a443f0a0 Content-Type: text/plain; charset="UTF-8" Hello. I apologize. Please ignore this patch and email. Wanted to send it to one person, instead git send-email also handled some emails from commit footer. -- Vlad Rezki On Mon, Apr 27, 2020 at 1:11 PM Uladzislau Rezki (Sony) wrote: > Since there is newly introduced kvfree_rcu() API, there is no need in > queuing and using call_rcu() to kvfree() an object after the GP. > > Remove kvfree_rcu_local() function and replace call_rcu() by new > kvfree_rcu() API that does the same but in more efficient way. > > Cc: linux-mm@kvack.org > Cc: Andrew Morton > Cc: rcu@vger.kernel.org > Signed-off-by: Uladzislau Rezki (Sony) > Reviewed-by: Joel Fernandes (Google) > Signed-off-by: Joel Fernandes (Google) > --- > mm/list_lru.c | 13 +++---------- > 1 file changed, 3 insertions(+), 10 deletions(-) > > diff --git a/mm/list_lru.c b/mm/list_lru.c > index 42c95bcb53ca..a0b08b27a9b9 100644 > --- a/mm/list_lru.c > +++ b/mm/list_lru.c > @@ -12,6 +12,7 @@ > #include > #include > #include > +#include > #include "slab.h" > > #ifdef CONFIG_MEMCG_KMEM > @@ -373,21 +374,13 @@ static void memcg_destroy_list_lru_node(struct > list_lru_node *nlru) > struct list_lru_memcg *memcg_lrus; > /* > * This is called when shrinker has already been unregistered, > - * and nobody can use it. So, there is no need to use > kvfree_rcu_local(). > + * and nobody can use it. So, there is no need to use kvfree_rcu(). > */ > memcg_lrus = rcu_dereference_protected(nlru->memcg_lrus, true); > __memcg_destroy_list_lru_node(memcg_lrus, 0, memcg_nr_cache_ids); > kvfree(memcg_lrus); > } > > -static void kvfree_rcu_local(struct rcu_head *head) > -{ > - struct list_lru_memcg *mlru; > - > - mlru = container_of(head, struct list_lru_memcg, rcu); > - kvfree(mlru); > -} > - > static int memcg_update_list_lru_node(struct list_lru_node *nlru, > int old_size, int new_size) > { > @@ -419,7 +412,7 @@ static int memcg_update_list_lru_node(struct > list_lru_node *nlru, > rcu_assign_pointer(nlru->memcg_lrus, new); > spin_unlock_irq(&nlru->lock); > > - call_rcu(&old->rcu, kvfree_rcu_local); > + kvfree_rcu(old, rcu); > return 0; > } > > -- > 2.20.1 > > -- Uladzislau Rezki --000000000000fbb4c605a443f0a0 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hello.

I apologize. Please ignore=C2=A0this patch = and email. Wanted to send it to one person,
instead git send-emai= l also handled=C2=A0some emails from commit footer.

--
Vlad Rezki

On Mon, Apr 27, 2020 at 1:11 PM Uladzislau Re= zki (Sony) <urezki@gmail.com>= wrote:
Since th= ere is newly introduced kvfree_rcu() API, there is no need in
queuing and using call_rcu() to kvfree() an object after the GP.

Remove kvfree_rcu_local() function and replace call_rcu() by new
kvfree_rcu() API that does the same but in more efficient way.

Cc: linux-mm@kvack.= org
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: rcu@vger.kerne= l.org
Signed-off-by: Uladzislau Rezki (Sony) <urezki@gmail.com>
Reviewed-by: Joel Fernandes (Google) <joel@joelfernandes.org>
Signed-off-by: Joel Fernandes (Google) <joel@joelfernandes.org>
---
=C2=A0mm/list_lru.c | 13 +++----------
=C2=A01 file changed, 3 insertions(+), 10 deletions(-)

diff --git a/mm/list_lru.c b/mm/list_lru.c
index 42c95bcb53ca..a0b08b27a9b9 100644
--- a/mm/list_lru.c
+++ b/mm/list_lru.c
@@ -12,6 +12,7 @@
=C2=A0#include <linux/slab.h>
=C2=A0#include <linux/mutex.h>
=C2=A0#include <linux/memcontrol.h>
+#include <linux/rcupdate.h>
=C2=A0#include "slab.h"

=C2=A0#ifdef CONFIG_MEMCG_KMEM
@@ -373,21 +374,13 @@ static void memcg_destroy_list_lru_node(struct list_l= ru_node *nlru)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 struct list_lru_memcg *memcg_lrus;
=C2=A0 =C2=A0 =C2=A0 =C2=A0 /*
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0* This is called when shrinker has alread= y been unregistered,
-=C2=A0 =C2=A0 =C2=A0 =C2=A0 * and nobody can use it. So, there is no need = to use kvfree_rcu_local().
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 * and nobody can use it. So, there is no need = to use kvfree_rcu().
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0*/
=C2=A0 =C2=A0 =C2=A0 =C2=A0 memcg_lrus =3D rcu_dereference_protected(nlru-&= gt;memcg_lrus, true);
=C2=A0 =C2=A0 =C2=A0 =C2=A0 __memcg_destroy_list_lru_node(memcg_lrus, 0, me= mcg_nr_cache_ids);
=C2=A0 =C2=A0 =C2=A0 =C2=A0 kvfree(memcg_lrus);
=C2=A0}

-static void kvfree_rcu_local(struct rcu_head *head)
-{
-=C2=A0 =C2=A0 =C2=A0 =C2=A0struct list_lru_memcg *mlru;
-
-=C2=A0 =C2=A0 =C2=A0 =C2=A0mlru =3D container_of(head, struct list_lru_mem= cg, rcu);
-=C2=A0 =C2=A0 =C2=A0 =C2=A0kvfree(mlru);
-}
-
=C2=A0static int memcg_update_list_lru_node(struct list_lru_node *nlru,
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 int old_size, i= nt new_size)
=C2=A0{
@@ -419,7 +412,7 @@ static int memcg_update_list_lru_node(struct list_lru_n= ode *nlru,
=C2=A0 =C2=A0 =C2=A0 =C2=A0 rcu_assign_pointer(nlru->memcg_lrus, new); =C2=A0 =C2=A0 =C2=A0 =C2=A0 spin_unlock_irq(&nlru->lock);

-=C2=A0 =C2=A0 =C2=A0 =C2=A0call_rcu(&old->rcu, kvfree_rcu_local); +=C2=A0 =C2=A0 =C2=A0 =C2=A0kvfree_rcu(old, rcu);
=C2=A0 =C2=A0 =C2=A0 =C2=A0 return 0;
=C2=A0}

--
2.20.1



--
Uladzislau Rezki
--000000000000fbb4c605a443f0a0--