From nobody Thu Apr 9 09:48:36 2026 Received: from mail-pj1-f52.google.com (mail-pj1-f52.google.com [209.85.216.52]) (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 3531F3BA230 for ; Tue, 10 Mar 2026 03:13:01 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.52 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773112382; cv=none; b=KTOXqHEJ6wiWeqrtLTofY1jZh72fFR4ByNkYNynFKWUN4YpKzrehOziUlhU1W96mhWVA0A+6nX55uHv7/L9Qv18Vw9h4ILzOe5vam+P689J/xmz+pZmI02yrgM2bqP4zsjoKSNLFY+h4yoE7rAqSF94R0qFPVdFdqar7S/mxVLo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773112382; c=relaxed/simple; bh=dCwfTCGHxiZaqLLfQElMjU/EtsHoLiAIFvxC9jCEBtw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=asM0u5sTNa1ORJrCbmhtvz6Hxjx2mnOW+hB9+nBCLzuXR3D/6+UTwp2y2XJ4jiKYZk36zn+IVpqu5Ae86yqWxlwwN3bb1UlmoaWv5Ann27qNRndFMsJ7ja04hP6P8JzeqqmJRPKnJK5wLd1/O9Um6YVMeL9HLpQ7rmRs+qASyWQ= 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=XsrWGH3M; arc=none smtp.client-ip=209.85.216.52 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="XsrWGH3M" Received: by mail-pj1-f52.google.com with SMTP id 98e67ed59e1d1-35691a231a7so7679715a91.3 for ; Mon, 09 Mar 2026 20:13:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=shopee.com; s=shopee.com; t=1773112380; x=1773717180; 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=XsrWGH3MWckqTTvqXhNIOy5Ihz/L1VNKkrXlU1g9DOAAlnlP/S9CkpaiA7qPZ8+yA1 PIsJQXmgdhKDuDi9D0fhEAtf2mMcORi1zCm1IFElm6U9Y91Pu5cKtl4buHl2AKuNnp6Y zUvowiqK8tASlH32sR46vEgV15r8mXR6YbcQe/Xk4RUoZ2ceFQ+pxDMnawfs+J9kNR8K PVI3UgrHfD53MJRjFpBSidHiF6PDoC95NoWHDse4JuFTyu4FN2VlZA07hkyCPk0FlcU+ hDClt8aoJxu7fAV0aG5MEUf+ZG6WXJ/U+58gdNhyV9sCe65c1akimvt1zvEvnlkB9BS8 z3hw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1773112380; x=1773717180; 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=rNR9bfYhLx7jAgbUqPLAwwaQv/eYYeDS6rZ9X1ldHPJ/5EuJT+J3wnD+A7Fhz7PemQ PLzXwGDe0bCANnh4EIzkDzv6Z2s9JyoNvvDg0TcgnVfAQOCPiFVH4JoYwTTLdBHBZV3F 1SbqcS/SEMmKS7z3frudKUhqmQuf70hTnY8xyv/iq/jLG3U+bapcfEauQYnLDNC+NOI5 9eECtNajzgUd+RMimLqZSWxHhqnR16r69k9XWf+STtBH69sZ5x3OX17G+qAfGtKOHOIl oiXNlEc4XEGbJRlisaBc/7+Ksda4pDLcf8D7Uqv2uPX97t0Ujtn9b5bXDpLzeRuX7BY4 YzEA== X-Forwarded-Encrypted: i=1; AJvYcCWLNiE0iGZMT2CzinXxqGjYwjPCAdT8OUNZVebtT+aUpNi9qXfC422XTBuBZmybNwzd7hPBUjWSaRkFWwE=@vger.kernel.org X-Gm-Message-State: AOJu0YxPa8/HfkbHy5rcLXQFifzw0IlO0xQfz/JFi/OC08hZgScek7z2 gX4PBHD/OBKvf8dKM6g0AA5QKX0ZtNzGs77aqC8KyLgNTLRYSfS9b+tcbAGizsKeD88= X-Gm-Gg: ATEYQzwGF9uWg+i3Y1FC6oraJFg3yuvWGlsDabQb/5voTdCe9UGBGNHmoSb86b6hhzq 7Yksth77QLzmdgQRnMHlx2vzudqK4wocHfQmTvA/qcSzCymPXWv+P9OM7fM8VyRvr2YwK+Wc7ai O4oP31beOurTUgu394tv7AjlFl0wZVqyhvCy4xTzgVygYx2t9NwWQlpgkS3BFm7yjRRprjCebRT 6W6jLvE2J+Q41vwPgVY7w9IKzfIx8RUH3GAfoxIjHDyWdAsuuSUC05EqDXvaHP0MSSPd54y0fuc KR99S5ei5T0uIjQW6nPEIjjfrJl+kbp2yaP7mwTnpk9iqJ+CPeGKxmUBDr/pwxuSRhfCrPUpvUV +5O4Ls3CUzbfMhOTK5nS74tdWto5I+mW4X1LiDuAW7+/waET6EJ0tJRa0NoHCsU8TceO5pNdBZk G6XC/Gkz6QwRbEXVuHgLHYjT1RzxCAx+NaQRKMHQ== X-Received: by 2002:a17:90b:288f:b0:358:db7b:f686 with SMTP id 98e67ed59e1d1-359be30b2e3mr11977416a91.26.1773112380605; Mon, 09 Mar 2026 20:13:00 -0700 (PDT) Received: from localhost.localdomain ([147.136.157.0]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-359bcc28f0fsm5169284a91.13.2026.03.09.20.12.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 09 Mar 2026 20:13:00 -0700 (PDT) From: Haifeng Xu To: akpm@linux-foundation.org, david@fromorbit.com, roman.gushchin@linux.dev Cc: zhengqi.arch@bytedance.com, muchun.song@linux.dev, linux-mm@kvack.org, linux-kernel@vger.kernel.org, Haifeng Xu Subject: [PATCH V2 1/4] mm: shrinker: add one more parameter in shrinker_id() Date: Tue, 10 Mar 2026 11:12:47 +0800 Message-ID: <20260310031250.289851-2-haifeng.xu@shopee.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260310031250.289851-1-haifeng.xu@shopee.com> References: <20260310031250.289851-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