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 Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id E0FB8D64099 for ; Fri, 8 Nov 2024 23:08:15 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 34A6890000A; Fri, 8 Nov 2024 18:08:15 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 2F8A88D0002; Fri, 8 Nov 2024 18:08:15 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 1729A90000A; Fri, 8 Nov 2024 18:08:15 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id E64D58D0002 for ; Fri, 8 Nov 2024 18:08:14 -0500 (EST) Received: from smtpin07.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id 8CC90120FC3 for ; Fri, 8 Nov 2024 23:08:14 +0000 (UTC) X-FDA: 82764466218.07.12A9F91 Received: from mail-qk1-f179.google.com (mail-qk1-f179.google.com [209.85.222.179]) by imf29.hostedemail.com (Postfix) with ESMTP id 5E282120023 for ; Fri, 8 Nov 2024 23:07:22 +0000 (UTC) Authentication-Results: imf29.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=eMN1uvla; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf29.hostedemail.com: domain of yosryahmed@google.com designates 209.85.222.179 as permitted sender) smtp.mailfrom=yosryahmed@google.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1731107232; a=rsa-sha256; cv=none; b=o6op46qODfPUxRODx3mbFQ7W/VZtYRUFvnKXC6zL6M0Kj4bRcF98mFdR7AM0f1502DeBrC bTNBNo03vGdJCheF7sEYYpIm4Slfz7MG6fpIvQj/bBGis0cZHbPSNU48jMOChUvGARF9G4 FIvGhnfQyFvmotUMuUexpuv95/P4MX0= ARC-Authentication-Results: i=1; imf29.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=eMN1uvla; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf29.hostedemail.com: domain of yosryahmed@google.com designates 209.85.222.179 as permitted sender) smtp.mailfrom=yosryahmed@google.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1731107232; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=E77NEMjYMvq3s2ZmJeds5qCuD207qrql0cMNnIpXYy4=; b=I/vUr/mbJIj96FbFmow4WnKJjQASahkvegdjPm4z1vPNeMo0T8z3ODIQVqLsETdOr9WAfe HRqjPgJ2NNQ43eQL9Vxp6/0gm3/OLGbwOxF2iOx+HMZPTwNTOQbI4xnd7UpfdAxw6QI41j lv0ib+50YvuUvoSeLjSr5LXPB6EAcps= Received: by mail-qk1-f179.google.com with SMTP id af79cd13be357-7b158542592so162324285a.2 for ; Fri, 08 Nov 2024 15:08:12 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1731107292; x=1731712092; darn=kvack.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=E77NEMjYMvq3s2ZmJeds5qCuD207qrql0cMNnIpXYy4=; b=eMN1uvlaq93U/VDLzbgVU7ma3A7gPsUilwiTka5JoRtAImpgY3NRbxLUT858SBkgUI UmtGlym+PCA6W1sdUCIbz587ekHcyofPtNt4aPUrfKlNAdRVa3d4S7ypWb0FhoyyeKcX Fpk57IwIi82dtES6LRk9l4SHhWdNmdV5IF+080nlSBB73dhnmJ22zpIj7bHirnULsW0K yHMNyJx7SvxoaOK4MOZ/7NOuPXeIveeQ2Hxl1VjfV4PiZnwpNgZoGmjR/iuWE6o2iE16 4u/j8Mub8RXGz/IXAReJ+nBBVxDYAdQ5mlbX09NGcbuMMye3yjd4O5XdEqnnqRrf8Ksf be+w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1731107292; x=1731712092; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=E77NEMjYMvq3s2ZmJeds5qCuD207qrql0cMNnIpXYy4=; b=OwDqJkzTBcLjp5wta3ATnvCzkyxya8J0sd6fjcuTjfyrni9F+QnJiXcCh4M8sWdtFz yKSw+5MXs92dn4CUoM90Z7rCMMSVVOpdIYrHj2QMUDUtdj3u7wnbrnBTwpbsCAp6D9bR 8I5IWzvx3/Grv8WQRB1cp4IlHXxiTICzmJQCAxxTlPpUsnO0Mi5gvRKstq71tdPfyL3E FByfuOLtFkjI6ge6jwopzkZibXjOgaLkIECCHiBuLHi2AvEXnF2Hu+Vqujfhh5z35lFX 1x03zaSz8GV6IEAPV+igBSdEraeKUIXapnuKMzZbFpoJk1Hv5wmZHEoODZwmQUdseiMn 3UYw== X-Forwarded-Encrypted: i=1; AJvYcCXC770Non/EGs/7MjOcPqzKO/ST47/FlXbfV2PPHIJz3l6cA8jK2HqF/r3PlnR7XCHqMwETneAArw==@kvack.org X-Gm-Message-State: AOJu0YxMj6/jQveo64YCXv7WPqbU8fnK+LHD6GSi0qIOtbd7mzi4eI14 K4ZPn5Z0cSYI3j2FaIKhv6vpAOQubmFrRJ9SAkgRuT14llCur7mC3puJx6IO7utI7jxMhxObGCP ItNUTHMhckYVbnqTn1NU6E/OyFg7n5THerI0A X-Google-Smtp-Source: AGHT+IEroN+1eNRmVul2IXF/Tn/9/3+CPo9UMgNFT5rcDOgryag/DFm7d5N/lf6Swe+UH76UpJxPXRHYfgwyOIOKJso= X-Received: by 2002:a05:620a:4543:b0:79d:536f:7b3a with SMTP id af79cd13be357-7b331f1978emr520700885a.56.1731107291514; Fri, 08 Nov 2024 15:08:11 -0800 (PST) MIME-Version: 1.0 References: <20241108212946.2642085-1-joshua.hahnjy@gmail.com> <20241108212946.2642085-4-joshua.hahnjy@gmail.com> In-Reply-To: <20241108212946.2642085-4-joshua.hahnjy@gmail.com> From: Yosry Ahmed Date: Fri, 8 Nov 2024 15:07:34 -0800 Message-ID: Subject: Re: [PATCH 3/3] memcg/hugetlb: Deprecate memcg hugetlb try-commit-cancel protocol To: Joshua Hahn Cc: shakeel.butt@linux.dev, hannes@cmpxchg.org, mhocko@kernel.org, roman.gushchin@linux.dev, muchun.song@linux.dev, akpm@linux-foundation.org, cgroups@vger.kernel.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org, kernel-team@meta.com Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspam-User: X-Rspamd-Queue-Id: 5E282120023 X-Rspamd-Server: rspam01 X-Stat-Signature: 74f1shd66978n8wya3kd5a31jypqhdo8 X-HE-Tag: 1731107242-140333 X-HE-Meta: U2FsdGVkX18+Fc//unmyrBvP7YzlMdN0nHhLbxbHUosmk/YTXhznGm2Ho2bAT4vrnvms75aHMPfC0RLxl2/MhDc2b5OUb83B7f9Ce5C334kCZHcw3lurFVnnJbBwh0+hvQZJllRBg3VI+jzs+zZ1strgvtmyDrYG3rvxeCoixkiW7SdSFrx+x3AXtNASHnkFP4442+aORjTH3Gtn5YwHDFlYOAINVjUhDTf4pUJ4l3fPx5G4rtMjJNr/RLuedkWPApD5GQ22crORYLjk2E/Tte3bv9Dn78gujbR4wMQs32WGwKG8jgGAnsBq6Sgo6EG+VYleVNe824E/WVF4pLe6aOsPAhhrcALZSWOw57Db2MdTU1NiSUxUToyV+OSxD6RtU1g9i5Yxe5mEyxwjToKbpA8MBWOVEJpq8qvn+rsFAx53yQiabJkab9lW8DybD1a5aBWfHUOz0hhQgx9WfGkYEWN+y2ZTOP0n8Z+7gyY16+fsozGFm1IMC/uS9aGqZ/AZ2l6o2WVMdKHoXdwi8R4a7sEtbB5AplW/M3IQhjV4mAZnkML9XxvdTLUxPRR4VwPSD5pW04G0wflv9pfIG/ZwdlgWgawu46zN5p1ouuyC+Q+fzd5m8T1sNLE5yMzmNuyRja7edLShMD95zyQHALPODHXjM/9yQ4mWpEvKvuoZFhf/TP4eIlE/FBW9xIkhO2NI3yDcnqJH1fgqCerTYTfle/D9kp9kKNADoEg8vZzem72ZyYE+PcjzcmoZZDnhQiRcVToRiJFROlyfrOqRkEoJ2ljdqaIGbHoSv767puJqM9f7siBoyc9DbFP5DYuLFzCJ9ldI2In9b4Cr6ZRuKefgtzkzXZ27zNm1vqjWXv5cVBVdQ8VqUwaP+jjn5XcbB2K9rKnEFikeonpKyWPEV/KjhRkEHJ68UnwPhu2x+Ezr1heIpUfDLYoxfAOQ/uUnujxytCPwMIm9nSutQ2hSuiL o/3KGtmi QbwsTkSxwwASadtOLxDmUNM/Q7Yok9E3g8sLX9ZLdAVJY3EK0/AP5gJSfjrt5SuVYVRZjH+01xjJ3U5gifzaQqt1p3hdMvkcvvMt0ZGURz5Ds6r9OS4JyqsRNjRHvlmNsK83i/RAoFcLs3VogPIQzl4/MSKw05vmeT0RD+fuUgYG1U5CjaNn/V0Z/sA3SsChQtk2axrm3Yh2x+FYHjoKZw30cQXnpIkADadWtUk5kLM4ecSaRT9/iy2VpfMHYWolPEI4+bWnF4kfq9vVpVqMwfXuwS6x2ERvM5uSKaccRvmBTymAXRDmRi/nM/A== 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: List-Subscribe: List-Unsubscribe: On Fri, Nov 8, 2024 at 1:30=E2=80=AFPM Joshua Hahn wrote: > > This patch fully deprecates the mem_cgroup_{try, commit, cancel} charge > functions, as well as their hugetlb variants. Please note that this > patch relies on [1], which removes the last references (from memcg-v1) > to some of these functions. Nit: We are not really "deprecating" them, we are removing them. Deprecation is usually tied to user-visible APIs that we cannot just remove, at least not right away. Please rephrase the subject and commit log accordingly. > > Signed-off-by: Joshua Hahn > > [1] https://lore.kernel.org/linux-mm/20241025012304.2473312-1-shakeel.but= t@linux.dev/ > > --- > include/linux/memcontrol.h | 22 ------------- > mm/memcontrol.c | 65 ++------------------------------------ > 2 files changed, 3 insertions(+), 84 deletions(-) > > diff --git a/include/linux/memcontrol.h b/include/linux/memcontrol.h > index d90c1ac791f1..75f15c4efe73 100644 > --- a/include/linux/memcontrol.h > +++ b/include/linux/memcontrol.h > @@ -649,8 +649,6 @@ static inline bool mem_cgroup_below_min(struct mem_cg= roup *target, > page_counter_read(&memcg->memory); > } > > -void mem_cgroup_commit_charge(struct folio *folio, struct mem_cgroup *me= mcg); > - > int __mem_cgroup_charge(struct folio *folio, struct mm_struct *mm, gfp_t= gfp); > > /** > @@ -675,9 +673,6 @@ static inline int mem_cgroup_charge(struct folio *fol= io, struct mm_struct *mm, > return __mem_cgroup_charge(folio, mm, gfp); > } > > -int mem_cgroup_hugetlb_try_charge(struct mem_cgroup *memcg, gfp_t gfp, > - long nr_pages); > - > int mem_cgroup_charge_hugetlb(struct folio* folio, gfp_t gfp); > > int mem_cgroup_swapin_charge_folio(struct folio *folio, struct mm_struct= *mm, > @@ -708,7 +703,6 @@ static inline void mem_cgroup_uncharge_folios(struct = folio_batch *folios) > __mem_cgroup_uncharge_folios(folios); > } > > -void mem_cgroup_cancel_charge(struct mem_cgroup *memcg, unsigned int nr_= pages); > void mem_cgroup_replace_folio(struct folio *old, struct folio *new); > void mem_cgroup_migrate(struct folio *old, struct folio *new); > > @@ -1167,23 +1161,12 @@ static inline bool mem_cgroup_below_min(struct me= m_cgroup *target, > return false; > } > > -static inline void mem_cgroup_commit_charge(struct folio *folio, > - struct mem_cgroup *memcg) > -{ > -} > - > static inline int mem_cgroup_charge(struct folio *folio, > struct mm_struct *mm, gfp_t gfp) > { > return 0; > } > > -static inline int mem_cgroup_hugetlb_try_charge(struct mem_cgroup *memcg= , > - gfp_t gfp, long nr_pages) > -{ > - return 0; > -} > - > static inline int mem_cgroup_swapin_charge_folio(struct folio *folio, > struct mm_struct *mm, gfp_t gfp, swp_entry_t entr= y) > { > @@ -1202,11 +1185,6 @@ static inline void mem_cgroup_uncharge_folios(stru= ct folio_batch *folios) > { > } > > -static inline void mem_cgroup_cancel_charge(struct mem_cgroup *memcg, > - unsigned int nr_pages) > -{ > -} > - > static inline void mem_cgroup_replace_folio(struct folio *old, > struct folio *new) > { > diff --git a/mm/memcontrol.c b/mm/memcontrol.c > index 95ee77fe27af..17126d8d263d 100644 > --- a/mm/memcontrol.c > +++ b/mm/memcontrol.c > @@ -2351,21 +2351,6 @@ int try_charge_memcg(struct mem_cgroup *memcg, gfp= _t gfp_mask, > return 0; > } > > -/** > - * mem_cgroup_cancel_charge() - cancel an uncommitted try_charge() call. > - * @memcg: memcg previously charged. > - * @nr_pages: number of pages previously charged. > - */ > -void mem_cgroup_cancel_charge(struct mem_cgroup *memcg, unsigned int nr_= pages) > -{ > - if (mem_cgroup_is_root(memcg)) > - return; > - > - page_counter_uncharge(&memcg->memory, nr_pages); > - if (do_memsw_account()) > - page_counter_uncharge(&memcg->memsw, nr_pages); > -} > - > static void commit_charge(struct folio *folio, struct mem_cgroup *memcg) > { > VM_BUG_ON_FOLIO(folio_memcg_charged(folio), folio); > @@ -2379,18 +2364,6 @@ static void commit_charge(struct folio *folio, str= uct mem_cgroup *memcg) > folio->memcg_data =3D (unsigned long)memcg; > } > > -/** > - * mem_cgroup_commit_charge - commit a previously successful try_charge(= ). > - * @folio: folio to commit the charge to. > - * @memcg: memcg previously charged. > - */ > -void mem_cgroup_commit_charge(struct folio *folio, struct mem_cgroup *me= mcg) > -{ > - css_get(&memcg->css); > - commit_charge(folio, memcg); > - memcg1_commit_charge(folio, memcg); > -} > - > static inline void __mod_objcg_mlstate(struct obj_cgroup *objcg, > struct pglist_data *pgdat, > enum node_stat_item idx, int nr) > @@ -4469,7 +4442,9 @@ static int charge_memcg(struct folio *folio, struct= mem_cgroup *memcg, > if (ret) > goto out; > > - mem_cgroup_commit_charge(folio, memcg); > + css_get(&memcg->css); > + commit_charge(folio, memcg); > + memcg1_commit_charge(folio, memcg); > out: > return ret; > } > @@ -4495,40 +4470,6 @@ bool memcg_accounts_hugetlb(void) > #endif > } > > -/** > - * mem_cgroup_hugetlb_try_charge - try to charge the memcg for a hugetlb= folio > - * @memcg: memcg to charge. > - * @gfp: reclaim mode. > - * @nr_pages: number of pages to charge. > - * > - * This function is called when allocating a huge page folio to determin= e if > - * the memcg has the capacity for it. It does not commit the charge yet, > - * as the hugetlb folio itself has not been obtained from the hugetlb po= ol. > - * > - * Once we have obtained the hugetlb folio, we can call > - * mem_cgroup_commit_charge() to commit the charge. If we fail to obtain= the > - * folio, we should instead call mem_cgroup_cancel_charge() to undo the = effect > - * of try_charge(). > - * > - * Returns 0 on success. Otherwise, an error code is returned. > - */ > -int mem_cgroup_hugetlb_try_charge(struct mem_cgroup *memcg, gfp_t gfp, > - long nr_pages) > -{ > - /* > - * If hugetlb memcg charging is not enabled, do not fail hugetlb = allocation, > - * but do not attempt to commit charge later (or cancel on error)= either. > - */ > - if (mem_cgroup_disabled() || !memcg || > - !cgroup_subsys_on_dfl(memory_cgrp_subsys) || !memcg_accou= nts_hugetlb()) > - return -EOPNOTSUPP; > - > - if (try_charge(memcg, gfp, nr_pages)) > - return -ENOMEM; > - > - return 0; > -} > - > int mem_cgroup_charge_hugetlb(struct folio *folio, gfp_t gfp) > { > struct mem_cgroup *memcg =3D get_mem_cgroup_from_current(); > -- > 2.43.5 > >