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 7DF3BC3ABC9 for ; Fri, 16 May 2025 07:42:06 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 4DF826B00DA; Fri, 16 May 2025 03:42:02 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 417286B00DB; Fri, 16 May 2025 03:42:02 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 21F6F6B00DC; Fri, 16 May 2025 03:42:02 -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 F0BB76B00DA for ; Fri, 16 May 2025 03:42:01 -0400 (EDT) Received: from smtpin12.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id 438811617FD for ; Fri, 16 May 2025 07:42:03 +0000 (UTC) X-FDA: 83447977326.12.85EB19E Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) by imf02.hostedemail.com (Postfix) with ESMTP id 9E5828000B for ; Fri, 16 May 2025 07:42:01 +0000 (UTC) Authentication-Results: imf02.hostedemail.com; dkim=pass header.d=infradead.org header.s=bombadil.20210309 header.b="Rq32/Nlf"; spf=none (imf02.hostedemail.com: domain of BATV+a1816c9c51017899399b+7936+infradead.org+hch@bombadil.srs.infradead.org has no SPF policy when checking 198.137.202.133) smtp.mailfrom=BATV+a1816c9c51017899399b+7936+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=1747381321; 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=oACtHf+RspVE0IrQitWPKgr6HdOW1fUNFbQL8nOWSdF2SvAxEVxDAiwGoRWNaq5SdtDXuc 8pierlCOH153B01v++9gy5zyiJ2jIXgWBoXGyyYibtK05vmwhCQaLi+nHV3j6b0Mdw6ruE f5F9B6SJVVqxe1V95Ya6Ry63hpM/m7o= ARC-Authentication-Results: i=1; imf02.hostedemail.com; dkim=pass header.d=infradead.org header.s=bombadil.20210309 header.b="Rq32/Nlf"; spf=none (imf02.hostedemail.com: domain of BATV+a1816c9c51017899399b+7936+infradead.org+hch@bombadil.srs.infradead.org has no SPF policy when checking 198.137.202.133) smtp.mailfrom=BATV+a1816c9c51017899399b+7936+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=1747381321; a=rsa-sha256; cv=none; b=ea77JlBco3QequS6AP99rRRH7/C6mXYGaA3zCBgkL7Flt9httscK4PK8KjiUqX7QCgVmTZ JHubmyTyEGrvbnJgZhNs0+3fRHWwRTob1cjWdIwQ1EUWg5V5dPK+MpPyeQaiIWpaCEahpL ne8OWYcGapTrM5a3LIiGHt8ZRT8YuGQ= 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=Rq32/NlfWnCQWKW2Bbnk0QYYWA v9fIlWq+J6c7K689CzGoIK/m0iatMLx2cQPn8ZcCtw21IcbjaSahJNak/mR6WIGZCnbL/SAq2FDKA RzaVNHDpxlK2R5iSu+zUpW5Xd7Z7x6PWkQfJYpoqdsU8my9UsN1MCMeaODkrOgCdkKqOJJMvX1sCP 9gFOVVu7eNFXZSPjWxfaZxNXOyAiI4iBqrkOJT08xjF+GolDkJOWaxP5Wmt22mGc8DUY0fo9DfiGQ 7AzqS//EfUcjzjhtKEfs5oCrkKlowhP+irxt1ZH6hrsNdPNhPhOcgm4QbbFtd1fONfTaxAOfL6vpm /K+r0hEQ==; Received: from 2a02-8389-2341-5b80-8ad1-b0a3-ff78-473d.cable.dynamic.v6.surfer.at ([2a02:8389:2341:5b80:8ad1:b0a3:ff78:473d] helo=localhost) by bombadil.infradead.org with esmtpsa (Exim 4.98.2 #2 (Red Hat Linux)) id 1uFphf-00000002gjy-10w3; Fri, 16 May 2025 07:41:59 +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/5] mm: stop passing a writeback_control structure to __swap_writepage Date: Fri, 16 May 2025 09:40:38 +0200 Message-ID: <20250516074146.178314-5-hch@lst.de> X-Mailer: git-send-email 2.47.2 In-Reply-To: <20250516074146.178314-1-hch@lst.de> References: <20250516074146.178314-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-Stat-Signature: o7ex3oa7h37ct4wj5qdss7am9t7df9hf X-Rspam-User: X-Rspamd-Server: rspam03 X-Rspamd-Queue-Id: 9E5828000B X-HE-Tag: 1747381321-401074 X-HE-Meta: U2FsdGVkX19D3DAOrFerhsjz98YkG/rCc68K27FZu5A5b7fhRss2iir4Qax7Mt5u2K0ghYf+xcGDtj6VKV5MnxzmDVCDjX+lEsxD+tMt8+RzSiEbxctx0kB0GEdQI5MCwZp/O4feHsl9ybO01v/fQfLknVrFLh0AIhPESVqsghdTH56o5pTRG0QUmqHBjwpmXUDtXPGii0M1McaWloDhlPraH0zk+w/qtYZe305P35rv4FOgNdnKwOr+9T45l1C8KiJNNK0BwWV6y3u6Hu1a7wTK7Zw3YkiehcM9Hh+l23YykmBbvFSVdRcBlmiLxxyDZQHmYozZbF8htXP/mhP98iCrwO6FHDQsWy+IBBQ5Q4kC7+pcaf290CBn/9Zxtc+gg9OavpgT5tVEda45wKWFNZbdktsyaOX8usMVnj02DV/wgJ01ajDO8z+a9PV4xVOCZqiD7T6ojwQ1J4bM81Bpmzz0gKLf/79idl5PHAUcCp8qSDVGlz9WDzHB0S/jwgDjnUZq6JCtue7m6QdTY7nqS8AWTTdPkdfE0QuLIkdK5E5hbbP91Ie7Y1I/pDFLhuZgnG/V2b3u3khInIhqJG07QRZgESHwSQVxiMkYSe8VQN1JKNkAZ/q7HJHkZ7P/1y582KcwmW51hu6DrB5M/QuI9y8iQ8gWQeNUzJhdKG1hkVj4/lNtAOdfldoVUq5GoWMsrp/11P15d27ZTi3stbbv9jJrfZbTpszZn0s7zSHH7l50fBUhye1n8XqdYPk4jeUXg/tueXhRiXGbgvlTxLSsWRELwXFOnywTXTiI73LdxoqFlwY/cwFLu9wJgiIauoU4CsB9N8AmS7O1JXG7z52FcufsA7bwCiq/EPPdYu2+LNvSDsEo5l0w4iRt11KqzuBbAfUBwNedwwYk/9H5ux1Wqk+yU2EX/xR5mLdWQ6AL0VpgHLECA7ujCPDC0LB02WZxQ4OWlbgbfwrHVGOQWu3 O27AIfYl BYrNBbl6SQsXQ6QZkc8NRt8Oj1gkQNi8mH5KHzv0zj6zdfh4PluzWeDSlv+H79S6CVNNd5jmF12T8Xv/dd2LApAGom23Nf3sMdg2yjuRN74rMmNAMAC/f+b+bbEB2g3BK8ZZVkSecs68xhnYMMr9xBA6oXjWYMJic6Yj9GJVCkadARK0bFiXSRQt2MMl2dS1ChaUv00i2zilDqpUMey43wHnVmNSvNseCX26ajEeHTkCsiglOBYQk5CV6UE9JkBQs0YRL/qKAyCdYpXmngUKBGPMvKh2Uaf6wE89dFyeJQnESbYjEE5C3EaUeTK1XfbgCBY1NKq9BtIKXnLUV/kadVCoRU7CIY7YyKT/XG1qHOk5r8JMJTy2VZWy2WdFXLgRs/ROuLwJKlMBA+PXnrXcY+Tfu658afH9ogCHzBLbSymhKhJizfluw0A9rSEnYPnrWStlXmMcyf0rjpHbD8R0ZdRSYv1vDEFP4rfDF03gPLbM5uI/6z851BNBCnOJLikPBaWS0Gh2PxgZVJ6W8PZq4FlmOoelxy4Nab0MUL+RtctBj3B6eEGvQ4NIX9geynYouQn6GBADA0mV/A6/clFtBJ3idffr+nECwart8 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