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 B1BB1C3ABD8 for ; Wed, 14 May 2025 20:19:42 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 05A8A6B00B8; Wed, 14 May 2025 16:19:42 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 008696B00B9; Wed, 14 May 2025 16:19:41 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id DEBF36B00BA; Wed, 14 May 2025 16:19:41 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id BD8286B00B8 for ; Wed, 14 May 2025 16:19:41 -0400 (EDT) Received: from smtpin18.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id C1F6316058F for ; Wed, 14 May 2025 20:19:41 +0000 (UTC) X-FDA: 83442628962.18.6143E98 Received: from mail-pj1-f47.google.com (mail-pj1-f47.google.com [209.85.216.47]) by imf01.hostedemail.com (Postfix) with ESMTP id D581B40005 for ; Wed, 14 May 2025 20:19:39 +0000 (UTC) Authentication-Results: imf01.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=Ov+faKk4; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf01.hostedemail.com: domain of ryncsn@gmail.com designates 209.85.216.47 as permitted sender) smtp.mailfrom=ryncsn@gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1747253979; a=rsa-sha256; cv=none; b=vfUHnxDY4hXXTJgBkYHq5i37/ty+hOrhs+pc4d0+vPYuLifEyy2Rv6Rfxp9qjqHugftW1U j+6mGk3eNdnlxyr5U+of3YuH5ZBQj2PJz/g0/Mh5AIBSp6rUjpvcRofRukaJg1eYZV64bU f/JDIqhRV9XdOIE8B5BwiIni/o1pMj8= ARC-Authentication-Results: i=1; imf01.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=Ov+faKk4; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf01.hostedemail.com: domain of ryncsn@gmail.com designates 209.85.216.47 as permitted sender) smtp.mailfrom=ryncsn@gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1747253979; h=from:from:sender:reply-to: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=m/tKAWQg/dKBRoqSNJTqNYIKEPlXdDROP0NJrD1IvN8=; b=4FWy7MKbzj8X+K7hp/43LSUmigoAQZ8QAnwkG3NmoDs5xTFFY60JRi3HSfrUghtqpZ1n75 HQb9wmXYd3o8eA09Xlq7tiHCPfXAanxjm4C0+2gvv83dxLOPWM9Go0HIIWADtqMfGC745W N/cQH6wGT7sbWKO/ABlpZrp/9i5nKhg= Received: by mail-pj1-f47.google.com with SMTP id 98e67ed59e1d1-30c1c4a8224so249809a91.0 for ; Wed, 14 May 2025 13:19:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1747253978; x=1747858778; darn=kvack.org; h=content-transfer-encoding:mime-version:reply-to:references :in-reply-to:message-id:date:subject:cc:to:from:from:to:cc:subject :date:message-id:reply-to; bh=m/tKAWQg/dKBRoqSNJTqNYIKEPlXdDROP0NJrD1IvN8=; b=Ov+faKk4H1N3o1AGq5eDZ+BEEPlC1mUw0IBjs/HcnwH178rs1cQJYu3RHmfMQwgUVd aC96Xi+aN/eotxD8OZ+vQVsIf3skXhv5dJ+JkNT9uoGn80/uxFdOrRBvuBkKiKqU6HdQ keZ1dOVyPgQTsOUNVG5nVj1Vopf7Wn+6GmjFTvQ34FtgiBgXxhBqpU0Ny1lxzctD5n4t eFfYMtTa5IQn5sc2avSgoPCLDmkdMFjdH8pZ//ib5p7agQhMYMyh26tvShFlaMv/UAy3 TRfr1YTjAtW797ivjGWYy3DoVP/pd5WcpcueHUqDmAk8B7ptpQC1azQV/2kWnBNir81G qI+A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1747253978; x=1747858778; h=content-transfer-encoding:mime-version:reply-to:references :in-reply-to:message-id:date:subject:cc:to:from:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=m/tKAWQg/dKBRoqSNJTqNYIKEPlXdDROP0NJrD1IvN8=; b=jwwX0xPFXCSr9S+ZywNUS+RdJNFX0XK4WOjpj7s8d3chMnrahu4nlVvntv1s0bZ9yP GqnER65VoQkyGIgnFbeVMfjL15tQAmA4cCS8M3+hdg7FqMEOg0Byx3Kz5W2MxA+8povr 6xOwn0lIxcd8DGdqFAACvyzpOng30co8w47ldzS1dFkHX2ZIz5IJBKK8ieuWBDUIsMbd kI11Jf3XpKQ7A1y30N+unhRfgGcy47eIOCTIXaz2wDtTomMTmVZ4UYV1WTucD5uIsEyK MZMUCNJyf5aU8W3oBIbKKFpkTqDb9RyHIsimzp+5QGLiGnncXbjOMU1Xo8/+Q2XgxtFW vUFA== X-Gm-Message-State: AOJu0YxfkbUBRrirEsaown/QITmPlUYi8ClEtoSZUPIbkzm1DgHrg35x pOb6oCnxrAi/5TmskB3BJNrdYScGjBeBVwl1O5E7oln9hCGRFCrYlMqpDru4eHQ= X-Gm-Gg: ASbGncv5vxqss9wKwSuasXMmOThK8M97/RBsXTlf/atkqipyvMXE+ikKD0PJfFK54tT 2EEaUB1zFfA4QeQXZdiYMVA3ow2n5yxNAoVwgYTQszuiXP1rqyu+4iYlz9EftDiLFfegI5sK6AF pyHJVfvnu6ZvvBa0FMfs4hOnptZ4ApA2WKUpU5skaFZOTpsuvCOGCESWkK4q9o8X7y38EoA4rk8 4a+8kVOyYIYXm6CHFgyGth7/hg5pHBcqzakPK3JQT2rVZjYA9K1GYWDL/7Sfkg/JV/QT/N8s3kl 0SYx/oMacQNEwF7rNrQVNzVJdTjahuCHv3s8zzncHKdRWgBiEOK6H8Xq3qv7lawLK6XluZcphTW Z7PivKvA= X-Google-Smtp-Source: AGHT+IG5lNgQcqNb+IiMkrtSM4av6IuLMumXdGBLwYB3DyizguwyfvVk3iJ+oU+OFH2+AD7NZkOOwQ== X-Received: by 2002:a17:90b:2742:b0:301:98fc:9b2f with SMTP id 98e67ed59e1d1-30e2e583da8mr6754772a91.1.1747253978100; Wed, 14 May 2025 13:19:38 -0700 (PDT) Received: from KASONG-MC4.tencent.com ([101.32.222.185]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-30e33401934sm2003692a91.9.2025.05.14.13.19.33 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Wed, 14 May 2025 13:19:37 -0700 (PDT) From: Kairui Song To: linux-mm@kvack.org Cc: Andrew Morton , Matthew Wilcox , Hugh Dickins , Chris Li , David Hildenbrand , Yosry Ahmed , "Huang, Ying" , Nhat Pham , Johannes Weiner , Baolin Wang , Baoquan He , Barry Song , Kalesh Singh , Kemeng Shi , Tim Chen , Ryan Roberts , linux-kernel@vger.kernel.org, Kairui Song Subject: [PATCH 23/28] mm, swap: remove no longer needed _swap_info_get Date: Thu, 15 May 2025 04:17:23 +0800 Message-ID: <20250514201729.48420-24-ryncsn@gmail.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250514201729.48420-1-ryncsn@gmail.com> References: <20250514201729.48420-1-ryncsn@gmail.com> Reply-To: Kairui Song MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Stat-Signature: mc58uk9rgg9ssixsk7azx6h5xocy19bn X-Rspam-User: X-Rspamd-Queue-Id: D581B40005 X-Rspamd-Server: rspam06 X-HE-Tag: 1747253979-642664 X-HE-Meta: U2FsdGVkX19X2I+JBmNnqe+vy5oJAND8KDuo6MitZ9NoqK0J8u52xsYCrhcE+RJa4euXoQ6hCG0r2ZymQ6JR/r42QvRn4RbLzcv3L9iUgodZGwrW2evyhFjQndFUHYIA7PhQJW1AxX1RtkXzTjvvUFP0AmWFHJrI+F/ZVxXKDx/h1simn0XoURDEQHCzmOahsvFNRIe0/1B35z/SkXvh5xXsCjMk02vQAZtWXEhrXMDu9Y09Fu/QdfaA6wc3pEaAHtkk3PJh3dZSYHnki9xv+6x1LqWCIpFu0ddj8wQA3uT2G/6M6964LA9wq4XXIOMP9X59MJwB+EpLGQfEk+sU/0IYfAJpZmoxaYHEVPEH32QEaDN65cX7+GzKZSk4XG2/N0HE6AYoVj0GUZJTBQ+ZazXePFoKzYrjLHhwFag+mXKjovsO7o8DzXog4lGsPSOn/SrH2Ah27MiOO8vB8UXOhQooW7npD1i7jD1l83RmLhOz0xQvbrJ4/EUa2aHhcdkfKDI0/+dvAyt/OcaC3fmKOSATrxsPpRLQlzkkJura2Dsh3obScTFS2Z8rOOTSLYrJgr5RdAi9PzVPlV7f9WM0r3XLPAqQtQEDZ1YbHr8grtjXj8HV/G9IHBJ5yOOuGV+3LwiWd/ZsqSUwAgbmhjJNjTP+u+2421vU1Qy7u6DTBWDsqjcHBY+o7kai2w8MwnUXUODv5+TZZznq+jzcjYUgOx8WHbFaGjlPEQVMRUhNad46xwsKNLRpQNFavVyunlR4ctwXWTh5XGK97IqX7SqxMG6Ykkf/pnmmA47yPE7XNLWKVV8ihsDRxTrKs8JO6RzCLW16DdOGRlXU90EsgQtjmRrtTTdart0Dkk5C1oHyb33VvT0uzVpPZpSdxFKeHbgZ0SFCHiMu+3LQyyyftAcvx0Hhpa7Lq7nWBe9ba+o3VRAgA8kSqNK6qtu0oSDB0Daeqy9yFHESnJfvbAR9cPa t4Xsxc/c EvCSYSpm0zfaT+cbX3lOJMj+i2/tlCffDeQGaAnlBPzSizPE30CJMDI8rMByOX57A4sKTDgnwya9TiGDg3gfmFe0kHH3ifyysfAJXxDaabM7olGdIh5Bpjqwc3puTvvXew8MjyAvHJvOLD3LKjorKxs1+Z8uzE+znOklMi/3pJLO5gjJNyQuMxBkn9HirOkJrGCr5S9gJpc6OpYwJxKezOopN9ccM3PEv9uKlJ8/DSeB7/5QUIkTmybKDNLJMf0dRWZWbKfuIs30pT7p3Af+u1VmUzJdKUcNUDc+JmAhvUyp1CzWF5k+s0DnXwU1t5OA6Up/Q7oXc60C3yEbOwnNUdMigffbcacHctQ6HEopBtVtZI+fEenP7wB25ZXA0jWePsDPGYOXLhqJaiPOXJlLXU+sWmvQ5SVT3KYRuKf+/NPAUwcL20qAIGV+iRUkDU9oYdZjkPWbC0XgyivaEFkhOCF9RnARWaBLJIoquAZP1DNHI+REfAPBlbgYjN93Uk8+wsNLfDgn3OYA2kY0U1oELih+Ulux3aKByvU7n9ZHH+thC3sRBzx2hStb2I+QH0SNCaQFz9enj220lJQD5ek6lFFCxI+uepkjRjX17FeJjQuangfs= 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: From: Kairui Song There is now only two users of _swap_info_get after consolidating these callers, folio_try_reclaim_swap and swp_swapcount. folio_try_reclaim_swap holds the folio lock and the folio is in swap cache, _swap_info_get is redundant. For swp_swapcount, _swap_info_get is insufficient as the swap entry is no pinned so the device could be swapped off anytime, it should use get_swap_device instead. And after these change, _swap_info_get is no longer used, we can safely remove it. Signed-off-by: Kairui Song --- mm/swapfile.c | 63 +++++++++++++-------------------------------------- 1 file changed, 16 insertions(+), 47 deletions(-) diff --git a/mm/swapfile.c b/mm/swapfile.c index c2154f19c21b..28bb0a74e4a6 100644 --- a/mm/swapfile.c +++ b/mm/swapfile.c @@ -1364,35 +1364,6 @@ void folio_free_swap_cache(struct folio *folio) folio_ref_sub(folio, folio_nr_pages(folio)); } -static struct swap_info_struct *_swap_info_get(swp_entry_t entry) -{ - struct swap_info_struct *si; - unsigned long offset; - - if (!entry.val) - goto out; - si = swp_get_info(entry); - if (!si) - goto bad_nofile; - if (data_race(!(si->flags & SWP_USED))) - goto bad_device; - offset = swp_offset(entry); - if (offset >= si->max) - goto bad_offset; - return si; - -bad_offset: - pr_err("%s: %s%08lx\n", __func__, Bad_offset, entry.val); - goto out; -bad_device: - pr_err("%s: %s%08lx\n", __func__, Unused_file, entry.val); - goto out; -bad_nofile: - pr_err("%s: %s%08lx\n", __func__, Bad_file, entry.val); -out: - return NULL; -} - static unsigned char swap_put_entry_locked(struct swap_info_struct *si, struct swap_cluster_info *ci, swp_entry_t entry) @@ -1549,7 +1520,7 @@ int swp_swapcount(swp_entry_t entry) pgoff_t offset; unsigned char *map; - si = _swap_info_get(entry); + si = get_swap_device(entry); if (!si) return 0; @@ -1579,6 +1550,7 @@ int swp_swapcount(swp_entry_t entry) } while (tmp_count & COUNT_CONTINUED); out: swap_unlock_cluster(ci); + put_swap_device(si); return count; } @@ -1610,26 +1582,10 @@ static bool swap_page_trans_huge_swapped(struct swap_info_struct *si, return ret; } -static bool folio_swapped(struct folio *folio) -{ - swp_entry_t entry = folio->swap; - struct swap_info_struct *si = _swap_info_get(entry); - - if (!si) - return false; - - if (!IS_ENABLED(CONFIG_THP_SWAP) || likely(!folio_test_large(folio))) - return swap_entry_swapped(si, entry); - - return swap_page_trans_huge_swapped(si, entry, folio_order(folio)); -} - static bool folio_swapcache_freeable(struct folio *folio) { VM_BUG_ON_FOLIO(!folio_test_locked(folio), folio); - if (!folio_test_swapcache(folio)) - return false; if (folio_test_writeback(folio)) return false; @@ -1665,9 +1621,22 @@ static bool folio_swapcache_freeable(struct folio *folio) */ bool folio_free_swap(struct folio *folio) { + bool swapped; + struct swap_info_struct *si; + swp_entry_t entry = folio->swap; + + if (!folio_test_swapcache(folio)) + return false; if (!folio_swapcache_freeable(folio)) return false; - if (folio_swapped(folio)) + + si = swp_info(entry); + if (!IS_ENABLED(CONFIG_THP_SWAP) || !folio_test_large(folio)) + swapped = swap_entry_swapped(si, entry); + else + swapped = swap_page_trans_huge_swapped(si, entry, + folio_order(folio)); + if (swapped) return false; folio_free_swap_cache(folio); -- 2.49.0