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 19B51E6FE3D for ; Fri, 6 Sep 2024 18:34:08 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 93C046B0085; Fri, 6 Sep 2024 14:34:07 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 8EB476B0088; Fri, 6 Sep 2024 14:34:07 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 7B2D16B0089; Fri, 6 Sep 2024 14:34:07 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id 5A2546B0085 for ; Fri, 6 Sep 2024 14:34:07 -0400 (EDT) Received: from smtpin01.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id F0F65140D48 for ; Fri, 6 Sep 2024 18:34:06 +0000 (UTC) X-FDA: 82535162892.01.A751016 Received: from mail-ed1-f54.google.com (mail-ed1-f54.google.com [209.85.208.54]) by imf24.hostedemail.com (Postfix) with ESMTP id 06A9B180007 for ; Fri, 6 Sep 2024 18:34:04 +0000 (UTC) Authentication-Results: imf24.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=wGEgVcbh; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf24.hostedemail.com: domain of yosryahmed@google.com designates 209.85.208.54 as permitted sender) smtp.mailfrom=yosryahmed@google.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1725647572; a=rsa-sha256; cv=none; b=5u6BUa8zW5cNYC6R6sWWTAIq6KJZ6dzZlapYZBl3S1qvYPj1G88aHFsmkg6U91LgOHqXjD TmMEabGLvEUug28YBa7v9A7XYLj//Tvh/VysSvdcgJ63Evv+zrQOEgbCYFm63OTdsaaXAT mVhvXwYvkEUuc72A33Ec/9CHP969UZ8= ARC-Authentication-Results: i=1; imf24.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=wGEgVcbh; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf24.hostedemail.com: domain of yosryahmed@google.com designates 209.85.208.54 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=1725647572; 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=wA4jWvAKerLqKGdQGsNhlfRSBHZb9aDWu1i/jhaydx8=; b=APaABYK8tWnhYz73yXbF4bujQ6fPffW1S+heQSlZJtmxmikQenbSgmI3BNKuovjSTSl+c3 4DKYBIDUT+pxfZYKYQ7TxAkXf8lXwBQU2TA0zedDGZlkU4hUWL5JSdaWFsz6pV1X/G8BDj w2pv2jgTGpy6SS/LUz8I+zDrdhRhEy4= Received: by mail-ed1-f54.google.com with SMTP id 4fb4d7f45d1cf-5c3cdbe4728so2534415a12.2 for ; Fri, 06 Sep 2024 11:34:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1725647643; x=1726252443; 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=wA4jWvAKerLqKGdQGsNhlfRSBHZb9aDWu1i/jhaydx8=; b=wGEgVcbhLrLGSjeF4RAtKgPYfsaxr/rwxBluUauK12QBeoBLa3S++cIHes1i89VjVj Hbo5rAPjxzfafzvR2zVe9sz+hcqiUqoScstOZKpO6jdssAD3N/Gl6NoR5HCOl2qaNCQE K5x/OHXnWVaQiG8zLCDm9XyG9ms1GvWdezrD9xOCdM2i3LKObSOXLTNF2eKiJ6CfH527 oXYjuyn3awjhh9hImb/KLsHEfRayZ+mG/QFB9ofTEtwXjYY6ATtKo7e9OAqiSxRlVFK1 ri7DKRDMxY/QMwXw6szTlyTT64CfrljlGcCDlKBc6DUIPBbyVPSYty7FeBDYbvykQS5d vRzQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1725647643; x=1726252443; 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=wA4jWvAKerLqKGdQGsNhlfRSBHZb9aDWu1i/jhaydx8=; b=DP8x67vDOqx+ZdBJq3CrYiqZT/xW1JD0/27VXZsPOSRpO6K6NQbHetWnIh/NqPd78q oe3Xm+f0GEk1nXc6rhWcyP4E+uSE2MwDwzabtT6V50MzvfFXUmyPeWoLGHY1/SOZaQET 2gIt/1BzfmC8FSHRk/+E1JgEFntjIDaosDuOlFmVdCvde0bSdIF6HxcP1oUQEaxe6lfg DU55r0JMQPuJSVsOcpkOFoLlf+xKu8knXZpEX1S01PvqCKY6s9uBvXOjWEcVwi5JQEep u+okomjYxq8PXLjhak5wlgShU5o11Ng6oQU2ztpdsMHFl02DSvc0m2bUqEf3KBL/OZ9A 0qhg== X-Forwarded-Encrypted: i=1; AJvYcCXf5TQGrcEWl69wZFZ55xq4eYET6OEwARMeqrxcw5m7MWJiUdZkJ5vVm11i6HbixYnaYD10HTUlXQ==@kvack.org X-Gm-Message-State: AOJu0YwOmk13oO27CxRiFtF2oIbe98xPoZANR0zRTgGmW2ZJyfCDMp9L gJTVoLynupfDZ4X2L1I2IWaVtBZPohi9V683lhycJcymIBBUugBd3EXlxciL46WaXTThPIaJLZ+ RWrFARX4kaWUnB+2cJhBaw+NDEcfXA6BP4ivg X-Google-Smtp-Source: AGHT+IHPZtkpY6maXS950f7lChurENnJfJyabHtW/7qxTPqFZIsvXKotGst5TiU8Um040WIhrofijsV9Mr2GmpL7Wh4= X-Received: by 2002:a17:907:7e89:b0:a86:aded:b089 with SMTP id a640c23a62f3a-a897fad808emr2051090266b.68.1725647642749; Fri, 06 Sep 2024 11:34:02 -0700 (PDT) MIME-Version: 1.0 References: <20240906001047.1245-1-21cnbao@gmail.com> <20240906001047.1245-3-21cnbao@gmail.com> In-Reply-To: <20240906001047.1245-3-21cnbao@gmail.com> From: Yosry Ahmed Date: Fri, 6 Sep 2024 11:33:26 -0700 Message-ID: Subject: Re: [PATCH v8 2/3] mm: add nr argument in mem_cgroup_swapin_uncharge_swap() helper to support large folios To: Barry Song <21cnbao@gmail.com> Cc: akpm@linux-foundation.org, linux-mm@kvack.org, hanchuanhua@oppo.com, baolin.wang@linux.alibaba.com, chrisl@kernel.org, david@redhat.com, hannes@cmpxchg.org, hch@infradead.org, hughd@google.com, kaleshsingh@google.com, kasong@tencent.com, linux-kernel@vger.kernel.org, mhocko@suse.com, minchan@kernel.org, nphamcs@gmail.com, ryan.roberts@arm.com, ryncsn@gmail.com, senozhatsky@chromium.org, shakeel.butt@linux.dev, shy828301@gmail.com, surenb@google.com, v-songbaohua@oppo.com, willy@infradead.org, xiang@kernel.org, ying.huang@intel.com Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspamd-Queue-Id: 06A9B180007 X-Rspam-User: X-Rspamd-Server: rspam05 X-Stat-Signature: 5jzsx1w9wmpxpeoes6pmtz6sp3hp5uss X-HE-Tag: 1725647644-605668 X-HE-Meta: U2FsdGVkX196VPGj1qmbtSCDePhTTbU/x5A9kx+ruYoPOxPC4L1SYqGLy9h952KbctvrP31njA9E7Sc0qrkLtONFDvbvy4/NH3WmR3uN0XZ9UVxvOCvKYZJf2nqAQoEfuRTF7Q5MgwmHNnpHesIZUSHvcvtLElpJ4doLAGVDzYHUx25yYNJQYlugkx52DaW/uynbzrkO7kMub797xCvh7pWTJx1+b8u9nb/Kf0wrMoB7nx3FwlSZ5GgS3vO1Y4BJDJHyKt2syeIV8CnpMtf5ZLpJWXyAbVOgIrVhzTPGjfr82M/jTZdluq+wFchovjhbgD1X0T6rkiVdJeKr6FizwaZGAx6AY/w64yo0dGcOwxiha8vjsMj7dk9Idi5uyNBB6XANDe5e1i4ZT1MEG4KzBB4lgJNLPHgMkcL/M9P+DMmacNcz0opnj9GR7+mERPP8bd/cl8UhGDO0gFmSO+29XRpcqG2V34mmSg7nRmxBgA8Y/2UkJMakGBF7BMobP4C4BMZP9NHaPvDZMFgTkbX4FEFWIpC6rW094IPyG2JWpHq3crsxiPerIGFQdxTJ9ub7YARs858H/V6Tn9giWJmj9JJVFpwT2A839yF2vPLUeWxd68Pi0ZlBhfcbtLedLzu0KzhibkLV1Tb3ytPTo/cryOXVJKuf0OL+pZhclwxqNmB7KF1Hfbv0gfKUjl3Xcdnp5FtfjZBbm0zw13UB1x4xRdCU9djQecEmsJ7Q8xX6I7zinCuQ9+yBJ+kUebqvOAKbFHJqZhrhGrDrECJjHv91uJ7G54ywX/hiLQdRLDiWwXJcMSk9DA5nRprDWuTcGU5juxgoAIlbcVzhghXeP7zQHPx/Gy8aqKjjIl9XvDBpqOggnqXO7k5WceQcNmxDffPL/b6TeagsAowmxZrOh7RwP7+a+GS2lj2+Sl+jL0xswy1MJtB8gBwQoRw0zDgHVsME1coikgRrjrGuqdKt4Ng 3pPdI60b nEXftDBAj3tMYbpuDKuxHqYmLGA/AUJXMdy7/gX6OhAhI+5eh8bkSM2aH297O1pV6SnnMYVNyU0OBttUqrDFS/wWeQVnp84OMCaSBI9mWesxBLPaF2p+0IDHPdArP9Ex8rMiCMGB5qU6/t18K+LXACY9pKOAgW2PC7otA0U+ETQDnZrx+AyIMUTBhTDrGOGWDvIGiC0sOgAHpNOOk3h0RhnPZI0iqLrZpR9l0GJ7eFAK5J4TlNM90O3oqUUH1wyb4OZKOQeeFgtzW67kJepxCWclLCd6iOshtZZ2Ds8qPLtw+3rfFVLxGmBhQ0Oxa+EXX+Fva3pqr5FOi7BJSE2MdH0aOZ0fuXOqsoeb7BYJTmUPibyD+PVSh/oPgu5EKoef/VSa3Vx2CrK5Jo+IOcBqjpY2O6HL6TUa64Hz5C0jk0t7fR5nQRL5mxZcWV/3dyYQZFQXblllQRVXCkB34Oln8aUbymue3FEdCjtS5kLNmUjBO7Xh5+wrTunC3pLqnMDayQsLxxQYpzlcPAWr1FStsf93OUTGedXFKGDU6GWfXBw3KLyx2wWpVu5dk7r8hhPKbPO91QDL766k0PrBP7iVjqCbyVKTtU1LP5krKEiyhvS/PnW0hKkXudiYy2vo9KrFs4S3rW8mmQZiH8RTMZHcVuAs+AvgFQ67SeBFbNAo9B/ys64vMo0acNiEUkQ== 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 Thu, Sep 5, 2024 at 5:11=E2=80=AFPM Barry Song <21cnbao@gmail.com> wrote= : > > From: Barry Song > > With large folios swap-in, we might need to uncharge multiple entries all > together, add nr argument in mem_cgroup_swapin_uncharge_swap(). > > For the existing two users, just pass nr=3D1. > > Signed-off-by: Barry Song Reviewed-by: Yosry Ahmed > Acked-by: Chris Li > Cc: Shakeel Butt > Cc: Baolin Wang > Cc: Christoph Hellwig > Cc: David Hildenbrand > Cc: Gao Xiang > Cc: "Huang, Ying" > Cc: Hugh Dickins > Cc: Johannes Weiner > Cc: Kairui Song > Cc: Kairui Song > Cc: Kalesh Singh > Cc: Matthew Wilcox (Oracle) > Cc: Michal Hocko > Cc: Minchan Kim > Cc: Nhat Pham > Cc: Ryan Roberts > Cc: Sergey Senozhatsky > Cc: Suren Baghdasaryan > Cc: Yang Shi > Cc: Yosry Ahmed > --- > include/linux/memcontrol.h | 5 +++-- > mm/memcontrol.c | 7 ++++--- > mm/memory.c | 2 +- > mm/swap_state.c | 2 +- > 4 files changed, 9 insertions(+), 7 deletions(-) > > diff --git a/include/linux/memcontrol.h b/include/linux/memcontrol.h > index 2ef94c74847d..34d2da05f2f1 100644 > --- a/include/linux/memcontrol.h > +++ b/include/linux/memcontrol.h > @@ -699,7 +699,8 @@ int mem_cgroup_hugetlb_try_charge(struct mem_cgroup *= memcg, gfp_t gfp, > > int mem_cgroup_swapin_charge_folio(struct folio *folio, struct mm_struct= *mm, > gfp_t gfp, swp_entry_t entry); > -void mem_cgroup_swapin_uncharge_swap(swp_entry_t entry); > + > +void mem_cgroup_swapin_uncharge_swap(swp_entry_t entry, unsigned int nr_= pages); > > void __mem_cgroup_uncharge(struct folio *folio); > > @@ -1206,7 +1207,7 @@ static inline int mem_cgroup_swapin_charge_folio(st= ruct folio *folio, > return 0; > } > > -static inline void mem_cgroup_swapin_uncharge_swap(swp_entry_t entry) > +static inline void mem_cgroup_swapin_uncharge_swap(swp_entry_t entry, un= signed int nr) > { > } > > diff --git a/mm/memcontrol.c b/mm/memcontrol.c > index bda6f75d22ff..c0d36ca20332 100644 > --- a/mm/memcontrol.c > +++ b/mm/memcontrol.c > @@ -4559,14 +4559,15 @@ int mem_cgroup_swapin_charge_folio(struct folio *= folio, struct mm_struct *mm, > > /* > * mem_cgroup_swapin_uncharge_swap - uncharge swap slot > - * @entry: swap entry for which the page is charged > + * @entry: the first swap entry for which the pages are charged > + * @nr_pages: number of pages which will be uncharged > * > * Call this function after successfully adding the charged page to swap= cache. > * > * Note: This function assumes the page for which swap slot is being unc= harged > * is order 0 page. > */ > -void mem_cgroup_swapin_uncharge_swap(swp_entry_t entry) > +void mem_cgroup_swapin_uncharge_swap(swp_entry_t entry, unsigned int nr_= pages) > { > /* > * Cgroup1's unified memory+swap counter has been charged with th= e > @@ -4586,7 +4587,7 @@ void mem_cgroup_swapin_uncharge_swap(swp_entry_t en= try) > * let's not wait for it. The page already received a > * memory+swap charge, drop the swap entry duplicate. > */ > - mem_cgroup_uncharge_swap(entry, 1); > + mem_cgroup_uncharge_swap(entry, nr_pages); > } > } > > diff --git a/mm/memory.c b/mm/memory.c > index 42674c0748cb..cdf03b39a92c 100644 > --- a/mm/memory.c > +++ b/mm/memory.c > @@ -4100,7 +4100,7 @@ vm_fault_t do_swap_page(struct vm_fault *vmf) > ret =3D VM_FAULT_OOM; > goto out_page; > } > - mem_cgroup_swapin_uncharge_swap(entry); > + mem_cgroup_swapin_uncharge_swap(entry, 1)= ; > > shadow =3D get_shadow_from_swap_cache(ent= ry); > if (shadow) > diff --git a/mm/swap_state.c b/mm/swap_state.c > index a042720554a7..4669f29cf555 100644 > --- a/mm/swap_state.c > +++ b/mm/swap_state.c > @@ -522,7 +522,7 @@ struct folio *__read_swap_cache_async(swp_entry_t ent= ry, gfp_t gfp_mask, > if (add_to_swap_cache(new_folio, entry, gfp_mask & GFP_RECLAIM_MA= SK, &shadow)) > goto fail_unlock; > > - mem_cgroup_swapin_uncharge_swap(entry); > + mem_cgroup_swapin_uncharge_swap(entry, 1); > > if (shadow) > workingset_refault(new_folio, shadow); > -- > 2.34.1 >