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 CDBC1C48260 for ; Sat, 17 Feb 2024 02:26:36 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 7A2BA6B00A6; Fri, 16 Feb 2024 21:25:58 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 74FA46B00A7; Fri, 16 Feb 2024 21:25:58 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 5A3B06B00A9; Fri, 16 Feb 2024 21:25:58 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id 468ED6B00A6 for ; Fri, 16 Feb 2024 21:25:58 -0500 (EST) Received: from smtpin22.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id 2103A1A0149 for ; Sat, 17 Feb 2024 02:25:58 +0000 (UTC) X-FDA: 81799705596.22.69E2829 Received: from casper.infradead.org (casper.infradead.org [90.155.50.34]) by imf15.hostedemail.com (Postfix) with ESMTP id A2F88A000C for ; Sat, 17 Feb 2024 02:25:56 +0000 (UTC) Authentication-Results: imf15.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b=fI7dBJoP; dmarc=none; spf=none (imf15.hostedemail.com: domain of willy@infradead.org has no SPF policy when checking 90.155.50.34) smtp.mailfrom=willy@infradead.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1708136756; 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-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=nC0n0NXQQI6XzJ4rhAAADl5IL4OyomYweYGR8HN01FM=; b=VXkN5eEqHwi8NJLVeXQql/zUBhH9PC88e4v1sA+xSJk4h/q4+qQuYQcwRyp+/ZamIlFHUt 6j8NTkHQ5EpRbjp97aK1KLcN9UZ3E1zQh5RTooZhkKzKXIwcSNLKkY2xF0IMDzJkKHCpIi Jd9zRMZOgqPxQnsZAAxEJssJ8trWxQo= ARC-Authentication-Results: i=1; imf15.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b=fI7dBJoP; dmarc=none; spf=none (imf15.hostedemail.com: domain of willy@infradead.org has no SPF policy when checking 90.155.50.34) smtp.mailfrom=willy@infradead.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1708136756; a=rsa-sha256; cv=none; b=fYqsHi5cA36uyCoKTluEXwoi+trblRjKhT89Jgl2cweWQQgKMGfhlZri7x55wCsmEv/YQ2 jVQ74zARLvBtrTi4L0nT6zp3auN/4cgDYQjX4jbfzPvuR2acQr5ZBR2+7rH+rIt1tQYzP6 2dCRg74nY2uHQ5aX8lZFTr5x+v0Sl2I= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=casper.20170209; h=Content-Transfer-Encoding:MIME-Version: References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:Sender:Reply-To: Content-Type:Content-ID:Content-Description; bh=nC0n0NXQQI6XzJ4rhAAADl5IL4OyomYweYGR8HN01FM=; b=fI7dBJoPXDMAZIBrlVUZHCw2DQ x0nqj0o/1ZPZcGMtIHFg5f7rNBmOg13IX+eq8ptJTpSPuaaYGvvinOwKdsDISX1X9zDIma/rh990G F5rTI8ujHVhH4TiQFDA/21uHAfj90QSZ4iRg4nf3I/NMDBBMbKVxrmCa6iQhKe7mG9oD0jUqUZJ1B BfUxPo6p2FmArY/tWs37JVehAvQoo7t0a0/++JxbNTEuRbXqJsSgsvNr42v4QVdS7dBeX4AC5Jjew QtIFKz+b3y5DiwPoX+jeaNek80MWzL9hZzKnELK3zETwVbj1D6vlvSOMN3AXPc5+A3WfwSNEEY0DQ VB0cCnLA==; Received: from willy by casper.infradead.org with local (Exim 4.97.1 #2 (Red Hat Linux)) id 1rbAOi-00000006HDF-2ccd; Sat, 17 Feb 2024 02:25:48 +0000 From: "Matthew Wilcox (Oracle)" To: Andrew Morton Cc: "Matthew Wilcox (Oracle)" , linux-mm@kvack.org, Ryan Roberts Subject: [PATCH v2 05/18] memcg: Add mem_cgroup_uncharge_folios() Date: Sat, 17 Feb 2024 02:25:31 +0000 Message-ID: <20240217022546.1496101-6-willy@infradead.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240217022546.1496101-1-willy@infradead.org> References: <20240217022546.1496101-1-willy@infradead.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Rspam-User: X-Rspamd-Server: rspam12 X-Rspamd-Queue-Id: A2F88A000C X-Stat-Signature: 6xew5ag5e9dqd5np7p4677bnro4j65jq X-HE-Tag: 1708136756-394914 X-HE-Meta: U2FsdGVkX1/R28d2XPrR+8zJywky6fwTJd3jkDGVul4MOxWvAv0dBHaN7gzJ4Vk9XNILqpUrpuFfK4kxHpJhdTPCcFgsV0mRAY4OA/14aShiKjmhzzEvF02oHMvshttN7hJM99pfMiUU0iI/60ZxHhEo1Wu5VPvJVYeo+jUluyx9NvUCsD4nH/H7cha0sCEEShorTemkroJVesNEsZTFtdBICJlfqFm6cVIcHc7wLkRNiijrMnkRW/L7fce6tRocYfYxZ0A9xjVpG/qgp5ZBstbSqISi5ijh523w3wwRMLD7MoawSOISG+1DPukQ3lGVO8OYgRafpqRs1HHOqbQhK9MwL7OkXId96p63k5LYSBpkeJNbPh2b96ZNOx0QHcMhUHUwc7C3wq4uX4h3UF20KtYSeYlFBk+VNiTsjPqH1EOocSd9r1WnNUy47bgitRLhOAVYq4UrNLvYCgLCdq0TqfVGwNqB8lI/Xi8702jBc6P0ka8uyINj+iTkv248xE6CUMIHtOpn9t9hWVQ3I++uayDYbYZ9a4Kdk6W0Af7GxJtzuZCUouerEkre2t8FHAYJyTiF1xEU28xUZEDVVJ9h40AIMn/K7HsKuWX90SeXBfmSbQUoEJayMdxT+LBXvpnRbcpNfDSpU0W4htmvv9oRYn+uS1rWoy44cG3xBD6djSeWHldSqy4rUBN1KltSn1XxPANiX3griCo6sMCFDRxu1nUVrqcNtvKj2N3UmlNJ0gunQS8Polwhqw7/LkrTqwORSsjk/6EQUfOsVkCicsGp5uRBpnQIzrmW2c1q3o3fUvRzCsV7TeVkZxdgNi0oDLM/DzTYVuNYmXCD0hGFlVeqSTPgZMtuQe+pZJMeQmWEkNrHyXzln06GdZxLm97HVyVYE5VAIPHBpef5SITzvp0+mczU+WoLl62enuIogkqS9bY= 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: Almost identical to mem_cgroup_uncharge_list(), except it takes a folio_batch instead of a list_head. Signed-off-by: Matthew Wilcox (Oracle) Reviewed-by: Ryan Roberts --- include/linux/memcontrol.h | 14 ++++++++++++-- mm/memcontrol.c | 13 +++++++++++++ 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/include/linux/memcontrol.h b/include/linux/memcontrol.h index 4e4caeaea404..46d9abb20761 100644 --- a/include/linux/memcontrol.h +++ b/include/linux/memcontrol.h @@ -721,10 +721,16 @@ static inline void mem_cgroup_uncharge_list(struct list_head *page_list) __mem_cgroup_uncharge_list(page_list); } -void mem_cgroup_cancel_charge(struct mem_cgroup *memcg, unsigned int nr_pages); +void __mem_cgroup_uncharge_folios(struct folio_batch *folios); +static inline void mem_cgroup_uncharge_folios(struct folio_batch *folios) +{ + if (mem_cgroup_disabled()) + return; + __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); /** @@ -1299,6 +1305,10 @@ static inline void mem_cgroup_uncharge_list(struct list_head *page_list) { } +static inline void mem_cgroup_uncharge_folios(struct folio_batch *folios) +{ +} + static inline void mem_cgroup_cancel_charge(struct mem_cgroup *memcg, unsigned int nr_pages) { diff --git a/mm/memcontrol.c b/mm/memcontrol.c index 94d1b278c458..0499d7838224 100644 --- a/mm/memcontrol.c +++ b/mm/memcontrol.c @@ -33,6 +33,7 @@ #include #include #include +#include #include #include #include @@ -7564,6 +7565,18 @@ void __mem_cgroup_uncharge_list(struct list_head *page_list) uncharge_batch(&ug); } +void __mem_cgroup_uncharge_folios(struct folio_batch *folios) +{ + struct uncharge_gather ug; + unsigned int i; + + uncharge_gather_clear(&ug); + for (i = 0; i < folios->nr; i++) + uncharge_folio(folios->folios[i], &ug); + if (ug.memcg) + uncharge_batch(&ug); +} + /** * mem_cgroup_replace_folio - Charge a folio's replacement. * @old: Currently circulating folio. -- 2.43.0