From nobody Wed Apr 8 02:51:31 2026 Received: from mail-pl1-f174.google.com (mail-pl1-f174.google.com [209.85.214.174]) (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 82537145A1F for ; Wed, 11 Mar 2026 03:02:52 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.174 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773198173; cv=none; b=MtCdajATjvF+1xFcikaQxXkZK83vsGlJ4C9aT5dbT1YP0ugjws/y+Zld8DjhHyxvTyalqZtoME66rcAKbOtvWzB+frm/hv2TqCDAr3fR0Jl4zmf9b0uOd5J943mzmdkKLI7uRmvoo7mpL2KSb4fC/2Kmp+7fD1wsPwbqWYv4md8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773198173; c=relaxed/simple; bh=eP4rRkrdvvo7zSt7SRouGHMKrIys1GBHBWGYBH5RubI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=NygQpCwnmKeG8uP0qY9tKulWDHb4YRnT1+q1YnKAL5sFef78BO06GYTILBPVOTG3N7Di0pWq/H1zjcird0IUiIoRGBEi8Ii5Hbp3ZTff60dphDOsyKhqWdx/MarjqOJlMM3h+RFRFuwHpIGxUnGbm0XVi6gsTrgxx0OUjAnDw7k= 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=dmxS34vS; arc=none smtp.client-ip=209.85.214.174 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="dmxS34vS" Received: by mail-pl1-f174.google.com with SMTP id d9443c01a7336-2ad9f316d68so60902495ad.2 for ; Tue, 10 Mar 2026 20:02:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=shopee.com; s=shopee.com; t=1773198172; x=1773802972; 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=dmxS34vSsMH8AlKv6aYNHNs0qnXO3Lb5sLAB3kzzxa5HVqou/CbB+gPHggzLpFMSub fwLJUt5E62t+A4dCT9EvkAjXvR7J0z0GC8XJGWm2RJ+x/iaut3PBHo0xQGncupvdroWX HBMS3zzW1JYQr5ziphzOhxyTktmE5nHLBwj95rfs32vGRyEQih7rmTVp2ItV09H7CUgv oFsCoX5CMoL1spYs1nqpwcqZzdPFlcQ8tz25eYWqMXYyZFo4GdMxzB59taelY7UoCrNn +CHQJBibjPyCBMzo6PaB9RtTvjm6ORXyv9qF8l0qiDnfjxytB6bk9jJxYizvoUPLuhqd T6nA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1773198172; x=1773802972; 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=vIDzNgmK8kmk8cY9WaCkxSXiN8Z4Dlb2U/BJfnCA/QBOnq2SsZ4R2I+2ezCYgK6bB4 23V1yNkSb84qtR3PuboOykAim1opPyCVyNs+UcFEkDi+v89Aiv1Q3k4wGHhS2jHyF20b sZdpA3W/Dt2f7Zi5aracWU5acR41UkPeadNKFaZYxVRtigW2ddZj4J4xt/rd81QwpxFz vOa+/AS9r0s5TbIZ5xNkjOBOKDEz4HaqC3l0WPr+CHLnHnZZ3SZMJKFyJDwUlg+FPFok PieUYMdfao5TigQWUfUvZ0BLecPYjOhkbrXW9bW53UUJRwsUBnrdhd8RRBWNz8nIsz4i 6uxA== X-Forwarded-Encrypted: i=1; AJvYcCXSe/Fc73d0iMwkRESNjsXaMs74e02QFcn9Jn60JxDETWliPdPM+BnW/aYVMWrH/S13p/iwfgUj+DHa0Zc=@vger.kernel.org X-Gm-Message-State: AOJu0Yxv71I7KJzSUeTNTT9Xcx0wYz2L/1xIl/bOGzAD+jHr+hJA6Wmb u4TqJrk6ulwUhcVZcnSesmie1tQnUStgu46RWK/qjm3IUdPewFL2FlDMbd1zu+i1aFs= X-Gm-Gg: ATEYQzyP061GJNhEiB8X1BX40VOFrJOXdchdF3W+TuJ7vMyrS/5+rrQSHdZKnVxtmUo kR4REKbA4CuHPKAF06T9hSmQ4mUarcjD+zXses9tiPrz6PLNCS6KeojuMBuTRCeDC5M2Y+c7meC jFQI5KepnBtC4rNJfuwNk7+u5TSMAYQrLQCHfdqViP5FuU7UW6JrUiEp/h4k31cYaCHnzjTZM1H hBEdjuKzkV/nY/fvfK26gH2uK2tieGSEgGnqcpgoq8JdXqVEORrHcHQwocNl8fVi15iscA806Om B+yH/XxPPlbgl5gH2iQfri6NMcoMQAaAgd3nZGDq42Oq3GrfbDoMIvq2nHtZAeuiGi0Q1W5j1AK yvvQ6QcHiPAjZ6iUXtsijOzReimh4S9RkE+NMOh/4lAVrMa7lnxyFRtCN5QmHi45k9KD+iHUNvO Cm+kuWJX/qyKngW+tULI6K/eBkunUuojQQdGEFcw== X-Received: by 2002:a17:903:3c2d:b0:2ae:46b9:c653 with SMTP id d9443c01a7336-2aeae8945b1mr11721805ad.33.1773198171778; Tue, 10 Mar 2026 20:02:51 -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.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 10 Mar 2026 20:02:51 -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 2/4] mm: shrinker: move shrinker_id() code block below memcg_kmem_online() Date: Wed, 11 Mar 2026 11:02:33 +0800 Message-ID: <20260311030235.240953-3-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" 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