From nobody Thu Apr 9 09:48:36 2026 Received: from mail-pj1-f46.google.com (mail-pj1-f46.google.com [209.85.216.46]) (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 9D0AC3B895A for ; Tue, 10 Mar 2026 03:13:05 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.46 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773112386; cv=none; b=e2zD/eNUpXWXMR9GxlqOfkiCjd3Y30oa7Pvx6YZFuKFWOf6pvnwyPT0UmcmCmLNoAemNbnilZHQmM3YR1V9kCLMZ6oEFh6uV9uuKZOoKOyVRMSN3Mbep+DSYuzY/rU8Rjxq2Vl0JfDYrwoCbG6Ep5D1uTbIGCCXMUaSriy4MWZ0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773112386; c=relaxed/simple; bh=eP4rRkrdvvo7zSt7SRouGHMKrIys1GBHBWGYBH5RubI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=nrB8tRlAcUL1m/8avT1ULB8sO35ltjMlDGwpWyONt/htxp0iXHFfh5pRxZJ9p+jXni2WZ9SNLODhQnQIiMMpVa2GTY59QYu0Xqn5gjxkXks2qeobEqwPPrdriTWi6JMeT008oQmP7BZuhCXwwiAusee6Gd5O7sGyoIT3Q4/eAAY= 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=gDl6yMtl; arc=none smtp.client-ip=209.85.216.46 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="gDl6yMtl" Received: by mail-pj1-f46.google.com with SMTP id 98e67ed59e1d1-35995cb33a8so4831024a91.0 for ; Mon, 09 Mar 2026 20:13:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=shopee.com; s=shopee.com; t=1773112385; x=1773717185; 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=+OzUwreO0Fx04kzL8hUKy9/smwpH8GzkcqgpiyONa3A=; b=gDl6yMtlAifkKXSFqtP9S9izmurKifrhgxoTz2mcNkUZHbQ2Cl5h5j0fPzhtzFNr1m QFW/e2wOyimv4NNf5Q8f0+bctaFMZZ1IVKIM/NATjonIhv9R3SmqKbqwt+B4QyDiH5hG GzzWwhP0Z9NxUKnmpo+UtvS9YOkVSQr03s37PJkFNuD1tFxKJsrvsQvHnS69mvmaHJZs u6KEWlmGe/E7D3dgLHW/08HbDVXuZwvr//tLPzpTrnAx6zWqA1g6pKdeq1bgvFE6Zs1+ SZ8UZd9HLy7SF1GcgRCi7gkYgbO7Cv0Q1jx3ojEfPyM1e6x6EKsIL209NEZRudpOTp4y /pdQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1773112385; x=1773717185; 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=+OzUwreO0Fx04kzL8hUKy9/smwpH8GzkcqgpiyONa3A=; b=EDD6eu3k4IgrfoXQBf8edUP7ctcMNCby90L0uEwWbw8y7mvC5m8tA6qbWaKGOG3KuA nK713mIBE3rke6wfpVhlHUkU7PIafkF4vOx4EqcrVMnmS6eRi1bOlZX9z3Rr88G9xfX2 Cjm1Z4rBT9EI4GRKOiZos/4ekzZ81Huyx3asbCp9C0Wvt9+7vFas9oTC7meLhXKOTAeb 1oy67Vlucz4Hbv70tM8UFArYqymvxFRfzsIrvStvFhnJeSd4fuZ/1L0dsRWS3B+nb/jv zkBRpP/JEU5fQ0DVDGenabpq8sO86ELdjTnUaTeSV53sD4EkXqiCqm3xvnzrxhfcsT1U syig== X-Forwarded-Encrypted: i=1; AJvYcCUMgpW8GikzuYb/cSwJx5zRa14sDgxqFAZ9PwsZRVXtUiXkoe7GPgMiHe/Ja9taqhbLYeJqY90cjNPJSW0=@vger.kernel.org X-Gm-Message-State: AOJu0YxHPDx2SRTCwDoBurDzWN6EtsmHBhHBdXezG9eMksFAixG2sKVN YWDlDL95k922pZJKkG475Aky8txTk4LAkUGH6jowK97MjawhHgcFeLsCWhiulMDIhv0= X-Gm-Gg: ATEYQzwrHFxZVgS/nvjniPsxhBvJ15d/K4brB9aHlBg8FrzLgYARM6fd/rtEv5/kHzO GiOW5eiF4uISgPAvppEZ40McvnW1jVmeSe/TRD4pDn6LS9keSqeLpWDtZvxVNp68EYeqgJ+++LC yFENg4HAZYWKVNSJX9Koa1+x3Hth2F27ZiapUrhLxAg/ghMuU2DACD65ZZ8l0eykuw/UI3fQt4y 95SCK8xDfpXrIcFw+bMELIwf1S8iBtwsHToFUGmuX9BgJ/nO2vguDOzrAiv1rP2bIpWdzk+z3K3 sLbWo/yXPZx6k+eNyu+PkMLIIh0DB+OwGBA8IH1piojdoCV84hccV1IRNTFKNImdec5H1VZpCmH Q/uyipy/+1oEhRpy8RhR3E65FETqdZJWnO7YJLPhmwLkn1Ryh5AwLCRo0KfvERWiMnPMYVLJn7U +Yrs30jHSlgyrcCZMhwKrhhOAqiS5WQIfB7I1UUg== X-Received: by 2002:a17:90b:1b4d:b0:359:8df1:8553 with SMTP id 98e67ed59e1d1-359f0286267mr1489731a91.9.1773112384931; Mon, 09 Mar 2026 20:13:04 -0700 (PDT) Received: from localhost.localdomain ([147.136.157.0]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-359bcc28f0fsm5169284a91.13.2026.03.09.20.13.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 09 Mar 2026 20:13:03 -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 2/4] mm: shrinker: move shrinker_id() code block below memcg_kmem_online() Date: Tue, 10 Mar 2026 11:12:48 +0800 Message-ID: <20260310031250.289851-3-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" The following patch will use memcg_kmem_online() to decide the id of shrinker, so move the code block down to reduce the diff noise in the following patch. No functional change here. Signed-off-by: Haifeng Xu --- include/linux/memcontrol.h | 188 ++++++++++++++++++------------------- 1 file changed, 94 insertions(+), 94 deletions(-) diff --git a/include/linux/memcontrol.h b/include/linux/memcontrol.h index a583dbc0adcc..ce7b5101bc02 100644 --- a/include/linux/memcontrol.h +++ b/include/linux/memcontrol.h @@ -1582,100 +1582,6 @@ static inline void mem_cgroup_flush_foreign(struct = bdi_writeback *wb) =20 #endif /* CONFIG_CGROUP_WRITEBACK */ =20 -struct sock; -#ifdef CONFIG_MEMCG -extern struct static_key_false memcg_sockets_enabled_key; -#define mem_cgroup_sockets_enabled static_branch_unlikely(&memcg_sockets_e= nabled_key) - -void mem_cgroup_sk_alloc(struct sock *sk); -void mem_cgroup_sk_free(struct sock *sk); -void mem_cgroup_sk_inherit(const struct sock *sk, struct sock *newsk); -bool mem_cgroup_sk_charge(const struct sock *sk, unsigned int nr_pages, - gfp_t gfp_mask); -void mem_cgroup_sk_uncharge(const struct sock *sk, unsigned int nr_pages); - -#if BITS_PER_LONG < 64 -static inline void mem_cgroup_set_socket_pressure(struct mem_cgroup *memcg) -{ - u64 val =3D get_jiffies_64() + HZ; - unsigned long flags; - - write_seqlock_irqsave(&memcg->socket_pressure_seqlock, flags); - memcg->socket_pressure =3D val; - write_sequnlock_irqrestore(&memcg->socket_pressure_seqlock, flags); -} - -static inline u64 mem_cgroup_get_socket_pressure(struct mem_cgroup *memcg) -{ - unsigned int seq; - u64 val; - - do { - seq =3D read_seqbegin(&memcg->socket_pressure_seqlock); - val =3D memcg->socket_pressure; - } while (read_seqretry(&memcg->socket_pressure_seqlock, seq)); - - return val; -} -#else -static inline void mem_cgroup_set_socket_pressure(struct mem_cgroup *memcg) -{ - WRITE_ONCE(memcg->socket_pressure, jiffies + HZ); -} - -static inline u64 mem_cgroup_get_socket_pressure(struct mem_cgroup *memcg) -{ - return READ_ONCE(memcg->socket_pressure); -} -#endif - -int alloc_shrinker_info(struct mem_cgroup *memcg); -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); - -static inline int shrinker_id(struct mem_cgroup *memcg, struct shrinker *s= hrinker) -{ - return shrinker->id; -} -#else -#define mem_cgroup_sockets_enabled 0 - -static inline void mem_cgroup_sk_alloc(struct sock *sk) -{ -} - -static inline void mem_cgroup_sk_free(struct sock *sk) -{ -} - -static inline void mem_cgroup_sk_inherit(const struct sock *sk, struct soc= k *newsk) -{ -} - -static inline bool mem_cgroup_sk_charge(const struct sock *sk, - unsigned int nr_pages, - gfp_t gfp_mask) -{ - return false; -} - -static inline void mem_cgroup_sk_uncharge(const struct sock *sk, - unsigned int nr_pages) -{ -} - -static inline void set_shrinker_bit(struct mem_cgroup *memcg, - int nid, int shrinker_id) -{ -} - -static inline int shrinker_id(struct mem_cgroup *memcg, struct shrinker *s= hrinker) -{ - return -1; -} -#endif - #ifdef CONFIG_MEMCG bool mem_cgroup_kmem_disabled(void); int __memcg_kmem_charge_page(struct page *page, gfp_t gfp, int order); @@ -1844,6 +1750,100 @@ static inline bool memcg_is_dying(struct mem_cgroup= *memcg) } #endif /* CONFIG_MEMCG */ =20 +struct sock; +#ifdef CONFIG_MEMCG +extern struct static_key_false memcg_sockets_enabled_key; +#define mem_cgroup_sockets_enabled static_branch_unlikely(&memcg_sockets_e= nabled_key) + +void mem_cgroup_sk_alloc(struct sock *sk); +void mem_cgroup_sk_free(struct sock *sk); +void mem_cgroup_sk_inherit(const struct sock *sk, struct sock *newsk); +bool mem_cgroup_sk_charge(const struct sock *sk, unsigned int nr_pages, + gfp_t gfp_mask); +void mem_cgroup_sk_uncharge(const struct sock *sk, unsigned int nr_pages); + +#if BITS_PER_LONG < 64 +static inline void mem_cgroup_set_socket_pressure(struct mem_cgroup *memcg) +{ + u64 val =3D get_jiffies_64() + HZ; + unsigned long flags; + + write_seqlock_irqsave(&memcg->socket_pressure_seqlock, flags); + memcg->socket_pressure =3D val; + write_sequnlock_irqrestore(&memcg->socket_pressure_seqlock, flags); +} + +static inline u64 mem_cgroup_get_socket_pressure(struct mem_cgroup *memcg) +{ + unsigned int seq; + u64 val; + + do { + seq =3D read_seqbegin(&memcg->socket_pressure_seqlock); + val =3D memcg->socket_pressure; + } while (read_seqretry(&memcg->socket_pressure_seqlock, seq)); + + return val; +} +#else +static inline void mem_cgroup_set_socket_pressure(struct mem_cgroup *memcg) +{ + WRITE_ONCE(memcg->socket_pressure, jiffies + HZ); +} + +static inline u64 mem_cgroup_get_socket_pressure(struct mem_cgroup *memcg) +{ + return READ_ONCE(memcg->socket_pressure); +} +#endif + +int alloc_shrinker_info(struct mem_cgroup *memcg); +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); + +static inline int shrinker_id(struct mem_cgroup *memcg, struct shrinker *s= hrinker) +{ + return shrinker->id; +} +#else +#define mem_cgroup_sockets_enabled 0 + +static inline void mem_cgroup_sk_alloc(struct sock *sk) +{ +} + +static inline void mem_cgroup_sk_free(struct sock *sk) +{ +} + +static inline void mem_cgroup_sk_inherit(const struct sock *sk, struct soc= k *newsk) +{ +} + +static inline bool mem_cgroup_sk_charge(const struct sock *sk, + unsigned int nr_pages, + gfp_t gfp_mask) +{ + return false; +} + +static inline void mem_cgroup_sk_uncharge(const struct sock *sk, + unsigned int nr_pages) +{ +} + +static inline void set_shrinker_bit(struct mem_cgroup *memcg, + int nid, int shrinker_id) +{ +} + +static inline int shrinker_id(struct mem_cgroup *memcg, struct shrinker *s= hrinker) +{ + return -1; +} +#endif + #if defined(CONFIG_MEMCG) && defined(CONFIG_ZSWAP) bool obj_cgroup_may_zswap(struct obj_cgroup *objcg); void obj_cgroup_charge_zswap(struct obj_cgroup *objcg, size_t size); --=20 2.43.0