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 D6EBBC5B552 for ; Tue, 10 Jun 2025 06:45:47 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 6FDA66B008C; Tue, 10 Jun 2025 02:45:47 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 6D5B46B0092; Tue, 10 Jun 2025 02:45:47 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 612B56B0093; Tue, 10 Jun 2025 02:45:47 -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 492CE6B008C for ; Tue, 10 Jun 2025 02:45:47 -0400 (EDT) Received: from smtpin26.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id BE61B1D7AAB for ; Tue, 10 Jun 2025 06:45:46 +0000 (UTC) X-FDA: 83538555492.26.5C497FF Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) by imf03.hostedemail.com (Postfix) with ESMTP id 23BEB20003 for ; Tue, 10 Jun 2025 06:45:44 +0000 (UTC) Authentication-Results: imf03.hostedemail.com; dkim=pass header.d=infradead.org header.s=bombadil.20210309 header.b=WF3BOT25; spf=none (imf03.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=1749537945; 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=WPDi0Jq1CDM/vOc3y1TRtMNvoZyt3uxqRKnRpljvVCM=; b=raoq2lOxC97EpovNLuTHF/R+EAPPIecxzOfVVkEDLOEZhTlHdC0CHPuo6r7us/vEwRmz/B IGwdOFgV52RjBejZQDN/veOG53HM3MEwHQIMvKYYSvwRnfUOL1ZPG03qojYTUDpXdT04mS lFdBAi+sOkrjK1w4Ei8JromPx6f4+Qw= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1749537945; a=rsa-sha256; cv=none; b=4jfUTH8rHUNdF8n7hPxdvyNXdzvxJAP8ak9n5vHqPr1O5JXTfYiFQBpUOA+HJwsVdpCElC ptfgXT08Z2xNS8aVf2tOd/ta7BLUZYockmwQjw99+jITMaZXgaIP51lSxFg04code0OmsY FO4Lkw9K05EYRZlPCWEwX2fihpLy1eE= ARC-Authentication-Results: i=1; imf03.hostedemail.com; dkim=pass header.d=infradead.org header.s=bombadil.20210309 header.b=WF3BOT25; spf=none (imf03.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) 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=WPDi0Jq1CDM/vOc3y1TRtMNvoZyt3uxqRKnRpljvVCM=; b=WF3BOT25OTka68oaYIfPpdFY8r wygiWpzCCdHGcch82OtXapopvN7sd3zdkunL/aGVuwHhOSHCa+Cw3Tr8P2QOUpaAn/LU5DnA5pKCk odLb0vT9pgFeG+F7nH4QMU71qs3ZzdVWz85HBb/P8sabDHGzlIWiDzNLgxk2hBQkstUVxouk0KZmu VURz//5ieipUE1Kmc1sXNH8QlkqMsVg57yA+vRTUHEHNWjefSRV7Na0do5X3Fp+ZZeDCdiqyCU1Sm HhkIgOK4UDtjSSxmTHfHxuB20sIC9XhEqXQ6R2p7aFwcbZmcAhkIqQmSlQmj2ck+cFHfzh0Qxu5P1 d785Ay2A==; 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 1uOrsB-00000005s1C-33sP; Tue, 10 Jun 2025 05:50:12 +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 4/6] mm: stop passing a writeback_control structure to __swap_writepage Date: Tue, 10 Jun 2025 07:49:40 +0200 Message-ID: <20250610054959.2057526-5-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-Server: rspam06 X-Rspamd-Queue-Id: 23BEB20003 X-Stat-Signature: zjhixii8twqxgk9zhfdeaan9hm81xqrj X-Rspam-User: X-HE-Tag: 1749537944-92778 X-HE-Meta: U2FsdGVkX18oSmgnFWC0ApmeJXcrJjTdGE/COpjMtjLAyM3JUYSWm8NTkCjI/brsLzWLchbIpL21aCbTOj/Mb7ZibhQ2eNSYgz1HKCjF+E/NNeDdg0I9WNRlgIfRk71mdtHN1lsook15RM92KptDR0A30XIonITHuqB7sU3AfJdn0FhUaQktaiRlQgXN73Gg/s2qxG1tPxtvgsJ9wc37y5N3UwqnKY+qlQUIYorQ1+fGutPW9Z+YW2f9eU+G8IB3195U5msq8Llw7aPK3gyyHevXitw9nipY9rnFjM3XCh6zDAacrkaNPTArSOQUZl0G/G8KSs+Q3yJMbyw1j39DEvHch1XHvbv+eVTJlngxHoF/Ouy8kUT5fzCCDqtJZ0wrc0UUie24o95mvFJBlpeES2SMGlb0RvpmWsEF3sIUe7/ExkU66YPNNH6jWrEH8+576KRxORPVreIk1AfBT1pHsyy+4rVs+hKBf+VVBVOsL9wDp4G+sHjzWsZTbH1KZ8a/QbFYpA28915F4aD4QcCFp9ItUjUFz/ZIpvm//m2kWgtj55h8C5r23Cvqo+SSAMFscZgllbNrS9W+PJ8i+8UH2yTaDLZAratgN2p8fom203MpIxxqT8vDl+Ig7a0y1en0xSonRLf5D4QL3xpjp9gMGPzn4CdShDALGjpx0aTv9Y/1s9njK7y2Z7b/+YL64o09GZWxGbbvLL2oXwf3GbIb1nWwYHPTeXir9PAivc4frh7KJhGlWGcMbvTPBsb+M4hrxqTyyL6LsVzLR4uaqy/xafqdISkQ9CaRObyrfHTNo3v7eez9z+UFt6rfj3N0jdgnsuC2jqQHTNs2vs4pAfypd60sOdpzTzck+TwY/E5z2tbeI8s1mQG6ZiMMQpBEhjMRBNryaUjoZsdtrbHhIi8UOYHYGQWoeAVwxPJ16xZ55ASI7Rtof1rX91Wh1ddMeAQDlGc1PX+O3yPP7gz58Rs xrc/NzUr m4EF7i6H9EvIkxuHRd9JzliMN5Runm+zi6IEpb8CxXEe2stUSpjna0urhfGwb6en+C+tNHNYXDteLEUImoA0kVasNYtry2EnHsrbrGmF7ee8DvXBxuAherCamAuD8MRXTt9VioYRdD3DrFBlWA5wlmKZKtA3J8YcGEeR2opj3fLXQEFvotwZaK6mL9F1NDfWNoEV+JXiULAVi6ceKxfPW52+XCxCjHAzWNG9tduwhW4bqUhvGJQlqFoTXrMxDnH7Ie+UCl+FXbvbB8lX7LZo47UXXMO4DUaapZ9SvKWp19iUOJsEGKAZcmUCty88LvbTSh5HUWUKeG1Sv61y1YnEuL2ykV4izqH9R27+T57vUEZ1RMK+Rq/+fAkmtDjKGE0vCBRxJvIFdhHvUfcGcmZHpu+eC3VPqiWwi4e2Oosv3606VfwEimZNfwVWos2t5BFvVhkWZRJWZCWOniEerKzaom3i6Gg3TiCjvZFQsNb90E75TSh/w4gQXi7gPB5wGC7SKSsCkrGX7lGLd/yadxK/jLQ2Qdx1y/AFMj620zyGCOOndTEjIe+WHAHns5eQextQ9PbELnYU0iA7b6o/1zyHTJ3JO4m2UZFhfmUDV 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_writepage only needs the swap_iocb cookie from the writeback_control structure, so pass it explicitly and remove the now unused swap_iocb member from struct writeback_control. Signed-off-by: Christoph Hellwig --- mm/page_io.c | 33 ++++++++++++++------------------- mm/swap.h | 2 +- mm/zswap.c | 5 +---- 3 files changed, 16 insertions(+), 24 deletions(-) diff --git a/mm/page_io.c b/mm/page_io.c index c420b0aa0f22..fb52bedcc966 100644 --- a/mm/page_io.c +++ b/mm/page_io.c @@ -281,7 +281,7 @@ int swap_writeout(struct folio *folio, struct writeback_control *wbc) return AOP_WRITEPAGE_ACTIVATE; } - __swap_writepage(folio, wbc); + __swap_writepage(folio, wbc->swap_plug); return 0; out_unlock: folio_unlock(folio); @@ -371,9 +371,9 @@ static void sio_write_complete(struct kiocb *iocb, long ret) mempool_free(sio, sio_pool); } -static void swap_writepage_fs(struct folio *folio, struct writeback_control *wbc) +static void swap_writepage_fs(struct folio *folio, struct swap_iocb **swap_plug) { - struct swap_iocb *sio = NULL; + struct swap_iocb *sio = swap_plug ? *swap_plug : NULL; struct swap_info_struct *sis = swp_swap_info(folio->swap); struct file *swap_file = sis->swap_file; loff_t pos = swap_dev_pos(folio->swap); @@ -381,8 +381,6 @@ static void swap_writepage_fs(struct folio *folio, struct writeback_control *wbc count_swpout_vm_event(folio); folio_start_writeback(folio); folio_unlock(folio); - if (wbc->swap_plug) - sio = *wbc->swap_plug; if (sio) { if (sio->iocb.ki_filp != swap_file || sio->iocb.ki_pos + sio->len != pos) { @@ -401,22 +399,21 @@ static void swap_writepage_fs(struct folio *folio, struct writeback_control *wbc bvec_set_folio(&sio->bvec[sio->pages], folio, folio_size(folio), 0); sio->len += folio_size(folio); sio->pages += 1; - if (sio->pages == ARRAY_SIZE(sio->bvec) || !wbc->swap_plug) { + if (sio->pages == ARRAY_SIZE(sio->bvec) || !swap_plug) { swap_write_unplug(sio); sio = NULL; } - if (wbc->swap_plug) - *wbc->swap_plug = sio; + if (swap_plug) + *swap_plug = sio; } static void swap_writepage_bdev_sync(struct folio *folio, - struct writeback_control *wbc, struct swap_info_struct *sis) + struct swap_info_struct *sis) { struct bio_vec bv; struct bio bio; - bio_init(&bio, sis->bdev, &bv, 1, - REQ_OP_WRITE | REQ_SWAP | wbc_to_write_flags(wbc)); + bio_init(&bio, sis->bdev, &bv, 1, REQ_OP_WRITE | REQ_SWAP); bio.bi_iter.bi_sector = swap_folio_sector(folio); bio_add_folio_nofail(&bio, folio, folio_size(folio), 0); @@ -431,13 +428,11 @@ static void swap_writepage_bdev_sync(struct folio *folio, } static void swap_writepage_bdev_async(struct folio *folio, - struct writeback_control *wbc, struct swap_info_struct *sis) + struct swap_info_struct *sis) { struct bio *bio; - bio = bio_alloc(sis->bdev, 1, - REQ_OP_WRITE | REQ_SWAP | wbc_to_write_flags(wbc), - GFP_NOIO); + bio = bio_alloc(sis->bdev, 1, REQ_OP_WRITE | REQ_SWAP, GFP_NOIO); bio->bi_iter.bi_sector = swap_folio_sector(folio); bio->bi_end_io = end_swap_bio_write; bio_add_folio_nofail(bio, folio, folio_size(folio), 0); @@ -449,7 +444,7 @@ static void swap_writepage_bdev_async(struct folio *folio, submit_bio(bio); } -void __swap_writepage(struct folio *folio, struct writeback_control *wbc) +void __swap_writepage(struct folio *folio, struct swap_iocb **swap_plug) { struct swap_info_struct *sis = swp_swap_info(folio->swap); @@ -460,16 +455,16 @@ void __swap_writepage(struct folio *folio, struct writeback_control *wbc) * is safe. */ if (data_race(sis->flags & SWP_FS_OPS)) - swap_writepage_fs(folio, wbc); + swap_writepage_fs(folio, swap_plug); /* * ->flags can be updated non-atomicially (scan_swap_map_slots), * but that will never affect SWP_SYNCHRONOUS_IO, so the data_race * is safe. */ else if (data_race(sis->flags & SWP_SYNCHRONOUS_IO)) - swap_writepage_bdev_sync(folio, wbc, sis); + swap_writepage_bdev_sync(folio, sis); else - swap_writepage_bdev_async(folio, wbc, sis); + swap_writepage_bdev_async(folio, sis); } void swap_write_unplug(struct swap_iocb *sio) diff --git a/mm/swap.h b/mm/swap.h index 2269eb9df0af..045415e2eb4f 100644 --- a/mm/swap.h +++ b/mm/swap.h @@ -21,7 +21,7 @@ static inline void swap_read_unplug(struct swap_iocb *plug) } void swap_write_unplug(struct swap_iocb *sio); int swap_writeout(struct folio *folio, struct writeback_control *wbc); -void __swap_writepage(struct folio *folio, struct writeback_control *wbc); +void __swap_writepage(struct folio *folio, struct swap_iocb **swap_plug); /* linux/mm/swap_state.c */ /* One swap address space for each 64M swap space */ diff --git a/mm/zswap.c b/mm/zswap.c index 455e9425c5f5..3c0fd8a13718 100644 --- a/mm/zswap.c +++ b/mm/zswap.c @@ -1070,9 +1070,6 @@ static int zswap_writeback_entry(struct zswap_entry *entry, struct mempolicy *mpol; bool folio_was_allocated; struct swap_info_struct *si; - struct writeback_control wbc = { - .sync_mode = WB_SYNC_NONE, - }; int ret = 0; /* try to allocate swap cache folio */ @@ -1134,7 +1131,7 @@ static int zswap_writeback_entry(struct zswap_entry *entry, folio_set_reclaim(folio); /* start writeback */ - __swap_writepage(folio, &wbc); + __swap_writepage(folio, NULL); out: if (ret && ret != -EEXIST) { -- 2.47.2