From nobody Wed Apr 8 02:50:55 2026 Received: from mail-pl1-f169.google.com (mail-pl1-f169.google.com [209.85.214.169]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 2B9A8145A1F for ; Wed, 11 Mar 2026 03:02:47 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.169 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773198169; cv=none; b=ZBBzgkMScpNTtfXA+g4KxhVH6UDMxhwR/+KPQMdMglwmSnLoy1G/8yhtkyAEga8/PDwLtNNn8761KH5gwccFri6FiHhLc/O7a0hOhMBf1wMtm1Y5a1Xpvj3W6vqImfuUlibj5IRvz5rgdXgkS8zEp4ENCYh8qWDXIG5c32bZ7fs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773198169; c=relaxed/simple; bh=dCwfTCGHxiZaqLLfQElMjU/EtsHoLiAIFvxC9jCEBtw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=QbQNnsDzUfPu9gUuEYnzSr6wv2V4ZpQEdTv8N08xagiDSU2qbosaO7zqryFUdSEm01Ynh3rhBRtRDsRQZTjv9e3oW55ZeNFGRKWPAHLZBfcW1e74JXWVLrfwfn2SYEahNUdUZpJvHf207CY9gNBEa0z3icDonNQVGpmOnqXjV/M= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=shopee.com; spf=pass smtp.mailfrom=shopee.com; dkim=pass (2048-bit key) header.d=shopee.com header.i=@shopee.com header.b=U/aFX30p; arc=none smtp.client-ip=209.85.214.169 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=shopee.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=shopee.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=shopee.com header.i=@shopee.com header.b="U/aFX30p" Received: by mail-pl1-f169.google.com with SMTP id d9443c01a7336-2a8fba3f769so59775905ad.2 for ; Tue, 10 Mar 2026 20:02:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=shopee.com; s=shopee.com; t=1773198167; x=1773802967; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=IJuSJm3X4xhlOG3+qvokrBOrPsbIME05pWUjl43X0aE=; b=U/aFX30psc1cKZdBipA0r4QF9smSc5CXShRRa/57NyqsJ9RNg2wpbHfT9fEXqU6QKT 5rYmJQKztDj9e+XR/hOnJUofFCyeHAClkbyG8aD4fi9xD4vnl/NIU6tOFTFwftweBBe7 2muoBnmKwzOzYRgLvVIaUsLVbcupnZLg6wj6uOyRWLVvkhxJex/veMSj4B0qDjRcL/Qr NT+jHaK+v79vQFoafVaadkFxoZzz4k6QStRnYGTAu/o4xEssNZBEuKV2qmbYvyDwcy+T 0u9vRcdOD5HeMjMsxVQKUpmk08BDHRbHoW3UmkC9vFb9rFpNFnsxQd3iNCOS/SOANo1S sr/Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1773198167; x=1773802967; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=IJuSJm3X4xhlOG3+qvokrBOrPsbIME05pWUjl43X0aE=; b=dt2AYegXTiFUR5zCWdveHoPLd/2O9BsWMf7hlregCcL//0Bh91XwLbbEFrbHWkFGc4 H7ctOp6vz0hHRWFVZD9DreZfekrhrA6u5fGG3UHbXyR2K2OLGzGgtLCO3Qn3AeHgRpa9 GqDWyWkgqvV0xap4aq+FFsbUy9N3HHhUztnN0QZnRHTG+rQnQYwlJ1tQ1dC+UO2fOZo1 teYWfuk9oD2ZpWRqqYnhnnGuUKCHwl4MAIC8jZZyOa3FlI47RLLL75qhgjVp13yWjZ81 UvTB7NXwJ675JqEAa5Cpg4prr1/X+FafqWk5xHNolRPfnuEZZSdmmjZPXclH3ZF1fBDr nEnQ== X-Forwarded-Encrypted: i=1; AJvYcCVV7LHflFxYNXEG56ES0Eu17yPuLvAGpqc5GNQykkfBJy8bZxYpPlcssbrix94moYbfsoQw//bBYSkC5mc=@vger.kernel.org X-Gm-Message-State: AOJu0Yy0G9WoF6TUUVwiC5DL4xooLz/bEV71dYntTwBOvUI61XuvjxHG cWIssEyosXpGc/y4lJjERlOoo6bC3BfXQDkYjW4vKoVg5UH98Yn1UPu5zzqCYviP1LU= X-Gm-Gg: ATEYQzz+aUW771AxU6pFNgqkYj0A2kcDtsBM+a9FQlkX39Fft+2IB+x6cUdWPJy+N0S GToFX7TLbSaTLUNHVtM7ZlFLquUrAvyZ0LJR8OULuOQPvpLEeTtrh8a9StteRmbZU/FXAKpXc0i sZSD46H/CqLz+p0QMFXj6z5MxfzHOBoDMzkWjI22vQcowCoL2C+anT6WAf9i0Uo5nqsARvNXr3a eOrJDVkrWAKVZpjNkVgMYuzwkiOXbuScVvo/IwKAqcdJMkfYA6HSPpVoMdJE0v7KiVqj3SW/SUQ 78iAxbacpeYwm29vhuqie2ubQHZUGXy12JZfL+L5A1+4qxEkawDtXXkx5OYQX51H/nDIB0AFc1s XXD8kKssVjtMbanxxJlk2C/K+9tk23wVp4eFj5Pd8m0e2fSF4Q2WdwRxlJGEQ7nKg8CTtAtcNIe +sVy+NDsVkU4snTuVHgWsrhtVOJ4UxRlEDnEODlQ== X-Received: by 2002:a17:903:41c4:b0:2ae:4f81:2f14 with SMTP id d9443c01a7336-2aeae81642fmr10076395ad.24.1773198167284; Tue, 10 Mar 2026 20:02:47 -0700 (PDT) Received: from localhost.localdomain ([147.136.157.1]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2aeae378974sm6251555ad.82.2026.03.10.20.02.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 10 Mar 2026 20:02:46 -0700 (PDT) From: Haifeng Xu To: akpm@linux-foundation.org, david@fromorbit.com, roman.gushchin@linux.dev, hannes@cmpxchg.org, mhocko@kernel.org, shakeel.butt@linux.dev Cc: zhengqi.arch@bytedance.com, muchun.song@linux.dev, usama.arif@linux.dev, linux-mm@kvack.org, linux-kernel@vger.kernel.org, Haifeng Xu Subject: [PATCH V3 1/4] mm: shrinker: add one more parameter in shrinker_id() Date: Wed, 11 Mar 2026 11:02:32 +0800 Message-ID: <20260311030235.240953-2-haifeng.xu@shopee.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260311030235.240953-1-haifeng.xu@shopee.com> References: <20260311030235.240953-1-haifeng.xu@shopee.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Add a parameter points to target memory cgroup in shrinker_id(). The following patch will use it to decide the id of shrinker. No functional change here. Signed-off-by: Haifeng Xu --- include/linux/memcontrol.h | 4 ++-- mm/huge_memory.c | 4 ++-- mm/shrinker.c | 12 ++++++++---- 3 files changed, 12 insertions(+), 8 deletions(-) diff --git a/include/linux/memcontrol.h b/include/linux/memcontrol.h index 70b685a85bf4..a583dbc0adcc 100644 --- a/include/linux/memcontrol.h +++ b/include/linux/memcontrol.h @@ -1634,7 +1634,7 @@ void free_shrinker_info(struct mem_cgroup *memcg); void set_shrinker_bit(struct mem_cgroup *memcg, int nid, int shrinker_id); void reparent_shrinker_deferred(struct mem_cgroup *memcg); =20 -static inline int shrinker_id(struct shrinker *shrinker) +static inline int shrinker_id(struct mem_cgroup *memcg, struct shrinker *s= hrinker) { return shrinker->id; } @@ -1670,7 +1670,7 @@ static inline void set_shrinker_bit(struct mem_cgroup= *memcg, { } =20 -static inline int shrinker_id(struct shrinker *shrinker) +static inline int shrinker_id(struct mem_cgroup *memcg, struct shrinker *s= hrinker) { return -1; } diff --git a/mm/huge_memory.c b/mm/huge_memory.c index 8e2746ea74ad..6050f8d71587 100644 --- a/mm/huge_memory.c +++ b/mm/huge_memory.c @@ -4353,7 +4353,7 @@ void deferred_split_folio(struct folio *folio, bool p= artially_mapped) ds_queue->split_queue_len++; if (memcg) set_shrinker_bit(memcg, folio_nid(folio), - shrinker_id(deferred_split_shrinker)); + shrinker_id(memcg, deferred_split_shrinker)); } split_queue_unlock_irqrestore(ds_queue, flags); } @@ -4509,7 +4509,7 @@ void reparent_deferred_split_queue(struct mem_cgroup = *memcg) ds_queue->split_queue_len =3D 0; =20 for_each_node(nid) - set_shrinker_bit(parent, nid, shrinker_id(deferred_split_shrinker)); + set_shrinker_bit(parent, nid, shrinker_id(parent, deferred_split_shrinke= r)); =20 unlock: spin_unlock(&parent_ds_queue->split_queue_lock); diff --git a/mm/shrinker.c b/mm/shrinker.c index 7b61fc0ee78f..61dbb6afae52 100644 --- a/mm/shrinker.c +++ b/mm/shrinker.c @@ -255,11 +255,13 @@ static long xchg_nr_deferred_memcg(int nid, struct sh= rinker *shrinker, struct shrinker_info *info; struct shrinker_info_unit *unit; long nr_deferred; + int id; =20 rcu_read_lock(); + id =3D shrinker_id(memcg, shrinker); info =3D rcu_dereference(memcg->nodeinfo[nid]->shrinker_info); - unit =3D info->unit[shrinker_id_to_index(shrinker->id)]; - nr_deferred =3D atomic_long_xchg(&unit->nr_deferred[shrinker_id_to_offset= (shrinker->id)], 0); + unit =3D info->unit[shrinker_id_to_index(id)]; + nr_deferred =3D atomic_long_xchg(&unit->nr_deferred[shrinker_id_to_offset= (id)], 0); rcu_read_unlock(); =20 return nr_deferred; @@ -271,12 +273,14 @@ static long add_nr_deferred_memcg(long nr, int nid, s= truct shrinker *shrinker, struct shrinker_info *info; struct shrinker_info_unit *unit; long nr_deferred; + int id; =20 rcu_read_lock(); + id =3D shrinker_id(memcg, shrinker); info =3D rcu_dereference(memcg->nodeinfo[nid]->shrinker_info); - unit =3D info->unit[shrinker_id_to_index(shrinker->id)]; + unit =3D info->unit[shrinker_id_to_index(id)]; nr_deferred =3D - atomic_long_add_return(nr, &unit->nr_deferred[shrinker_id_to_offset(shri= nker->id)]); + atomic_long_add_return(nr, &unit->nr_deferred[shrinker_id_to_offset(id)]= ); rcu_read_unlock(); =20 return nr_deferred; --=20 2.43.0