From patchwork Tue Feb 27 17:42:40 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Matthew Wilcox X-Patchwork-Id: 13574214 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 CBA13C54E41 for ; Tue, 27 Feb 2024 17:43:43 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id D4C7B6B0109; Tue, 27 Feb 2024 12:43:10 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id CFD206B010B; Tue, 27 Feb 2024 12:43:10 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id BC31D6B010C; Tue, 27 Feb 2024 12:43:10 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id AB7BE6B0109 for ; Tue, 27 Feb 2024 12:43:10 -0500 (EST) Received: from smtpin10.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id 829CA1A0BC7 for ; Tue, 27 Feb 2024 17:43:10 +0000 (UTC) X-FDA: 81838304940.10.8E6B135 Received: from casper.infradead.org (casper.infradead.org [90.155.50.34]) by imf25.hostedemail.com (Postfix) with ESMTP id 1E60FA0018 for ; Tue, 27 Feb 2024 17:43:08 +0000 (UTC) Authentication-Results: imf25.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b="j/AMIWaJ"; dmarc=none; spf=none (imf25.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=1709055789; 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=ejGLYMhF0Jxik9msp0N1jcC/bsh2AhaNDjT+XtzCS7M=; b=XYJd0r5jR7vSxoIcyy+AMpZPVXov+wZklagP5uJCrNqPdAOZQNOsyEKM4GL1wIESch1NnU ouHIC/SkSgI2R5L7JikmZ0qHQs+umPrbvtqJgAugLGkSimIjax+4jfiru/W6WRpvQBEUZP nEW8779li2/950JnIIg/Qu6WMutJd5c= ARC-Authentication-Results: i=1; imf25.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b="j/AMIWaJ"; dmarc=none; spf=none (imf25.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=1709055789; a=rsa-sha256; cv=none; b=rjw1N0xbM53k+5Gbsff6h+xHTKgrJyfZ549QTkzsIO9M7RPSkZmh6VqINmlGzPPmd6RFYd 5hd82inYAcvgVKsoZQVqjIm17oRbgNhIbMpFyczJYr6uDNLQUJlDneItYhLBHLiAPfPenE Lnm6wwzI8qchIoYxzgEi7zkFt0wbn+Y= 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=ejGLYMhF0Jxik9msp0N1jcC/bsh2AhaNDjT+XtzCS7M=; b=j/AMIWaJBix9kZWucU+y6s41Pv 6eODNjC9GxX/iGj1UoUBPC/z2yW2XkhUvXVcfUzqv0XVo5642VvVt3QKHY0nSisoCUWKYvAckiD8O fhWtM0MkEEpCzTRQnEAdlh0eKUQpEBjYDnWj2HM4TX+tE9M2fbscTsSDMyyboET0M3NFVXinqtz3Z iThI5luEuBVAEtrJ07Jpo3as1HMEddx6F8goay0ApyP0cIHEN9wn5z5K7bDgQwiU8rppTvCxuTeeg m0tjwZBao/EmBsJzNjghpwQeey8jlOGWULPqLOvzAHJ2uez6qeCPpvgEXRWGc40JbESa04UGA9/Wq 3gnELJ3A==; Received: from willy by casper.infradead.org with local (Exim 4.97.1 #2 (Red Hat Linux)) id 1rf1Tm-00000002yrA-2Ey4; Tue, 27 Feb 2024 17:42:58 +0000 From: "Matthew Wilcox (Oracle)" To: Andrew Morton Cc: "Matthew Wilcox (Oracle)" , linux-mm@kvack.org, Ryan Roberts Subject: [PATCH v3 06/18] mm: Remove use of folio list from folios_put() Date: Tue, 27 Feb 2024 17:42:40 +0000 Message-ID: <20240227174254.710559-7-willy@infradead.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240227174254.710559-1-willy@infradead.org> References: <20240227174254.710559-1-willy@infradead.org> MIME-Version: 1.0 X-Rspam-User: X-Rspamd-Server: rspam12 X-Rspamd-Queue-Id: 1E60FA0018 X-Stat-Signature: czoaeahh19p868ewten7gjpefnoouij3 X-HE-Tag: 1709055788-584415 X-HE-Meta: U2FsdGVkX1+o2/zzpb4enzXk9SwcGCXmHrK9HCCG4zmz88KbK2OqmzDBDM8ZrohRBQdr4JJzSvFenbI6qSKF3Pd4qdffNCgQpkidtmf2dk3/ZxRrAd9/51EpcRq+EOqT1m5kLRib/3/NPJIX/Fpyn/xVC+QFnXnTAPGo8YSt3SfeqA6uAvPBMy9bqXA/DFOqu1N1VKxKhtsbqOFseB1e+Kt0Eg+CtU3mkjLIzpfg1GtUtoYl4nT8oXbeuNvjm2L1YoIX7KlO0ds62YKHiDjGVdvpFJ8GBR8vRfMkeH2vu+y7tlgqoJYETW5L5opMXxCvnFvGNKw5X8HwC8pt6AaiG3rK16RBrQMOKW8BjHynm4cErNvzHoDUTczQLrF6VeZKcCL9NXf9Xqx4hHu11hTIODG/3C30/b6FExWb2F7INeYBmO4d22Io8W3QFBHLqCWice9BdlfyfUaL1Uu6zxFibHvicD8Q33/5YVXeQ1UqBIVZjvfpcY6/96Yel/CCEDZgD3xbtEQzj8ggp6ZFSbdqyPGxEqh26sNbjYEwpsbH73O58ORjVxK3wMjMYYVJOEKaxEMVC0bDqoKBnbf7LRPIsybNMf2q3MonKM9FEeucRQfPXRyFOT3pLIrYWoU9SJ5itU9BF3hBu6Y2SbbcC0cHXQK++I0xxh0PSht+jJopcD0uqJdteUyQe/EThi/Zk8+jBSXHYiPMaoEpASACkUNOBK6h4e0LGoD+5IepYWgaom+wFKExfLODPCEGVP9juDN31G4ByawsZZDI9Sn+6zPuRYXElTS0olVAg9DVJPyll6Rv/uWRhIGHOqifirLE5y9ZSaA1cwsiVNIwkl0MCQIRlSKqVBlM73xbB7DIUxxChKth8OSChjpOrVTJ1PVUqx+zL7DeSRKcoA2KNiA76+dRqUp6Gxv/KWi9 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: Instead of putting the interesting folios on a list, delete the uninteresting one from the folio_batch. Signed-off-by: Matthew Wilcox (Oracle) Reviewed-by: Ryan Roberts --- mm/swap.c | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/mm/swap.c b/mm/swap.c index 1cfb7b897ebd..ee8b131bf32c 100644 --- a/mm/swap.c +++ b/mm/swap.c @@ -961,12 +961,11 @@ void lru_cache_disable(void) */ void folios_put_refs(struct folio_batch *folios, unsigned int *refs) { - int i; - LIST_HEAD(pages_to_free); + int i, j; struct lruvec *lruvec = NULL; unsigned long flags = 0; - for (i = 0; i < folios->nr; i++) { + for (i = 0, j = 0; i < folios->nr; i++) { struct folio *folio = folios->folios[i]; unsigned int nr_refs = refs ? refs[i] : 1; @@ -1016,14 +1015,20 @@ void folios_put_refs(struct folio_batch *folios, unsigned int *refs) count_vm_event(UNEVICTABLE_PGCLEARED); } - list_add(&folio->lru, &pages_to_free); + if (j != i) + folios->folios[j] = folio; + j++; } if (lruvec) unlock_page_lruvec_irqrestore(lruvec, flags); + if (!j) { + folio_batch_reinit(folios); + return; + } - mem_cgroup_uncharge_list(&pages_to_free); - free_unref_page_list(&pages_to_free); - folio_batch_reinit(folios); + folios->nr = j; + mem_cgroup_uncharge_folios(folios); + free_unref_folios(folios); } EXPORT_SYMBOL(folios_put_refs);