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 92C3AC5B552 for ; Tue, 10 Jun 2025 06:45:51 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id DB49C6B0092; Tue, 10 Jun 2025 02:45:50 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id D8CE86B0093; Tue, 10 Jun 2025 02:45:50 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id CA3CC6B0095; Tue, 10 Jun 2025 02:45:50 -0400 (EDT) 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 B1D9B6B0092 for ; Tue, 10 Jun 2025 02:45:50 -0400 (EDT) Received: from smtpin19.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id 692255DA5D for ; Tue, 10 Jun 2025 06:45:50 +0000 (UTC) X-FDA: 83538555660.19.011BBD8 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) by imf12.hostedemail.com (Postfix) with ESMTP id C4C3D40007 for ; Tue, 10 Jun 2025 06:45:48 +0000 (UTC) Authentication-Results: imf12.hostedemail.com; dkim=pass header.d=infradead.org header.s=bombadil.20210309 header.b=lAAr6X66; spf=none (imf12.hostedemail.com: domain of BATV+631296521f62fa6b3e9f+7961+infradead.org+hch@bombadil.srs.infradead.org has no SPF policy when checking 198.137.202.133) smtp.mailfrom=BATV+631296521f62fa6b3e9f+7961+infradead.org+hch@bombadil.srs.infradead.org; dmarc=fail reason="No valid SPF, DKIM not aligned (relaxed)" header.from=lst.de (policy=none) ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1749537948; 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=3sStcHyQnNjZ9wxA9URrZKPeistb5ycdMyLp185h/zI=; b=O4vypEnULJG7nxWJGqgFmkLfYsIFbRqy5sA82aVDcIgxeSeYyIkZq/yMW6Tnn9HvVuNYrX V3OnNgABisvwYRY8czDoNdNr9Lrbr9b5FJ5Zsk5ZmcslvMPeY3gtriYnBqKxOZ7BBWz7Hj smZU81siAfMYH+D2jbPg8uwceAstdfs= ARC-Authentication-Results: i=1; imf12.hostedemail.com; dkim=pass header.d=infradead.org header.s=bombadil.20210309 header.b=lAAr6X66; spf=none (imf12.hostedemail.com: domain of BATV+631296521f62fa6b3e9f+7961+infradead.org+hch@bombadil.srs.infradead.org has no SPF policy when checking 198.137.202.133) smtp.mailfrom=BATV+631296521f62fa6b3e9f+7961+infradead.org+hch@bombadil.srs.infradead.org; dmarc=fail reason="No valid SPF, DKIM not aligned (relaxed)" header.from=lst.de (policy=none) ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1749537948; a=rsa-sha256; cv=none; b=JO39Km3Tcja4uIkkbuqXXK29eVHPMwSXTjvCtrIN47m87D92WtEV7Kxkf5obuV4JT6Q1zF uwSpJ5g2/bPv3b6rI4998P4er5338pkQrK9fZwSH86VfQZTNRfZdrzLeqt+9WMj97Rdk1k a8Ls440yvRuNA+krVQ3Tu6bwqhX9cZ8= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20210309; 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=3sStcHyQnNjZ9wxA9URrZKPeistb5ycdMyLp185h/zI=; b=lAAr6X66/jiqF4Ah1TZCbQf9GP PiBtp/ubFojDj3jFW94eUJNFHVl9M+/1w+DYBuSEsmJpk1HEA9z7w1iPlu9y0TOQQIDnW/PB7WYVN ZFAj2Opmp7ds/0F21Q1lSjRZH7QNSV9LxqWYPaXB6syoJdcvfjja5XresS/3IPgqxvYiLd/jeJLpp UhKoIdl2dzS8SPuU6TlPr9CBa0I9k/E76XM9wDLcpSk3XOh/kkGF/JstFUJQipN8CAyTEg2gCQGvi rmrzkOzja3xCOgN9WdW0QBMmloNYlZpVFlZ4rU374yC48APdVZCX7nGZLukEggSrD4EULbQyVw9r7 zreE7cqw==; Received: from 2a02-8389-2341-5b80-d601-7564-c2e0-491c.cable.dynamic.v6.surfer.at ([2a02:8389:2341:5b80:d601:7564:c2e0:491c] helo=localhost) by bombadil.infradead.org with esmtpsa (Exim 4.98.2 #2 (Red Hat Linux)) id 1uOrsE-00000005s1V-00Fb; Tue, 10 Jun 2025 05:50:14 +0000 From: Christoph Hellwig To: Andrew Morton , Hugh Dickins , Johannes Weiner , Yosry Ahmed , Nhat Pham Cc: Matthew Wilcox , Chengming Zhou , Baolin Wang , linux-mm@kvack.org Subject: [PATCH 5/6] mm: stop passing a writeback_control structure to swap_writeout Date: Tue, 10 Jun 2025 07:49:41 +0200 Message-ID: <20250610054959.2057526-6-hch@lst.de> X-Mailer: git-send-email 2.47.2 In-Reply-To: <20250610054959.2057526-1-hch@lst.de> References: <20250610054959.2057526-1-hch@lst.de> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org. See http://www.infradead.org/rpr.html X-Rspamd-Queue-Id: C4C3D40007 X-Stat-Signature: db9fdq18hpi6hqn7gn4coaqsf9x638z9 X-Rspam-User: X-Rspamd-Server: rspam04 X-HE-Tag: 1749537948-897489 X-HE-Meta: U2FsdGVkX19acNFN/mCDM4M8zbDmJho2uEkM1yDbhvXpPgpayeiu+D64GX2qjGkdjcacfn1qfAgtAmD5ruhRniJsrJ2D2bBc+rpmvFkfVNSpIlU2VvU0K59AkO+nqItFYS5zJVlz2OkkyRpQxj32wa7hDoNRbRmvAebLsmwx18dA5AScb65SO4Uq3Xn8m2tzb+0Lg0BwTKXaTlqpK62CnYhxubqZR///USl/fa7r168dE2w8FQ2vpuz6uouhXHOkbaUSsGP0rxdhMUQP+bkH0i1tH/JGiEmWdXMLcmEBZUudLBX6ZFEyEV7qZF6/9p8hvT3H2jXvWfFxtKeyj04PymX0cVaKQjH0EHdckZLq/a+tOpQPQ3LQnuSTNYmjYxT6zVpuehB0w+1a8JaQWuTD8LkWBIb/K0Ro0qRmwhQqjPEcDlRAlD+xVO3sE0Dny7zKclkdbSthdoVLuH6ufG8tduKuIPNbsUGANKgTSdRReezuHEJqhlvMUxITfmWdN14ReqyiE4ACU/Jsxumix5JXlxXzCT2edKdAa8u8fIT2TH6OmpcpGpkw0Gsaq8DH+MSXEq5lKZ4AhEFaN6R//XSkkH2DpGW3TsSCdrITDkk784U1my9t3EzRImJj3Qq7RrEWD2Rp7rTt6vaGWmL2RdduBlpgzyFWych/sp2X2nWFlcFlg+GZkZiSR3hxF72IFeuH79b2yXBTZAfTNLVg+Qw45jJTTglhC4bmNOIto9SYw99TOhfb3Bu0SkfXbxaFVfxXCzTH+nlwExRB+JOLJJjA/UZPW8+ghFIxtxXaAon7bhol1O1IXUqXnPra3qcPA6TIhGzdnK2CBYBMXTV6+y0tgKU7pt/K3KSj16CLe2hXTQSh7R8566rlmccfWx1RudMoNUxpFQf4TleuuiPTjQQ5nwAcknY9VQdPe7QUq8eLnyzh8cY9lRkLMSsNmIXBHG80CV12DRUGOcGTn9tf9eY X5YGfVGq cBAdKRz2FuJGBg3PgZ6l7XeDPuk+woMN99rlgWwnIsYmNjFP1BjEhwGnCt6r298hxfPA69G7T4G9B92fJXam0WpgXFI38ZWB7LbBEKQyTQYJUp8TLWeruUJnA6FAlKUohcm5oaUqWlVAbjueFefWOAvgulndvhlxW8QgD4SalWbhCILAe8CqDb5S2hbe4SswvVByfcLoIX0h2PHL2ZPqRT6+pdU30PwR6IIhHAwmf9pQHq04dK2ay/yXtuztCB7W1hfRT592eBFMZ4/mHeyvP7sjR82y/snax5GGrT/iJICjedYLj0m52/DOGJorSe4h0bQiun916z14IiorKn6m/Gx5NyhJfitl/Cv0WVMdRDncWn+2R6b+z5P5awSJLVm3++Q1iMRXJu5B0Sf2nI1S8ywLSmbT0XRMUU5/dyvaJkO+7+7zimQGIr30m7EWQJwoI738fKcC51n9vK7PUtOHdtez3oeTVkAXotjEexTuBJtNBymZnekoTRg16rFSFtD2dMWkFOkcw9jNBz993lpVPirJt+ZQPw8AxlMSmQTiitZayaM9CojFY9962aCfUnDsgt+5cz4l6rgedSSFaKtILR4xyps6WQlwKaPiF 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: swap_writeout only needs the swap_iocb cookie from the writeback_control structure, so pass it explicitly. Signed-off-by: Christoph Hellwig --- include/linux/writeback.h | 7 ------- mm/page_io.c | 4 ++-- mm/shmem.c | 10 +--------- mm/swap.h | 7 +++++-- mm/vmscan.c | 10 +--------- 5 files changed, 9 insertions(+), 29 deletions(-) diff --git a/include/linux/writeback.h b/include/linux/writeback.h index 82f217970092..9e960f2faf79 100644 --- a/include/linux/writeback.h +++ b/include/linux/writeback.h @@ -72,13 +72,6 @@ struct writeback_control { */ unsigned no_cgroup_owner:1; - /* To enable batching of swap writes to non-block-device backends, - * "plug" can be set point to a 'struct swap_iocb *'. When all swap - * writes have been submitted, if with swap_iocb is not NULL, - * swap_write_unplug() should be called. - */ - struct swap_iocb **swap_plug; - /* internal fields used by the ->writepages implementation: */ struct folio_batch fbatch; pgoff_t index; diff --git a/mm/page_io.c b/mm/page_io.c index fb52bedcc966..a2056a5ecb13 100644 --- a/mm/page_io.c +++ b/mm/page_io.c @@ -237,7 +237,7 @@ static void swap_zeromap_folio_clear(struct folio *folio) * We may have stale swap cache pages in memory: notice * them here and get rid of the unnecessary final write. */ -int swap_writeout(struct folio *folio, struct writeback_control *wbc) +int swap_writeout(struct folio *folio, struct swap_iocb **swap_plug) { int ret = 0; @@ -281,7 +281,7 @@ int swap_writeout(struct folio *folio, struct writeback_control *wbc) return AOP_WRITEPAGE_ACTIVATE; } - __swap_writepage(folio, wbc->swap_plug); + __swap_writepage(folio, swap_plug); return 0; out_unlock: folio_unlock(folio); diff --git a/mm/shmem.c b/mm/shmem.c index 71039b9847c5..b649f181e2e1 100644 --- a/mm/shmem.c +++ b/mm/shmem.c @@ -1635,21 +1635,13 @@ int shmem_writeout(struct folio *folio, struct swap_iocb **plug, list_add(&info->swaplist, &shmem_swaplist); if (!folio_alloc_swap(folio, __GFP_HIGH | __GFP_NOMEMALLOC | __GFP_NOWARN)) { - struct writeback_control wbc = { - .sync_mode = WB_SYNC_NONE, - .nr_to_write = SWAP_CLUSTER_MAX, - .range_start = 0, - .range_end = LLONG_MAX, - .for_reclaim = 1, - .swap_plug = plug, - }; shmem_recalc_inode(inode, 0, nr_pages); swap_shmem_alloc(folio->swap, nr_pages); shmem_delete_from_page_cache(folio, swp_to_radix_entry(folio->swap)); mutex_unlock(&shmem_swaplist_mutex); BUG_ON(folio_mapped(folio)); - return swap_writeout(folio, &wbc); + return swap_writeout(folio, plug); } if (!info->swapped) list_del_init(&info->swaplist); diff --git a/mm/swap.h b/mm/swap.h index 045415e2eb4f..e87a0f19a0ee 100644 --- a/mm/swap.h +++ b/mm/swap.h @@ -3,6 +3,8 @@ #define _MM_SWAP_H struct mempolicy; +struct swap_iocb; + extern int page_cluster; #ifdef CONFIG_SWAP @@ -20,7 +22,7 @@ static inline void swap_read_unplug(struct swap_iocb *plug) __swap_read_unplug(plug); } void swap_write_unplug(struct swap_iocb *sio); -int swap_writeout(struct folio *folio, struct writeback_control *wbc); +int swap_writeout(struct folio *folio, struct swap_iocb **swap_plug); void __swap_writepage(struct folio *folio, struct swap_iocb **swap_plug); /* linux/mm/swap_state.c */ @@ -141,7 +143,8 @@ static inline struct folio *swapin_readahead(swp_entry_t swp, gfp_t gfp_mask, return NULL; } -static inline int swap_writeout(struct folio *f, struct writeback_control *wbc) +static inline int swap_writeout(struct folio *folio, + struct swap_iocb **swap_plug) { return 0; } diff --git a/mm/vmscan.c b/mm/vmscan.c index d56a4e8a1ed9..ae16e57bf28e 100644 --- a/mm/vmscan.c +++ b/mm/vmscan.c @@ -655,14 +655,6 @@ typedef enum { static pageout_t writeout(struct folio *folio, struct address_space *mapping, struct swap_iocb **plug, struct list_head *folio_list) { - struct writeback_control wbc = { - .sync_mode = WB_SYNC_NONE, - .nr_to_write = SWAP_CLUSTER_MAX, - .range_start = 0, - .range_end = LLONG_MAX, - .for_reclaim = 1, - .swap_plug = plug, - }; int res; folio_set_reclaim(folio); @@ -675,7 +667,7 @@ static pageout_t writeout(struct folio *folio, struct address_space *mapping, if (shmem_mapping(mapping)) res = shmem_writeout(folio, plug, folio_list); else - res = swap_writeout(folio, &wbc); + res = swap_writeout(folio, plug); if (res < 0) handle_write_error(mapping, folio, res); -- 2.47.2