From patchwork Thu Mar 13 21:05:07 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kemeng Shi X-Patchwork-Id: 14014908 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 F384CC282DE for ; Thu, 13 Mar 2025 12:09:38 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id B66E9280008; Thu, 13 Mar 2025 08:09:34 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 98748280005; Thu, 13 Mar 2025 08:09:34 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 6A19A280005; Thu, 13 Mar 2025 08:09:34 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id 37AB6280004 for ; Thu, 13 Mar 2025 08:09:34 -0400 (EDT) Received: from smtpin30.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id 4B1ED1CD399 for ; Thu, 13 Mar 2025 12:09:34 +0000 (UTC) X-FDA: 83216408268.30.B13E2FC Received: from dggsgout11.his.huawei.com (dggsgout11.his.huawei.com [45.249.212.51]) by imf07.hostedemail.com (Postfix) with ESMTP id D52214000B for ; Thu, 13 Mar 2025 12:09:29 +0000 (UTC) Authentication-Results: imf07.hostedemail.com; dkim=none; dmarc=none; spf=pass (imf07.hostedemail.com: domain of shikemeng@huaweicloud.com designates 45.249.212.51 as permitted sender) smtp.mailfrom=shikemeng@huaweicloud.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1741867772; a=rsa-sha256; cv=none; b=T000o3GpUxLLxjnj5Lgd9vq7OALk3lR8csTipWuFTs2Pr77JtJ+hyRV73+JBMuAl/AcFvU lk94iOyMNRYgyLHmVWk9UyrOvIPVEcr5WlWWfKiLknkTKS06fBRjRptHu7gXPIfMg/8Hll GaxOX6AB5ZKhBoByhscWzhUqwg/llp8= ARC-Authentication-Results: i=1; imf07.hostedemail.com; dkim=none; dmarc=none; spf=pass (imf07.hostedemail.com: domain of shikemeng@huaweicloud.com designates 45.249.212.51 as permitted sender) smtp.mailfrom=shikemeng@huaweicloud.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1741867772; 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; bh=r9bg9qJUM/CqXCc4dcqIoUIlnLfgbqcRwLmq7+3vJP4=; b=jNgOQZ0KQprVYmEaaSnF+h4PuPbaWQ+ZXXcv7cJ6TC2ZjsHglT4GihCwa1lHWcvTuqz3bO KAr3biXWB3yz6DVzj4msX2dgPAwqpz9B8DGJm6KdwYxTpElP43vtYzJ5Cns0JckkCJQ7xk pp19ZoEapEQ3Po+QJAnDwaExDDoCg88= Received: from mail.maildlp.com (unknown [172.19.163.216]) by dggsgout11.his.huawei.com (SkyGuard) with ESMTP id 4ZD5rg2Zrrz4f3jLh for ; Thu, 13 Mar 2025 20:09:07 +0800 (CST) Received: from mail02.huawei.com (unknown [10.116.40.75]) by mail.maildlp.com (Postfix) with ESMTP id 6DFA01A0A22 for ; Thu, 13 Mar 2025 20:09:24 +0800 (CST) Received: from huaweicloud.com (unknown [10.175.101.6]) by APP2 (Coremail) with SMTP id Syh0CgCnsGPyytJnTaZeGQ--.9643S3; Thu, 13 Mar 2025 20:09:24 +0800 (CST) From: Kemeng Shi To: akpm@linux-foundation.org Cc: kasong@tencent.com, linux-mm@kvack.org, linux-kernel@vger.kernel.org Subject: [PATCH 1/9] mm: swap: rename __swap_[entry/entries]_free[_locked] to swap_[entry/entries]_put[_locked] Date: Fri, 14 Mar 2025 05:05:07 +0800 Message-Id: <20250313210515.9920-2-shikemeng@huaweicloud.com> X-Mailer: git-send-email 2.30.0 In-Reply-To: <20250313210515.9920-1-shikemeng@huaweicloud.com> References: <20250313210515.9920-1-shikemeng@huaweicloud.com> MIME-Version: 1.0 X-CM-TRANSID: Syh0CgCnsGPyytJnTaZeGQ--.9643S3 X-Coremail-Antispam: 1UD129KBjvJXoWxZrWUKFW5Zw1DuF4rGF47CFg_yoWrtFyxpF 9Igrn8KFs7Xr1fGw4xXw48ZrWFvw4xWw18tFy7Gw1avasxJryFqFyDC3y7KFyUCr95Cr90 ya1Utry7GF4jvF7anT9S1TB71UUUUU7qnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDU0xBIdaVrnRJUUUBjb4IE77IF4wAFF20E14v26r4j6ryUM7CY07I20VC2zVCF04k2 6cxKx2IYs7xG6rWj6s0DM7CIcVAFz4kK6r1j6r18M280x2IEY4vEnII2IxkI6r1a6r45M2 8IrcIa0xkI8VA2jI8067AKxVWUGwA2048vs2IY020Ec7CjxVAFwI0_Jrv_JF4l8cAvFVAK 0II2c7xJM28CjxkF64kEwVA0rcxSw2x7M28EF7xvwVC0I7IYx2IY67AKxVW7JVWDJwA2z4 x0Y4vE2Ix0cI8IcVCY1x0267AKxVW8Jr0_Cr1UM28EF7xvwVC2z280aVAFwI0_GcCE3s1l 84ACjcxK6I8E87Iv6xkF7I0E14v26rxl6s0DM2AIxVAIcxkEcVAq07x20xvEncxIr21l5I 8CrVACY4xI64kE6c02F40Ex7xfMcIj6xIIjxv20xvE14v26r1j6r18McIj6I8E87Iv67AK xVWUJVW8JwAm72CE4IkC6x0Yz7v_Jr0_Gr1lF7xvr2IYc2Ij64vIr41l42xK82IYc2Ij64 vIr41l4I8I3I0E4IkC6x0Yz7v_Jr0_Gr1lx2IqxVAqx4xG67AKxVWUJVWUGwC20s026x8G jcxK67AKxVWUGVWUWwC2zVAF1VAY17CE14v26r126r1DMIIYrxkI7VAKI48JMIIF0xvE2I x0cI8IcVAFwI0_Jr0_JF4lIxAIcVC0I7IYx2IY6xkF7I0E14v26r1j6r4UMIIF0xvE42xK 8VAvwI8IcIk0rVWUJVWUCwCI42IY6I8E87Iv67AKxVWUJVW8JwCI42IY6I8E87Iv6xkF7I 0E14v26r1j6r4UYxBIdaVFxhVjvjDU0xZFpf9x07js2-5UUUUU= X-CM-SenderInfo: 5vklyvpphqwq5kxd4v5lfo033gof0z/ X-Rspamd-Server: rspam07 X-Rspam-User: X-Stat-Signature: n7fuuionbo967hi67tydkday9oqttoeb X-Rspamd-Queue-Id: D52214000B X-HE-Tag: 1741867769-609 X-HE-Meta: U2FsdGVkX1+B/WKNpo2N/J1keuLZ0GvOUYZIpeidfHfapbS4sYY0fry+TwpKWV0+iHPZ8zZRtdzcF8Zqhy2g40UumMpXJcHyeKs1/iOF+vctBowEBcuJB0Gg94FGkHREdttGYXqm9DpZkk810Xn+Vsc8zAsdmztJ61n3h0um2koBPYgNCZabl6Z5nP3YW9+uH30hl4k4d7kgmxAyT0VDNYPzyzce8q+/EjMGHCFiLRxAfryAIXcbeuXJvTH6rpPYyVnLS7smHSQsLxzc2/3IO3p5hF2dsNFMh9D9SOuQFRUkNzuQMAV/abBH9GgYd45hSRk4xEBFNiqwG4HBUI42zUC9Nsi6cKc0NN61TAUW9RwCuBHC2nY9hM8NzwPMih/4zhAgb+juluMNFrf0M4rXY5paMe6Cy2az+t5uEPQz2PygvJVayNGhlleToiWu5qeh/G6+pEA4nBO6TuviisTwOn0ZriDbZ3C0ARHoUF/Ek86kXyUClkAvIH+Fyx5cr+wGi/fm96UeOQWmTFa2bRW/zLyfDVL0KjDB2izWd4NuQjV2WvD7ahPIfscYke3cgjIj2k1kMDoV0JSxDZbDOrWRAFNeEWU1lQkBVjv6qJEQAZSpsvGeppg23b8RUeQzaiweFcvhatdirmOh4uF/BN901uqxZF60WkJ46FnWi9SoT+p/9uPM+2AWNMJS89gSzWlROX6coDEv3eI80p61LDtzDe66lwIWVG/Mzz4bBaX29BNT+1QKQgt05wFNE3eCck57aY6TFcb1ZumA0wSpSwxjFgyBVlOxxMk8zGEzWTrPh7dYCsA/DrdB0b6Efwq7ahi78uWXHTh8YsN6ueJLMlkuFSSgWtV/dftRU5T8czyZCpXZTx8vCl1/y2Mg+whZWxXW2G26NE/8hylNEN4JE4hpvD6iq7+6TpeArsHxk/g8WbSjFXdGb61GcUhKZNPeFG30HyHaXRp0tTmN13ZHdp/ vYoG6Ndn XIdyQGQDHQYbeXvUVAkryM9nn9v6ByC8mLQSu3WdeGFcJBHpNow9ScCC4dMFt4uM+LvFTjLLGYtrdKyPddjCyaCmJeEzrXTTWO1J9NYbqv+sS+1eqb0YfB2tmlXWh87ML/cqRnPZkpu8nZmVXhvvUl8YhrtEfNKMMrD4XYKwsFrCNhddT1/bz20KAOIxOVsU5GeZpxXwIL47PVOLHAKseo8BPeQ== 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: In __swap_entry_free[_locked] and __swap_entries_free, we decrease count first and only free swap entry if count drops to zero. This behavior is more akin to a put() operation rather than a free() operation. Therefore, rename these functions with "put" instead of "free". Additionally, add "_nr" suffix to swap_entries_put to indicate the input range may span swap clusters. Signed-off-by: Kemeng Shi --- mm/swapfile.c | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/mm/swapfile.c b/mm/swapfile.c index 628f67974a7c..5a775456e26c 100644 --- a/mm/swapfile.c +++ b/mm/swapfile.c @@ -1347,9 +1347,9 @@ static struct swap_info_struct *_swap_info_get(swp_entry_t entry) return NULL; } -static unsigned char __swap_entry_free_locked(struct swap_info_struct *si, - unsigned long offset, - unsigned char usage) +static unsigned char swap_entry_put_locked(struct swap_info_struct *si, + unsigned long offset, + unsigned char usage) { unsigned char count; unsigned char has_cache; @@ -1453,15 +1453,15 @@ struct swap_info_struct *get_swap_device(swp_entry_t entry) return NULL; } -static unsigned char __swap_entry_free(struct swap_info_struct *si, - swp_entry_t entry) +static unsigned char swap_entry_put(struct swap_info_struct *si, + swp_entry_t entry) { struct swap_cluster_info *ci; unsigned long offset = swp_offset(entry); unsigned char usage; ci = lock_cluster(si, offset); - usage = __swap_entry_free_locked(si, offset, 1); + usage = swap_entry_put_locked(si, offset, 1); if (!usage) swap_entry_range_free(si, ci, swp_entry(si->type, offset), 1); unlock_cluster(ci); @@ -1469,8 +1469,8 @@ static unsigned char __swap_entry_free(struct swap_info_struct *si, return usage; } -static bool __swap_entries_free(struct swap_info_struct *si, - swp_entry_t entry, int nr) +static bool swap_entries_put_nr(struct swap_info_struct *si, + swp_entry_t entry, int nr) { unsigned long offset = swp_offset(entry); unsigned int type = swp_type(entry); @@ -1501,7 +1501,7 @@ static bool __swap_entries_free(struct swap_info_struct *si, fallback: for (i = 0; i < nr; i++) { if (data_race(si->swap_map[offset + i])) { - count = __swap_entry_free(si, swp_entry(type, offset + i)); + count = swap_entry_put(si, swp_entry(type, offset + i)); if (count == SWAP_HAS_CACHE) has_cache = true; } else { @@ -1552,7 +1552,7 @@ static void cluster_swap_free_nr(struct swap_info_struct *si, ci = lock_cluster(si, offset); do { - if (!__swap_entry_free_locked(si, offset, usage)) + if (!swap_entry_put_locked(si, offset, usage)) swap_entry_range_free(si, ci, swp_entry(si->type, offset), 1); } while (++offset < end); unlock_cluster(ci); @@ -1599,7 +1599,7 @@ void put_swap_folio(struct folio *folio, swp_entry_t entry) swap_entry_range_free(si, ci, entry, size); else { for (int i = 0; i < size; i++, entry.val++) { - if (!__swap_entry_free_locked(si, offset + i, SWAP_HAS_CACHE)) + if (!swap_entry_put_locked(si, offset + i, SWAP_HAS_CACHE)) swap_entry_range_free(si, ci, entry, 1); } } @@ -1798,7 +1798,7 @@ void free_swap_and_cache_nr(swp_entry_t entry, int nr) /* * First free all entries in the range. */ - any_only_cache = __swap_entries_free(si, entry, nr); + any_only_cache = swap_entries_put_nr(si, entry, nr); /* * Short-circuit the below loop if none of the entries had their @@ -1811,7 +1811,7 @@ void free_swap_and_cache_nr(swp_entry_t entry, int nr) * Now go back over the range trying to reclaim the swap cache. This is * more efficient for large folios because we will only try to reclaim * the swap once per folio in the common case. If we do - * __swap_entry_free() and __try_to_reclaim_swap() in the same loop, the + * swap_entry_put() and __try_to_reclaim_swap() in the same loop, the * latter will get a reference and lock the folio for every individual * page but will only succeed once the swap slot for every subpage is * zero. @@ -3758,7 +3758,7 @@ int add_swap_count_continuation(swp_entry_t entry, gfp_t gfp_mask) * into, carry if so, or else fail until a new continuation page is allocated; * when the original swap_map count is decremented from 0 with continuation, * borrow from the continuation and report whether it still holds more. - * Called while __swap_duplicate() or caller of __swap_entry_free_locked() + * Called while __swap_duplicate() or caller of swap_entry_put_locked() * holds cluster lock. */ static bool swap_count_continued(struct swap_info_struct *si, From patchwork Thu Mar 13 21:05:08 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kemeng Shi X-Patchwork-Id: 14014911 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 71B09C28B2E for ; Thu, 13 Mar 2025 12:09:46 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 770B1280001; Thu, 13 Mar 2025 08:09:35 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 1227928000B; Thu, 13 Mar 2025 08:09:34 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id AC5D728000B; Thu, 13 Mar 2025 08:09:34 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id 3C72D280008 for ; Thu, 13 Mar 2025 08:09:34 -0400 (EDT) Received: from smtpin06.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id 56B3A1A2019 for ; Thu, 13 Mar 2025 12:09:34 +0000 (UTC) X-FDA: 83216408268.06.17D66FF Received: from dggsgout12.his.huawei.com (dggsgout12.his.huawei.com [45.249.212.56]) by imf23.hostedemail.com (Postfix) with ESMTP id 0273F140021 for ; Thu, 13 Mar 2025 12:09:29 +0000 (UTC) Authentication-Results: imf23.hostedemail.com; dkim=none; spf=pass (imf23.hostedemail.com: domain of shikemeng@huaweicloud.com designates 45.249.212.56 as permitted sender) smtp.mailfrom=shikemeng@huaweicloud.com; dmarc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1741867772; 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; bh=M95PdNHeN90bHjN5236SIDrj9VHoN/RlhNtfrvoXB+o=; b=Aa70d7MKy4hS+Zi65sW6ogqwPHpj+o32ZlQmORZt/1v/xEzhmtTfcz6i4S8Fzqb0LNsWYI gCqTOUbDqg5Dg35URMmNmxOXd2auf7lwyQGOPEVQJlAsRR924ug4c1kxqhOLG/QOXxWoM2 5wJH2Z1gVaZc/rz+LkvHaUE2CmP8vFA= ARC-Authentication-Results: i=1; imf23.hostedemail.com; dkim=none; spf=pass (imf23.hostedemail.com: domain of shikemeng@huaweicloud.com designates 45.249.212.56 as permitted sender) smtp.mailfrom=shikemeng@huaweicloud.com; dmarc=none ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1741867772; a=rsa-sha256; cv=none; b=JB3RlBknG8Ng9jpENLRAsvSUhqQ+HY4gUax+sY3mBdNNvHUlIyBYhHkXj4+PxHpdnUE7Ce H/zOGctN8e05WDS3OjKSP+ckFkGA4C+eUdLFzfZKPM6xRW5d/u1dXLmUZ+VeplBAKAIbze mh7QrWSHNOAdJfiPuEaUF4ivk7ShFHA= Received: from mail.maildlp.com (unknown [172.19.93.142]) by dggsgout12.his.huawei.com (SkyGuard) with ESMTP id 4ZD5rZ1r5xz4f3jrl for ; Thu, 13 Mar 2025 20:09:02 +0800 (CST) Received: from mail02.huawei.com (unknown [10.116.40.75]) by mail.maildlp.com (Postfix) with ESMTP id AB9CB1A0D03 for ; Thu, 13 Mar 2025 20:09:24 +0800 (CST) Received: from huaweicloud.com (unknown [10.175.101.6]) by APP2 (Coremail) with SMTP id Syh0CgCnsGPyytJnTaZeGQ--.9643S4; Thu, 13 Mar 2025 20:09:24 +0800 (CST) From: Kemeng Shi To: akpm@linux-foundation.org Cc: kasong@tencent.com, linux-mm@kvack.org, linux-kernel@vger.kernel.org Subject: [PATCH 2/9] mm: swap: factor out the actual swap entry freeing logic to new helper Date: Fri, 14 Mar 2025 05:05:08 +0800 Message-Id: <20250313210515.9920-3-shikemeng@huaweicloud.com> X-Mailer: git-send-email 2.30.0 In-Reply-To: <20250313210515.9920-1-shikemeng@huaweicloud.com> References: <20250313210515.9920-1-shikemeng@huaweicloud.com> MIME-Version: 1.0 X-CM-TRANSID: Syh0CgCnsGPyytJnTaZeGQ--.9643S4 X-Coremail-Antispam: 1UD129KBjvJXoW7AF13JF4UXrykCF4DJF17GFg_yoW8Zry5pF nIgrn8Ga1xJr93GFZxAFn8Z34akw4Fg3W8WF9rGwnayas3JryIqFnrArWYkry5Ja4ku34a 9Fs8Kr17uF4YyFUanT9S1TB71UUUUU7qnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDU0xBIdaVrnRJUUUB0b4IE77IF4wAFF20E14v26r4j6ryUM7CY07I20VC2zVCF04k2 6cxKx2IYs7xG6rWj6s0DM7CIcVAFz4kK6r1j6r18M280x2IEY4vEnII2IxkI6r1a6r45M2 8IrcIa0xkI8VA2jI8067AKxVWUXwA2048vs2IY020Ec7CjxVAFwI0_JFI_Gr1l8cAvFVAK 0II2c7xJM28CjxkF64kEwVA0rcxSw2x7M28EF7xvwVC0I7IYx2IY67AKxVW7JVWDJwA2z4 x0Y4vE2Ix0cI8IcVCY1x0267AKxVW8Jr0_Cr1UM28EF7xvwVC2z280aVAFwI0_GcCE3s1l 84ACjcxK6I8E87Iv6xkF7I0E14v26rxl6s0DM2AIxVAIcxkEcVAq07x20xvEncxIr21l5I 8CrVACY4xI64kE6c02F40Ex7xfMcIj6xIIjxv20xvE14v26r1j6r18McIj6I8E87Iv67AK xVWUJVW8JwAm72CE4IkC6x0Yz7v_Jr0_Gr1lF7xvr2IYc2Ij64vIr41l42xK82IYc2Ij64 vIr41l4I8I3I0E4IkC6x0Yz7v_Jr0_Gr1lx2IqxVAqx4xG67AKxVWUJVWUGwC20s026x8G jcxK67AKxVWUGVWUWwC2zVAF1VAY17CE14v26r126r1DMIIYrxkI7VAKI48JMIIF0xvE2I x0cI8IcVAFwI0_Jr0_JF4lIxAIcVC0I7IYx2IY6xkF7I0E14v26r4j6F4UMIIF0xvE42xK 8VAvwI8IcIk0rVWUJVWUCwCI42IY6I8E87Iv67AKxVWUJVW8JwCI42IY6I8E87Iv6xkF7I 0E14v26r4j6r4UJbIYCTnIWIevJa73UjIFyTuYvjxUsmiiDUUUU X-CM-SenderInfo: 5vklyvpphqwq5kxd4v5lfo033gof0z/ X-Rspam-User: X-Rspamd-Server: rspam10 X-Rspamd-Queue-Id: 0273F140021 X-Stat-Signature: igfuwwwshxwqxf7ckjab7akjriasxttt X-HE-Tag: 1741867769-740434 X-HE-Meta: U2FsdGVkX18hgPzzWiSNcl85HTM5mB2fAiT9pE4vpJWnaj0GcFNLzkdn23gwvSQPQ1fVXCz9Sz+KZoTk1bQA7SpEQAt3FX4/fgn/tYtS8zMnoBv0/2yKr34tJaTX4ICZmJA4zQogerP322etn/dMnaXfa6gPGOM3tu/tTMGgn594oe6fhC//ODmwdIfEsNL4mZZjcbevmXtAWMj/QfR0MGqOtT/DuRyAkDLqcsmiivhmImSJzTfBLTSvPaHAIPtM68CgmLZ177B+3+fNlsRkn0aFOcwc/HXIWN53hyqsJXLwgwQ2Pd8j3EK8qvuErEMK2S4la+8kpiUtvrfUlT74H+jca1hS8l3tVgGD9NCbc2KqnG2Hfi+S+reryRpV1sLMYX1iW7laVZU8j7jW2WUrgam+nxMLEP9vZcZxRBMeDigkGWX3EJLqsNF0Fz6/7MKvLCs0wE6dnzrVlYC+Bd1YDVKh0YpWFfkecou+RD5P4JZUZmpecL4MCPzchICncjOdURXgg95rtSqh7MFV8bZqjggc0aQYVRTbJygpWSys/Xif60yVjeT1g9TPSm1IED3OHyL5wRS1PtXC0r9Uzo2QH/nKiqxC00QXO49n3Cw7qkHyJiBQkyyJiiG1oIDO50IdUOpXl+YIs7YHHjmyhCqDUjbyIRjrDrgafV2Wd8TLE//saIlgDiBCR0yjF3azmoIuAGd10ry/y93+BmmYIWyh2BUEvcahPWRMax5lzXzTWeycA7VxHJsgbk/YIfz0Q68c8Wdj90Jrz8w1bA18xkERl/Hy/MELTou9O72UdFSpRTVEc1XsduGnmgDR3KcYww6kjAjEJxCXgCaZrzFjDJVKHEnF3a3ErfpX6/gPqVC6WsBH4jmYuK2/f69T7BQ9/QCxKpp+XMIsAZlvOpD1HbZErJE8SfBMEs6bAMPKaMIcOhfoitJ4WpFXaGwn6+eoVONWUIu0KrhZ/xyBxtjGIxd vSL8Tt0A jkxacQUZy53IOz+wzGKWuoIxcuXdx2IbNjruTyaK5O9mXsrsEM5A8+AHTafESRB251T8a2PcFJSNYPuNM+5y2O4WgjoEB0PiJ24lQT1tllKFuEhcKFFwJDKbaBM1gd3ilg06EJa3Iy5XfcH/22y8BAIoPZstAi8uZKpvSUspUbre2a9jbccYD2biHYO+NdmZLoDafTFYvlO8e4BU= 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: Factor out the actual swap entry freeing logic to new helper __swap_entries_free(). This allow us to futher simplify other swap entry freeing code by leveraging __swap_entries_free() helper function. Signed-off-by: Kemeng Shi --- mm/swapfile.c | 30 ++++++++++++++++++++---------- 1 file changed, 20 insertions(+), 10 deletions(-) diff --git a/mm/swapfile.c b/mm/swapfile.c index 5a775456e26c..7c886f9dd6f9 100644 --- a/mm/swapfile.c +++ b/mm/swapfile.c @@ -1347,6 +1347,25 @@ static struct swap_info_struct *_swap_info_get(swp_entry_t entry) return NULL; } +static inline void __swap_entries_free(struct swap_info_struct *si, + struct swap_cluster_info *ci, + swp_entry_t entry, unsigned int nr_pages) +{ + unsigned long offset = swp_offset(entry); + + VM_BUG_ON(cluster_is_empty(ci)); + VM_BUG_ON(ci->count < nr_pages); + + ci->count -= nr_pages; + mem_cgroup_uncharge_swap(entry, nr_pages); + swap_range_free(si, offset, nr_pages); + + if (!ci->count) + free_cluster(si, ci); + else + partial_free_cluster(si, ci); +} + static unsigned char swap_entry_put_locked(struct swap_info_struct *si, unsigned long offset, unsigned char usage) @@ -1525,22 +1544,13 @@ static void swap_entry_range_free(struct swap_info_struct *si, /* It should never free entries across different clusters */ VM_BUG_ON(ci != offset_to_cluster(si, offset + nr_pages - 1)); - VM_BUG_ON(cluster_is_empty(ci)); - VM_BUG_ON(ci->count < nr_pages); - ci->count -= nr_pages; do { VM_BUG_ON(*map != SWAP_HAS_CACHE); *map = 0; } while (++map < map_end); - mem_cgroup_uncharge_swap(entry, nr_pages); - swap_range_free(si, offset, nr_pages); - - if (!ci->count) - free_cluster(si, ci); - else - partial_free_cluster(si, ci); + __swap_entries_free(si, ci, entry, nr_pages); } static void cluster_swap_free_nr(struct swap_info_struct *si, From patchwork Thu Mar 13 21:05:09 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kemeng Shi X-Patchwork-Id: 14014910 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 F0EC9C282DE for ; Thu, 13 Mar 2025 12:09:43 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 476AD280003; Thu, 13 Mar 2025 08:09:35 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id E4337280001; Thu, 13 Mar 2025 08:09:34 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 8C4FB28000A; Thu, 13 Mar 2025 08:09:34 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id 3B9B4280007 for ; Thu, 13 Mar 2025 08:09:34 -0400 (EDT) Received: from smtpin04.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id 4BC95C2047 for ; Thu, 13 Mar 2025 12:09:34 +0000 (UTC) X-FDA: 83216408268.04.30C2083 Received: from dggsgout11.his.huawei.com (dggsgout11.his.huawei.com [45.249.212.51]) by imf08.hostedemail.com (Postfix) with ESMTP id 29BB516000F for ; Thu, 13 Mar 2025 12:09:29 +0000 (UTC) Authentication-Results: imf08.hostedemail.com; dkim=none; dmarc=none; spf=pass (imf08.hostedemail.com: domain of shikemeng@huaweicloud.com designates 45.249.212.51 as permitted sender) smtp.mailfrom=shikemeng@huaweicloud.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1741867772; a=rsa-sha256; cv=none; b=eRdUuyrRl9vxSQQ8IC1q8KtEMvMCp8ISCkDYPh/GW577hL4C7ZZmbHfN6082T8jNJ1hlbY gcrLwB3bCRayxUGgaudtUcHCSM55nok2fyTRgS6mpjocOw3KXz4RtK3MQYb4NDxQ1hSGN0 JGjs5tyP0R9O6nFyvRZjrXGz8LC2u/Y= ARC-Authentication-Results: i=1; imf08.hostedemail.com; dkim=none; dmarc=none; spf=pass (imf08.hostedemail.com: domain of shikemeng@huaweicloud.com designates 45.249.212.51 as permitted sender) smtp.mailfrom=shikemeng@huaweicloud.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1741867772; 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; bh=mKM6FZmYqv1agP0DMaN6qqTmvH0b6aZIVxavwo6kZ6Y=; b=ZDcnhx9qHNc049xVjVJK6MocuCGvmLn/uf/jNT5WvhHaMisVGCmlEvPYgU1vtt/+pLAFNj fX2hRaJiYPJ4kczFp4j+1ONRZ/m3q3U8YLC9QKnorIUz6jblIFiRLt4J5Qvu0bnk5g9cxl msrh+5e5L1IyvIgL2rJAXEUde3MGbV0= Received: from mail.maildlp.com (unknown [172.19.163.235]) by dggsgout11.his.huawei.com (SkyGuard) with ESMTP id 4ZD5rY0JdHz4f3mHc for ; Thu, 13 Mar 2025 20:09:01 +0800 (CST) Received: from mail02.huawei.com (unknown [10.116.40.75]) by mail.maildlp.com (Postfix) with ESMTP id E7DF21A06D7 for ; Thu, 13 Mar 2025 20:09:24 +0800 (CST) Received: from huaweicloud.com (unknown [10.175.101.6]) by APP2 (Coremail) with SMTP id Syh0CgCnsGPyytJnTaZeGQ--.9643S5; Thu, 13 Mar 2025 20:09:24 +0800 (CST) From: Kemeng Shi To: akpm@linux-foundation.org Cc: kasong@tencent.com, linux-mm@kvack.org, linux-kernel@vger.kernel.org Subject: [PATCH 3/9] mm: swap: use __swap_entry_free() to free swap entry in swap_entry_put_locked() Date: Fri, 14 Mar 2025 05:05:09 +0800 Message-Id: <20250313210515.9920-4-shikemeng@huaweicloud.com> X-Mailer: git-send-email 2.30.0 In-Reply-To: <20250313210515.9920-1-shikemeng@huaweicloud.com> References: <20250313210515.9920-1-shikemeng@huaweicloud.com> MIME-Version: 1.0 X-CM-TRANSID: Syh0CgCnsGPyytJnTaZeGQ--.9643S5 X-Coremail-Antispam: 1UD129KBjvJXoWxZF13AF1UArW3Jw4xXFyxXwb_yoW5WrW8pF 9Igrs8tF4xZr17K3yrJw45ZayFvw4xWw10qFnrGw13ZasxXryFgFyDC3y2gFyUA3s5uF98 Z3WUtr17ur42vFUanT9S1TB71UUUUU7qnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDU0xBIdaVrnRJUUUB0b4IE77IF4wAFF20E14v26ryj6rWUM7CY07I20VC2zVCF04k2 6cxKx2IYs7xG6rWj6s0DM7CIcVAFz4kK6r1j6r18M280x2IEY4vEnII2IxkI6r1a6r45M2 8IrcIa0xkI8VA2jI8067AKxVWUWwA2048vs2IY020Ec7CjxVAFwI0_Gr0_Xr1l8cAvFVAK 0II2c7xJM28CjxkF64kEwVA0rcxSw2x7M28EF7xvwVC0I7IYx2IY67AKxVW7JVWDJwA2z4 x0Y4vE2Ix0cI8IcVCY1x0267AKxVW8Jr0_Cr1UM28EF7xvwVC2z280aVAFwI0_GcCE3s1l 84ACjcxK6I8E87Iv6xkF7I0E14v26rxl6s0DM2AIxVAIcxkEcVAq07x20xvEncxIr21l5I 8CrVACY4xI64kE6c02F40Ex7xfMcIj6xIIjxv20xvE14v26r1j6r18McIj6I8E87Iv67AK xVWUJVW8JwAm72CE4IkC6x0Yz7v_Jr0_Gr1lF7xvr2IYc2Ij64vIr41l42xK82IYc2Ij64 vIr41l4I8I3I0E4IkC6x0Yz7v_Jr0_Gr1lx2IqxVAqx4xG67AKxVWUJVWUGwC20s026x8G jcxK67AKxVWUGVWUWwC2zVAF1VAY17CE14v26r126r1DMIIYrxkI7VAKI48JMIIF0xvE2I x0cI8IcVAFwI0_Jr0_JF4lIxAIcVC0I7IYx2IY6xkF7I0E14v26r4j6F4UMIIF0xvE42xK 8VAvwI8IcIk0rVWUJVWUCwCI42IY6I8E87Iv67AKxVWUJVW8JwCI42IY6I8E87Iv6xkF7I 0E14v26r4j6r4UJbIYCTnIWIevJa73UjIFyTuYvjxU3G-eDUUUU X-CM-SenderInfo: 5vklyvpphqwq5kxd4v5lfo033gof0z/ X-Rspam-User: X-Rspamd-Queue-Id: 29BB516000F X-Stat-Signature: yce6qi8codu7ep54admndphtr8xnhpgb X-Rspamd-Server: rspam06 X-HE-Tag: 1741867769-928630 X-HE-Meta: U2FsdGVkX1/g17mZQO0FBD/lbz2Q89IgS5J7vnY+gms67h9UWrom1/NcmeO9pfI9RXm8w3BtBChhsyf9E7gW6zlID6A2E7HbdYDO6ro1lCxyff3BGzPljlVF1TvlrZ/fKP6RGjykIqmUceZX5IuhQgKYf9Bg5p7isMnCdVhXPlBEQVhHqpeY48BIHAOW6qT6CFgyFSa15ViY7hqRIgUtRI1yifokJRF4ABDq6Rqgc5uFkmVmOJ+9R/NKeFkV4iKLCWYysAiSfCeMyQwRlR6GR747c+34s1ZF/47vEdqwzzD+n2WBoBsCcurzzu0NkPAgoso2a0EpgKA6sRJyhFYLehS+GnEQ/1maBqAbsNZpw5x7G1U6p4zcTjzsrnVbIJHJNB0Dy8O3vA0zEA5lnyWlHSusHB8bAw45LSG4fiOtO3nvwAqN7O/+9JDxNA1I9PunVV96OPotiFGHwHIEON3RUrWH+2Tq5RbYPn9CWoQm7cHNaiJ9aLE7IOr7CWFMH2/0zh3L7DVH+aGPLefx9ftnRiN+aUjYQ/PRBBbIwqU2YGKPIJPLtr6loxChHxJZs2tHVS7vviJsCs3L2BG12d1dS5SqQFRDzikDyd+WyiSxrl92aL73GHe2KbLozkLIH5Rl3T9R9K9diFn2oJLu3w5sD7tFwUA8c9iUK+4JQo/zgXBoSYG9QNXXDklzniCKc0XYh1heLbEPV+7MQyq8vSy+Nt7nc3ffSZ4CNx06dI1DjGVcSwzsHbIWdALFq7TERe72hK9cSjzxzXjpCUQQfWeMM0Z0wMZC8MsOfZl/oxGnGdSRwGhon55bq0YUVHSIBkSkd9y6y1mqEYhBaX88E7SP8x9lopZtE5JMIi8f6571pkNoDWg+nEbel+iW1ParlDrbKPFyzrKkNK1guTmlxs6aDa3mKIxncdg8QCyb1e3aB6mpq8ag0nocAf3QEF5ypF4Qrhe+n01wMvB6HeBypNj QQQH0EXc 3JB2smmH9Du7mVgCrmqxVEOvk6ibfNBHbDEqUskFl3ec7KAhzpzPHiUyxFSGeBeBL3wXv+Bcr0rKaYSxJpqJLMwUAIzbfM/UjLWkomq6PjTp8tpTZhrRfwb4zmY5i2kRA8RN3Em2PAeRaOGGH1iCQ7fXapVHFqZQ4W0N1gtyrnOZB/QpkmwCEbsf5bYyPoPt7cDmMDtIh6BVr1XGr1phHIJC2VA== 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: In swap_entry_put_locked(), we will set slot to SWAP_HAS_CACHE before using swap_entry_range_free to do actual swap entry freeing. This introduce an unnecessary intermediate state. By using __swap_entry_free() in swap_entry_put_locked(), we can eliminate the need to set slot to SWAP_HAS_CACHE. This change would make the behavior of swap_entry_put_locked() more consistent with other put() operations which will do actual free work after put last reference. Signed-off-by: Kemeng Shi --- mm/swapfile.c | 28 ++++++++++++---------------- 1 file changed, 12 insertions(+), 16 deletions(-) diff --git a/mm/swapfile.c b/mm/swapfile.c index 7c886f9dd6f9..ba37b9bff586 100644 --- a/mm/swapfile.c +++ b/mm/swapfile.c @@ -1367,9 +1367,11 @@ static inline void __swap_entries_free(struct swap_info_struct *si, } static unsigned char swap_entry_put_locked(struct swap_info_struct *si, - unsigned long offset, + struct swap_cluster_info *ci, + swp_entry_t entry, unsigned char usage) { + unsigned long offset = swp_offset(entry); unsigned char count; unsigned char has_cache; @@ -1398,10 +1400,9 @@ static unsigned char swap_entry_put_locked(struct swap_info_struct *si, } usage = count | has_cache; - if (usage) - WRITE_ONCE(si->swap_map[offset], usage); - else - WRITE_ONCE(si->swap_map[offset], SWAP_HAS_CACHE); + WRITE_ONCE(si->swap_map[offset], usage); + if (!usage) + __swap_entries_free(si, ci, entry, 1); return usage; } @@ -1480,9 +1481,7 @@ static unsigned char swap_entry_put(struct swap_info_struct *si, unsigned char usage; ci = lock_cluster(si, offset); - usage = swap_entry_put_locked(si, offset, 1); - if (!usage) - swap_entry_range_free(si, ci, swp_entry(si->type, offset), 1); + usage = swap_entry_put_locked(si, ci, entry, 1); unlock_cluster(ci); return usage; @@ -1562,8 +1561,8 @@ static void cluster_swap_free_nr(struct swap_info_struct *si, ci = lock_cluster(si, offset); do { - if (!swap_entry_put_locked(si, offset, usage)) - swap_entry_range_free(si, ci, swp_entry(si->type, offset), 1); + swap_entry_put_locked(si, ci, swp_entry(si->type, offset), + usage); } while (++offset < end); unlock_cluster(ci); } @@ -1607,12 +1606,9 @@ void put_swap_folio(struct folio *folio, swp_entry_t entry) ci = lock_cluster(si, offset); if (swap_only_has_cache(si, offset, size)) swap_entry_range_free(si, ci, entry, size); - else { - for (int i = 0; i < size; i++, entry.val++) { - if (!swap_entry_put_locked(si, offset + i, SWAP_HAS_CACHE)) - swap_entry_range_free(si, ci, entry, 1); - } - } + else + for (int i = 0; i < size; i++, entry.val++) + swap_entry_put_locked(si, ci, entry, SWAP_HAS_CACHE); unlock_cluster(ci); } From patchwork Thu Mar 13 21:05:10 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kemeng Shi X-Patchwork-Id: 14014907 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 982EEC2BA1B for ; Thu, 13 Mar 2025 12:09:36 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 7CAF4280006; Thu, 13 Mar 2025 08:09:34 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 743E5280004; Thu, 13 Mar 2025 08:09:34 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 5DE4F280009; Thu, 13 Mar 2025 08:09:34 -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 384E8280005 for ; Thu, 13 Mar 2025 08:09:34 -0400 (EDT) Received: from smtpin23.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id 5E99B141FDE for ; Thu, 13 Mar 2025 12:09:34 +0000 (UTC) X-FDA: 83216408268.23.52D4BD7 Received: from dggsgout11.his.huawei.com (dggsgout11.his.huawei.com [45.249.212.51]) by imf25.hostedemail.com (Postfix) with ESMTP id 6539BA0017 for ; Thu, 13 Mar 2025 12:09:30 +0000 (UTC) Authentication-Results: imf25.hostedemail.com; dkim=none; dmarc=none; spf=pass (imf25.hostedemail.com: domain of shikemeng@huaweicloud.com designates 45.249.212.51 as permitted sender) smtp.mailfrom=shikemeng@huaweicloud.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1741867772; a=rsa-sha256; cv=none; b=t/8Hl/PBFozxwOhHZ+xHwbq8DegjNi2ckbUdJdzx/83cF8qP67gJBC9Q/kga+QvMErh60u iOWH+GqZtroq4Mcv2tTJ+KWv3s2QJ6YQC5TMsRAfUOEHzG/hdUJnp+MT9Q+7/5VehIFv96 Sz00k0Qs3rw0i6rzUj3xlv2Ht12A/9M= ARC-Authentication-Results: i=1; imf25.hostedemail.com; dkim=none; dmarc=none; spf=pass (imf25.hostedemail.com: domain of shikemeng@huaweicloud.com designates 45.249.212.51 as permitted sender) smtp.mailfrom=shikemeng@huaweicloud.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1741867772; 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; bh=tRX3m5fwTtAy1qWNufJtAxMoSxdfYH4F7/5ThR6oeoM=; b=H47MKJ33pHtjSNkCMJtpcMGvPhwuaYSa3m1djUTvdNy/qYJ/TO4cREJEhA+1fOsIsUr/u9 gTETZsIV3+SxVrBSSqprm7KGASm4ZZza+hd5XvEDxxuk3hIYv/kqo3LMRcAdd9Uh1uqcA9 I5aLhGxrKCbX6V8TBcXJjRTbH01kH6c= Received: from mail.maildlp.com (unknown [172.19.163.235]) by dggsgout11.his.huawei.com (SkyGuard) with ESMTP id 4ZD5rY2GRZz4f3mHp for ; Thu, 13 Mar 2025 20:09:01 +0800 (CST) Received: from mail02.huawei.com (unknown [10.116.40.75]) by mail.maildlp.com (Postfix) with ESMTP id 3183E1A06DE for ; Thu, 13 Mar 2025 20:09:25 +0800 (CST) Received: from huaweicloud.com (unknown [10.175.101.6]) by APP2 (Coremail) with SMTP id Syh0CgCnsGPyytJnTaZeGQ--.9643S6; Thu, 13 Mar 2025 20:09:25 +0800 (CST) From: Kemeng Shi To: akpm@linux-foundation.org Cc: kasong@tencent.com, linux-mm@kvack.org, linux-kernel@vger.kernel.org Subject: [PATCH 4/9] mm: swap: remove unneeded VM_BUG_ON(*map != SWAP_HAS_CACHE) in swap_entry_range_free() Date: Fri, 14 Mar 2025 05:05:10 +0800 Message-Id: <20250313210515.9920-5-shikemeng@huaweicloud.com> X-Mailer: git-send-email 2.30.0 In-Reply-To: <20250313210515.9920-1-shikemeng@huaweicloud.com> References: <20250313210515.9920-1-shikemeng@huaweicloud.com> MIME-Version: 1.0 X-CM-TRANSID: Syh0CgCnsGPyytJnTaZeGQ--.9643S6 X-Coremail-Antispam: 1UD129KBjvJXoWxWr45tF15GrW8Gw1UJry7Wrg_yoW5CryrpF 9agwn8KFs7Jr13KrW7Jw4qka1S9397WF18ZF9rGw1av3Z3Jry0qFyDArWjkFyUAFykuasI y3WDtr17Ga1jvFJanT9S1TB71UUUUU7qnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDU0xBIdaVrnRJUUUB2b4IE77IF4wAFF20E14v26rWj6s0DM7CY07I20VC2zVCF04k2 6cxKx2IYs7xG6rWj6s0DM7CIcVAFz4kK6r1j6r18M280x2IEY4vEnII2IxkI6r1a6r45M2 8IrcIa0xkI8VA2jI8067AKxVWUAVCq3wA2048vs2IY020Ec7CjxVAFwI0_Gr0_Xr1l8cAv FVAK0II2c7xJM28CjxkF64kEwVA0rcxSw2x7M28EF7xvwVC0I7IYx2IY67AKxVW7JVWDJw A2z4x0Y4vE2Ix0cI8IcVCY1x0267AKxVW8Jr0_Cr1UM28EF7xvwVC2z280aVAFwI0_GcCE 3s1l84ACjcxK6I8E87Iv6xkF7I0E14v26rxl6s0DM2AIxVAIcxkEcVAq07x20xvEncxIr2 1l5I8CrVACY4xI64kE6c02F40Ex7xfMcIj6xIIjxv20xvE14v26r1j6r18McIj6I8E87Iv 67AKxVWUJVW8JwAm72CE4IkC6x0Yz7v_Jr0_Gr1lF7xvr2IYc2Ij64vIr41l42xK82IYc2 Ij64vIr41l4I8I3I0E4IkC6x0Yz7v_Jr0_Gr1lx2IqxVAqx4xG67AKxVWUJVWUGwC20s02 6x8GjcxK67AKxVWUGVWUWwC2zVAF1VAY17CE14v26r126r1DMIIYrxkI7VAKI48JMIIF0x vE2Ix0cI8IcVAFwI0_Jr0_JF4lIxAIcVC0I7IYx2IY6xkF7I0E14v26r4j6F4UMIIF0xvE 42xK8VAvwI8IcIk0rVWUJVWUCwCI42IY6I8E87Iv67AKxVWUJVW8JwCI42IY6I8E87Iv6x kF7I0E14v26r4j6r4UJbIYCTnIWIevJa73UjIFyTuYvjxU3XTQUUUUU X-CM-SenderInfo: 5vklyvpphqwq5kxd4v5lfo033gof0z/ X-Rspam-User: X-Rspamd-Queue-Id: 6539BA0017 X-Rspamd-Server: rspam05 X-Stat-Signature: toymokqmarigbzjucwfi4itcxa6dzoz5 X-HE-Tag: 1741867770-693291 X-HE-Meta: U2FsdGVkX1+APk7ks/3LJdkP38JI0uw7s3ACKqd29dCVs828wk+awB4ZPyeCOlVa3GirVYkBzzQSjm/wYMu1zQN9My/00Cdh49Sw5VzW2/H5M95imSAbNppMpRPaQb1erLnr+wnAspekh/D9XsDCi6F7N4gzI93nsKgolGyYCtnaU8cmBsjSJJh1ra3rWvs4HMQ10oTM9uuij8sGFEaQJ0TWVpSwkoHYnx17tj1AHuf5eAcghFzaZkRgwX07+yPsNl0DFOe4Bumg67HjsceEsqtFd6yTXbfKAKhnX61xOeUUrWwhRkzB3H05iEhSYdpb6EG6kcWQC9w6GGhxwg2NBkHK6Y4LCJ3vCGowI1C6bNAfbZpqpMTWEu7QJzwWwZObTWxDxyrxW++UCg480OV8x45JX/JYo8sCfjHzEUM75+rKRDCZFzkdr77rNWID5MseYMk4YUrlQcFnmxzxRo9GfI1csOixM0U68pj1MJOQV+tV6xG1DxV0ndF9Dpzkt4t71v+Jcmph0U/zUzFt6Jj0nBZ/f+flwM2u8rHONA/bIb+0CCXLoet+23AhiV0BhgI32L3M+/H6w3E5wBXD7pQaXVMse6IfPKkBG3keUl6yFMefEum9GPnuQqr5SkuqxVOFiAd9DlUT88rnAG81FHhozck5w7YAwFAuLIpbd/1rpQpG0ScIw7pqoeqATUCWyRW7gDsnDPkEQMHXFKK7ohkCsGG1YAMK0WN0VnSvLkNkhQMAkuU1T18gkR/jLwvvP0anM6m/eEmw+Vc4Dx5040HRPthmCIt37unItE/Z9CkEctj+qz2DcY5d0O4f2QsX0hRoUAN/SX/XW+KCl91/XmRVgaapQeaa9Juh/krFIxbNXqvyw/jAa3uEZAXu9UoCNEtWPx+TVwNLcaR95XRpWgWPRvkZ4yeLsULhz0eJKoxruj5vo1RakHub/2fUAk6g/Kbs9QLiWZm0aMHCYM7GFEr W8j+ZIFZ Og+RU7jWBVJkihf25U6+bnb+rW6rVOxWJ2DNpaTo7JvR1YswPtFbrsiqeiBECXU5vIeHiyc7vgxiikTld0T1LaTjrq7z3FVuFPw6CCb3qv2mwkpbShm+ZvOA+EBASS4mSA/77iTtNaRhKNYKSnpgKmnhwbyyYThSPEKIU/+TtdqBeGuUGKJG4XuzqIwNKrpW6RHjRs0o7NqSMC3AZxckGI3SPMjpLZXw3wpbllvKjKv4Ui2eFKDMwSC3imIwbDW4Bzrle 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: As all callers of swap_entry_range_free() have already ensured slots to be freed are marked as SWAP_HAS_CACHE while holding the cluster lock, the BUG_ON check can be safely removed. After this, the function swap_entry_range_free() could drop any kind of last flag, rename it to swap_entries_free() and update it's comment accordingly. This is a preparation to use swap_entries_free() to drop last 1 and SWAP_MAP_SHMEM flag. Signed-off-by: Kemeng Shi --- mm/swapfile.c | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/mm/swapfile.c b/mm/swapfile.c index ba37b9bff586..14b7b37996ff 100644 --- a/mm/swapfile.c +++ b/mm/swapfile.c @@ -52,9 +52,9 @@ static bool swap_count_continued(struct swap_info_struct *, pgoff_t, unsigned char); static void free_swap_count_continuations(struct swap_info_struct *); -static void swap_entry_range_free(struct swap_info_struct *si, - struct swap_cluster_info *ci, - swp_entry_t entry, unsigned int nr_pages); +static void swap_entries_free(struct swap_info_struct *si, + struct swap_cluster_info *ci, + swp_entry_t entry, unsigned int nr_pages); static void swap_range_alloc(struct swap_info_struct *si, unsigned int nr_entries); static bool folio_swapcache_freeable(struct folio *folio); @@ -1511,7 +1511,7 @@ static bool swap_entries_put_nr(struct swap_info_struct *si, for (i = 0; i < nr; i++) WRITE_ONCE(si->swap_map[offset + i], SWAP_HAS_CACHE); if (!has_cache) - swap_entry_range_free(si, ci, entry, nr); + swap_entries_free(si, ci, entry, nr); unlock_cluster(ci); return has_cache; @@ -1530,12 +1530,12 @@ static bool swap_entries_put_nr(struct swap_info_struct *si, } /* - * Drop the last HAS_CACHE flag of swap entries, caller have to - * ensure all entries belong to the same cgroup. + * Drop the last flag(1, SWAP_HAS_CACHE or SWAP_MAP_SHMEM) of swap entries, + * caller have to ensure all entries belong to the same cgroup. */ -static void swap_entry_range_free(struct swap_info_struct *si, - struct swap_cluster_info *ci, - swp_entry_t entry, unsigned int nr_pages) +static void swap_entries_free(struct swap_info_struct *si, + struct swap_cluster_info *ci, + swp_entry_t entry, unsigned int nr_pages) { unsigned long offset = swp_offset(entry); unsigned char *map = si->swap_map + offset; @@ -1545,7 +1545,6 @@ static void swap_entry_range_free(struct swap_info_struct *si, VM_BUG_ON(ci != offset_to_cluster(si, offset + nr_pages - 1)); do { - VM_BUG_ON(*map != SWAP_HAS_CACHE); *map = 0; } while (++map < map_end); @@ -1605,7 +1604,7 @@ void put_swap_folio(struct folio *folio, swp_entry_t entry) ci = lock_cluster(si, offset); if (swap_only_has_cache(si, offset, size)) - swap_entry_range_free(si, ci, entry, size); + swap_entries_free(si, ci, entry, size); else for (int i = 0; i < size; i++, entry.val++) swap_entry_put_locked(si, ci, entry, SWAP_HAS_CACHE); From patchwork Thu Mar 13 21:05:11 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kemeng Shi X-Patchwork-Id: 14014913 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 6D04FC2BA1B for ; Thu, 13 Mar 2025 12:09:51 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id CB9E4280009; Thu, 13 Mar 2025 08:09:35 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 439D428000C; Thu, 13 Mar 2025 08:09:35 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id D0F64280003; Thu, 13 Mar 2025 08:09:34 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id 59FEE280001 for ; Thu, 13 Mar 2025 08:09:34 -0400 (EDT) Received: from smtpin28.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id 9251182069 for ; Thu, 13 Mar 2025 12:09:34 +0000 (UTC) X-FDA: 83216408268.28.AF187EC Received: from dggsgout12.his.huawei.com (dggsgout12.his.huawei.com [45.249.212.56]) by imf16.hostedemail.com (Postfix) with ESMTP id 60042180009 for ; Thu, 13 Mar 2025 12:09:30 +0000 (UTC) Authentication-Results: imf16.hostedemail.com; dkim=none; dmarc=none; spf=pass (imf16.hostedemail.com: domain of shikemeng@huaweicloud.com designates 45.249.212.56 as permitted sender) smtp.mailfrom=shikemeng@huaweicloud.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1741867772; a=rsa-sha256; cv=none; b=qmKfKCdjkhpaBfVUVRxTyDmHuk8sW2QvxdcrPg/9+Af4sBuKQo5XMHH/MOVyhNItmXEo8R u6CeIN9U4ixmUZWUIHZ3n8DlHo/+bavFYPrk6Sk0jaOlBXIv3SkxTRHIxtoyGqyVphbW9t EsVyLu41SunqyJoekMFkLgEFgdRhiG4= ARC-Authentication-Results: i=1; imf16.hostedemail.com; dkim=none; dmarc=none; spf=pass (imf16.hostedemail.com: domain of shikemeng@huaweicloud.com designates 45.249.212.56 as permitted sender) smtp.mailfrom=shikemeng@huaweicloud.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1741867772; 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; bh=jmM5JvdjaPlAp7xlxe7wnb+FhS99SDTs1JsGYSJNgoE=; b=Po/KrnOX0PQIRu2/MPDrXBHSvEXAKdMqs9o5qTfHm7UibP+7LBeX0Asfpe/nVW70BePWLD vNy+zUQ54RxO6K4Z4NqcjD8bCILWWDo5FziZj3OexlK0gvsHIoSNje+Zny9O6p3ho8QJfT ty2M36GK1MrQuNRSHAxysP4VEhuIdBU= Received: from mail.maildlp.com (unknown [172.19.163.216]) by dggsgout12.his.huawei.com (SkyGuard) with ESMTP id 4ZD5rb0SBHz4f3jrd for ; Thu, 13 Mar 2025 20:09:03 +0800 (CST) Received: from mail02.huawei.com (unknown [10.116.40.75]) by mail.maildlp.com (Postfix) with ESMTP id 77CF61A0AA4 for ; Thu, 13 Mar 2025 20:09:25 +0800 (CST) Received: from huaweicloud.com (unknown [10.175.101.6]) by APP2 (Coremail) with SMTP id Syh0CgCnsGPyytJnTaZeGQ--.9643S7; Thu, 13 Mar 2025 20:09:25 +0800 (CST) From: Kemeng Shi To: akpm@linux-foundation.org Cc: kasong@tencent.com, linux-mm@kvack.org, linux-kernel@vger.kernel.org Subject: [PATCH 5/9] mm: swap: use swap_entries_free() drop last 1 flag in swap_entries_put_nr() Date: Fri, 14 Mar 2025 05:05:11 +0800 Message-Id: <20250313210515.9920-6-shikemeng@huaweicloud.com> X-Mailer: git-send-email 2.30.0 In-Reply-To: <20250313210515.9920-1-shikemeng@huaweicloud.com> References: <20250313210515.9920-1-shikemeng@huaweicloud.com> MIME-Version: 1.0 X-CM-TRANSID: Syh0CgCnsGPyytJnTaZeGQ--.9643S7 X-Coremail-Antispam: 1UD129KBjvdXoWrZw1rAF4DAw1kuF13Ar1DKFg_yoW3urb_ua 9Ykw1kJw43XF1DuF17tFyjvr9Yg395AF13ZF4ftFWayFZ8GF95Zw4qgr98C34vvw1Ivwn3 Aanavr1kArnrGjkaLaAFLSUrUUUUjb8apTn2vfkv8UJUUUU8Yxn0WfASr-VFAUDa7-sFnT 9fnUUIcSsGvfJTRUUUbS8YFVCjjxCrM7AC8VAFwI0_Wr0E3s1l1xkIjI8I6I8E6xAIw20E Y4v20xvaj40_Wr0E3s1l1IIY67AEw4v_Jr0_Jr4l87I20VAvwVAaII0Ic2I_JFv_Gryl82 xGYIkIc2x26280x7IE14v26r126s0DM28IrcIa0xkI8VCY1x0267AKxVW8JVW5JwA2ocxC 64kIII0Yj41l84x0c7CEw4AK67xGY2AK021l84ACjcxK6xIIjxv20xvE14v26F1j6w1UM2 8EF7xvwVC0I7IYx2IY6xkF7I0E14v26r4UJVWxJr1l84ACjcxK6I8E87Iv67AKxVW0oVCq 3wA2z4x0Y4vEx4A2jsIEc7CjxVAFwI0_GcCE3s1le2I262IYc4CY6c8Ij28IcVAaY2xG8w Aqx4xG64xvF2IEw4CE5I8CrVC2j2WlYx0E2Ix0cI8IcVAFwI0_Jr0_Jr4lYx0Ex4A2jsIE 14v26r1j6r4UMcvjeVCFs4IE7xkEbVWUJVW8JwACjcxG0xvY0x0EwIxGrwCF04k20xvY0x 0EwIxGrwCFx2IqxVCFs4IE7xkEbVWUJVW8JwC20s026c02F40E14v26r1j6r18MI8I3I0E 7480Y4vE14v26r106r1rMI8E67AF67kF1VAFwI0_JF0_Jw1lIxkGc2Ij64vIr41lIxAIcV C0I7IYx2IY67AKxVWUCVW8JwCI42IY6xIIjxv20xvEc7CjxVAFwI0_Gr0_Cr1lIxAIcVCF 04k26cxKx2IYs7xG6r1j6r1xMIIF0xvEx4A2jsIE14v26r1j6r4UMIIF0xvEx4A2jsIEc7 CjxVAFwI0_Gr0_Gr1UYxBIdaVFxhVjvjDU0xZFpf9x07jyYLPUUUUU= X-CM-SenderInfo: 5vklyvpphqwq5kxd4v5lfo033gof0z/ X-Rspam-User: X-Rspamd-Queue-Id: 60042180009 X-Stat-Signature: n1nhheypwos8ae6zd4556x9er4ku6dyj X-Rspamd-Server: rspam06 X-HE-Tag: 1741867770-170037 X-HE-Meta: U2FsdGVkX19f0xpKv8myXHrdjX/V8aappwwdNa7gGgTpPWllY3dzC1YRcsgWP+20AmY38QZ726A59hGhFAMX/vQzsdab/YUxoBRXDQjqv+q3+/DIx86kadY7SStwf/aLxoF1mHFsxvzNgGllmm1Q6x2/v1RhaPAQG4aidIvmm2u9R587ZPZroKJpL705C5IM9v2FGc6CQvXfQDbgWzMddVe5bg2PajHrz7oUj3t5eP2yY2MVMCtA/4js6Xwx2uq9bQAJIljIvzIWWKikaIDpp5yjTUnnTDEhCN3H5jjzrGNl4vLjRg3e76r3Oy+87LVcvpEskEmtTZp9eA8/px+khpBotNAiSNPTSEq/xkb3CPrkG+bfkGlbe7+vLFoy+vt9YftjEPJcyXYL5iT28W6BzhwUbBLKs/J79spvUfD3lX+Wto60dFDZpak6uFx+BAyBEG6da3N7r4BcIA/4j+r05jrGPM5yhxDfl6mROAMiKI3VdPjcNEDNFHeWiJ9OkYJrEG1KTDYNKXgCGYEdGzMDBTbgzckd90Yi5GEF6gk8/cCAnlW6ScYlkaqkRLiDjbFyNtSdgZw4ldY9k8RNpahqCVzjjfCFMBH8W+daZ805WmQH1rEnNOs69ejr7JKK5uew/5nvdob/5q8wjIjTSRcW+5C+KFqVielI/0TJogSBLhFeY93hTUriyzG+OHJPL8GrlvgRoniqy1nlOWT9FYwgn/IzSnKtwocrTGK19N610aWWAAmw8q/e3ZKUBr5nh/QLEAEpO7p6LErGWhB50+7gmg9pdnMLYDcHOj4Jajv7oo+XjvyKgnFHgKQMntAsiQwjdqG7ajBvvk+0aKGTfxGPGaFxB2VoiZ4YgEu8oA0PdoUll3fCKCDhOkXUkWmEtYnZzTaWpTveXTHfvJDUwTaACb9J2AnBl3+PB5GqJy2nn3trS6r2Z5Ca1QzsHsbQZTVGScKk58suto44Br8xLyd qvFqrHbc MRHqCsmVqR/268G69qWfk2v56Fd6boo+UQbrenDMxovXv3mrxN/ifesIYCiB/CTWBGo79aI0UELpsTnNmGV66KRXBomp4r2ZIT8YDkWNzyZfv5v9GtfHWpG3zg4WGUCPK0eCZoSJxR2KGTmhXG81vP0+QClb52So8NX7kCR1V1kQ+BvncffdwbHP+xa+FVUayG3s+011YnvXp3Ckn772fCCo6HQ== 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: Use swap_entries_free() to drop last 1 flag to eliminate the need to set slot to the intermediate SWAP_HAS_CACHE state. Signed-off-by: Kemeng Shi --- mm/swapfile.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/mm/swapfile.c b/mm/swapfile.c index 14b7b37996ff..0ce0ca08594e 100644 --- a/mm/swapfile.c +++ b/mm/swapfile.c @@ -1508,10 +1508,11 @@ static bool swap_entries_put_nr(struct swap_info_struct *si, unlock_cluster(ci); goto fallback; } - for (i = 0; i < nr; i++) - WRITE_ONCE(si->swap_map[offset + i], SWAP_HAS_CACHE); if (!has_cache) swap_entries_free(si, ci, entry, nr); + else + for (i = 0; i < nr; i++) + WRITE_ONCE(si->swap_map[offset + i], SWAP_HAS_CACHE); unlock_cluster(ci); return has_cache; From patchwork Thu Mar 13 21:05:12 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kemeng Shi X-Patchwork-Id: 14014914 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 C282AC35FF1 for ; Thu, 13 Mar 2025 12:09:53 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id F30A928000B; Thu, 13 Mar 2025 08:09:35 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 6C9BB280004; Thu, 13 Mar 2025 08:09:35 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id EB6BD280007; Thu, 13 Mar 2025 08:09:34 -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 8D0A0280007 for ; Thu, 13 Mar 2025 08:09:34 -0400 (EDT) Received: from smtpin30.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id C27891A2018 for ; Thu, 13 Mar 2025 12:09:34 +0000 (UTC) X-FDA: 83216408268.30.881E85E Received: from dggsgout11.his.huawei.com (dggsgout11.his.huawei.com [45.249.212.51]) by imf29.hostedemail.com (Postfix) with ESMTP id 3650412000D for ; Thu, 13 Mar 2025 12:09:29 +0000 (UTC) Authentication-Results: imf29.hostedemail.com; dkim=none; spf=pass (imf29.hostedemail.com: domain of shikemeng@huaweicloud.com designates 45.249.212.51 as permitted sender) smtp.mailfrom=shikemeng@huaweicloud.com; dmarc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1741867773; 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; bh=u/tHHnTpfGEGPWKdJrY2i9IVdR3XdCz7OYekZEfVmik=; b=B0mAsbj/pLdjJhzJldi/nIrOmz7da4kaG8VoVGaR5+6iFa2I3JUb0XRmTYdP7zMYNuMY5/ IHcTvHihlmZ5MWtEd0BvsW4rSRWQ5c3tw0b0bIYHO5MOg7JSmnXdNsxeoTpY97rG/nQ5lC WfxzqD6pdNn1L1v/UcuxIHHjjmqmoV0= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1741867773; a=rsa-sha256; cv=none; b=qom7xzvHEGOSINOOzJjzzIJK32xfXo1S5njgQSoyVHM+SnGkuNmJ84THQYdDPhCSJLgNEy xydam5tyS/5CxZfY025X3ZE19bAfaRtqLoqhDbTX3aDAOj2pE0UKP8Rw2ckOSgPXPmRwrf pOPQq+X3HTdmw4hoDCpddGKbY/jguTw= ARC-Authentication-Results: i=1; imf29.hostedemail.com; dkim=none; spf=pass (imf29.hostedemail.com: domain of shikemeng@huaweicloud.com designates 45.249.212.51 as permitted sender) smtp.mailfrom=shikemeng@huaweicloud.com; dmarc=none Received: from mail.maildlp.com (unknown [172.19.93.142]) by dggsgout11.his.huawei.com (SkyGuard) with ESMTP id 4ZD5rh4tvTz4f3jt9 for ; Thu, 13 Mar 2025 20:09:08 +0800 (CST) Received: from mail02.huawei.com (unknown [10.116.40.75]) by mail.maildlp.com (Postfix) with ESMTP id BDE941A1693 for ; Thu, 13 Mar 2025 20:09:25 +0800 (CST) Received: from huaweicloud.com (unknown [10.175.101.6]) by APP2 (Coremail) with SMTP id Syh0CgCnsGPyytJnTaZeGQ--.9643S8; Thu, 13 Mar 2025 20:09:25 +0800 (CST) From: Kemeng Shi To: akpm@linux-foundation.org Cc: kasong@tencent.com, linux-mm@kvack.org, linux-kernel@vger.kernel.org Subject: [PATCH 6/9] mm: swap: drop last SWAP_MAP_SHMEM flag in batch in swap_entries_put_nr() Date: Fri, 14 Mar 2025 05:05:12 +0800 Message-Id: <20250313210515.9920-7-shikemeng@huaweicloud.com> X-Mailer: git-send-email 2.30.0 In-Reply-To: <20250313210515.9920-1-shikemeng@huaweicloud.com> References: <20250313210515.9920-1-shikemeng@huaweicloud.com> MIME-Version: 1.0 X-CM-TRANSID: Syh0CgCnsGPyytJnTaZeGQ--.9643S8 X-Coremail-Antispam: 1UD129KBjvdXoWrKF1Dtry5ur18tryxAFykAFb_yoWkCrc_ur Z0qw1kCF4DJFsruF12y34xXrykGws7AF98X3W0qFW2q3yDKrySqwsFkrW7trn8J3yfurs5 Aas5Zr43uwsxJjkaLaAFLSUrUUUUjb8apTn2vfkv8UJUUUU8Yxn0WfASr-VFAUDa7-sFnT 9fnUUIcSsGvfJTRUUUbS8YFVCjjxCrM7AC8VAFwI0_Wr0E3s1l1xkIjI8I6I8E6xAIw20E Y4v20xvaj40_Wr0E3s1l1IIY67AEw4v_Jr0_Jr4l87I20VAvwVAaII0Ic2I_JFv_Gryl82 xGYIkIc2x26280x7IE14v26r126s0DM28IrcIa0xkI8VCY1x0267AKxVW5JVCq3wA2ocxC 64kIII0Yj41l84x0c7CEw4AK67xGY2AK021l84ACjcxK6xIIjxv20xvE14v26F1j6w1UM2 8EF7xvwVC0I7IYx2IY6xkF7I0E14v26r4UJVWxJr1l84ACjcxK6I8E87Iv67AKxVW0oVCq 3wA2z4x0Y4vEx4A2jsIEc7CjxVAFwI0_GcCE3s1le2I262IYc4CY6c8Ij28IcVAaY2xG8w Aqx4xG64xvF2IEw4CE5I8CrVC2j2WlYx0E2Ix0cI8IcVAFwI0_Jr0_Jr4lYx0Ex4A2jsIE 14v26r1j6r4UMcvjeVCFs4IE7xkEbVWUJVW8JwACjcxG0xvY0x0EwIxGrwCF04k20xvY0x 0EwIxGrwCFx2IqxVCFs4IE7xkEbVWUJVW8JwC20s026c02F40E14v26r1j6r18MI8I3I0E 7480Y4vE14v26r106r1rMI8E67AF67kF1VAFwI0_JF0_Jw1lIxkGc2Ij64vIr41lIxAIcV C0I7IYx2IY67AKxVWUCVW8JwCI42IY6xIIjxv20xvEc7CjxVAFwI0_Gr0_Cr1lIxAIcVCF 04k26cxKx2IYs7xG6r1j6r1xMIIF0xvEx4A2jsIE14v26r1j6r4UMIIF0xvEx4A2jsIEc7 CjxVAFwI0_Gr0_Gr1UYxBIdaVFxhVjvjDU0xZFpf9x07jstxDUUUUU= X-CM-SenderInfo: 5vklyvpphqwq5kxd4v5lfo033gof0z/ X-Rspam-User: X-Rspamd-Server: rspam02 X-Rspamd-Queue-Id: 3650412000D X-Stat-Signature: zzgiw4krw1d6djtxstdg5md3peg9pene X-HE-Tag: 1741867769-560889 X-HE-Meta: U2FsdGVkX1+18eEDRsBnKBf/jcxmzBBmlIF6pkfRotiIuqzUX7ZSKXv7Y4w55n7A0hBwHFna9MMirrx7GxQKg1T0CBHaA4lyFNHfTP1ZHDloFO5Zbr2IszW7S9bWDiGByiVpNkbprDeJKqFD/q+h4guRiIAQAav4QEyyiRYtnY7tX0MWdCTbRqYq2PJl2Xqik0zD7pW6Rfrr2xP9ow57SxiNLvrNUTae1t929J2gFQhmOwj1dgtmr8EvMYZbtZ9zt8GkNz7M6o+Kx8nUZCNlh734eYs7Yg1J5u7YLJtSCo3c+aQVVsaZh+XN0fmKdaBbF9e920Asu9WqJkuQI1YrEbLaFLUiA1iB0kAyVOvTXxqZoRTnRhSEP6+4xKMQLpa5NiD7X/9Z52l69vE0oZKi98T8AZQbTBQiDonDxxZNqHe4O6emB8luHOco66FQ3arDjao1CnaH3EzUDZAn4mZAZrTJwHEOjYl5dfaWwWEVeWNDy2A4a0Dzi7KBSVtTN4uEo3RBAjOiu2vGp3O31dPlEq0ovxqie1jjAN8416mO/2QrGuYIwiy22N9w+Qv32o/MmYA/P6GeT71rvz5jOachyUIHb+3O2MxwKsOhbbzswx6bo8hQKEuD74oxREaaHlvXWAZjKDjIp0tbxxoXIF94mMVckIm5iI5stW54+kH4gAsbYOr3bmfkDxrQtuofECLU7ZwMRuzlDg23woo5XeU3JIveuAD/KzPfyVkaNIhVFsLc9PNByVYCP+B2vMJRmOAIm5qveP4LXo+9HWuvdmhbfRXTBkF/MZeR+4wjQVH3VuBJ/qbKsXlT6b/DYpzKPqClzfR/C/uRktTeNb12g9yRAZcDvkr+lwQI0xidoznK7l0Prc33B2FTEWROnjzgMqu8OggVXd1gCjWszZSv7KO6f1MU1uoaCJHcbycQQNS9ccU2aWdxRpJaKHaqu/JRF21gmji9rx5Iuef/snnCd1U EhO69vy2 aCnvI1GrOUwEnVQ6VNaX1Q3GmDJf6NtzfyP/Npmr3Tyv6zWpoorWt+wyYv5/wJ6XuKVHvVZiqrRbK8Qa5ByS/WACcM75/22G1djD8pZHwbqYFIi9hawjQ9Qbre21UL+L40TeS1C+I+HvEPeyIyGE66JrcrQkVcI4MAsjkDbvxS6BlpxD6n8bjXBLYXbjuc/llBeTSg6mxX6HOH2okAvhKlDMNHQ== 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: The SWAP_MAP_SHMEM indicates last map from shmem. Therefore we can drop SWAP_MAP_SHMEM in batch in similar way to drop last 1 flag in batch. Signed-off-by: Kemeng Shi --- mm/swapfile.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/mm/swapfile.c b/mm/swapfile.c index 0ce0ca08594e..2d0f5d630211 100644 --- a/mm/swapfile.c +++ b/mm/swapfile.c @@ -192,7 +192,7 @@ static bool swap_is_last_map(struct swap_info_struct *si, unsigned char *map_end = map + nr_pages; unsigned char count = *map; - if (swap_count(count) != 1) + if (swap_count(count) != 1 && swap_count(count) != SWAP_MAP_SHMEM) return false; while (++map < map_end) { @@ -1497,7 +1497,10 @@ static bool swap_entries_put_nr(struct swap_info_struct *si, unsigned char count; int i; - if (nr <= 1 || swap_count(data_race(si->swap_map[offset])) != 1) + if (nr <= 1) + goto fallback; + count = swap_count(data_race(si->swap_map[offset])); + if (count != 1 && count != SWAP_MAP_SHMEM) goto fallback; /* cross into another cluster */ if (nr > SWAPFILE_CLUSTER - offset % SWAPFILE_CLUSTER) From patchwork Thu Mar 13 21:05:13 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kemeng Shi X-Patchwork-Id: 14014912 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 F37D7C282DE for ; Thu, 13 Mar 2025 12:09:48 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 9ED74280005; Thu, 13 Mar 2025 08:09:35 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 280A3280009; Thu, 13 Mar 2025 08:09:35 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id C33F928000C; Thu, 13 Mar 2025 08:09:34 -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 36F5E280003 for ; Thu, 13 Mar 2025 08:09:34 -0400 (EDT) Received: from smtpin03.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id 469CBA9F4F for ; Thu, 13 Mar 2025 12:09:34 +0000 (UTC) X-FDA: 83216408268.03.0D9F6DF Received: from dggsgout12.his.huawei.com (dggsgout12.his.huawei.com [45.249.212.56]) by imf21.hostedemail.com (Postfix) with ESMTP id F26601C000A for ; Thu, 13 Mar 2025 12:09:29 +0000 (UTC) Authentication-Results: imf21.hostedemail.com; dkim=none; dmarc=none; spf=pass (imf21.hostedemail.com: domain of shikemeng@huaweicloud.com designates 45.249.212.56 as permitted sender) smtp.mailfrom=shikemeng@huaweicloud.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1741867772; a=rsa-sha256; cv=none; b=L0t5LCVcXkEqV0bXXAwkmaZVpEPfga/hcGu/oPa9823YYyVeKUigAVIkoUHgpmGnS1KS+G UxDsqd4//nl44d18xd3j9kb+H8Gy3heBNHlcJFrfhZH06IXjAOU+P/7QVWnhgYMPd8MUJQ RuA87jy+H0jWR46ixFJH+g/f2EUuP7A= ARC-Authentication-Results: i=1; imf21.hostedemail.com; dkim=none; dmarc=none; spf=pass (imf21.hostedemail.com: domain of shikemeng@huaweicloud.com designates 45.249.212.56 as permitted sender) smtp.mailfrom=shikemeng@huaweicloud.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1741867772; 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; bh=2yaYCh4yJy9Hfpf2/7EP+3H2VeKj6magMhFLqWmoF0U=; b=2RVtz5YiU4k2fMnx98K4jhO+JtdpACMvNZ/83GyG+VaYjsMeP7CpUCYT8V63x5yZl9R91M g/uYfHhdf/Txwwil9232lcgnkn8+w/DRuGbFJ6z7tvR+fmHcp6BgygDIPSzvsb8Vv4lECr 4KBRwAT2YSbhMp9o1dr1pLX9MKUk7FI= Received: from mail.maildlp.com (unknown [172.19.163.235]) by dggsgout12.his.huawei.com (SkyGuard) with ESMTP id 4ZD5rb48sBz4f3jYR for ; Thu, 13 Mar 2025 20:09:03 +0800 (CST) Received: from mail02.huawei.com (unknown [10.116.40.75]) by mail.maildlp.com (Postfix) with ESMTP id 065341A06D7 for ; Thu, 13 Mar 2025 20:09:26 +0800 (CST) Received: from huaweicloud.com (unknown [10.175.101.6]) by APP2 (Coremail) with SMTP id Syh0CgCnsGPyytJnTaZeGQ--.9643S9; Thu, 13 Mar 2025 20:09:25 +0800 (CST) From: Kemeng Shi To: akpm@linux-foundation.org Cc: kasong@tencent.com, linux-mm@kvack.org, linux-kernel@vger.kernel.org Subject: [PATCH 7/9] mm: swap: free each cluster individually in swap_entries_put_map_nr() Date: Fri, 14 Mar 2025 05:05:13 +0800 Message-Id: <20250313210515.9920-8-shikemeng@huaweicloud.com> X-Mailer: git-send-email 2.30.0 In-Reply-To: <20250313210515.9920-1-shikemeng@huaweicloud.com> References: <20250313210515.9920-1-shikemeng@huaweicloud.com> MIME-Version: 1.0 X-CM-TRANSID: Syh0CgCnsGPyytJnTaZeGQ--.9643S9 X-Coremail-Antispam: 1UD129KBjvJXoWxGry8CF4rtFy3uryUAw1rtFb_yoW5tFy8pF yagrn8tr4xZr17Jr4xAws8ArWru3y0gF1jqF9rGr1Sy3srAr18WFyvy3yYvFyUC34kur98 t3W7K347uFs8tr7anT9S1TB71UUUUU7qnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDU0xBIdaVrnRJUUUB2b4IE77IF4wAFF20E14v26rWj6s0DM7CY07I20VC2zVCF04k2 6cxKx2IYs7xG6rWj6s0DM7CIcVAFz4kK6r1j6r18M280x2IEY4vEnII2IxkI6r1a6r45M2 8IrcIa0xkI8VA2jI8067AKxVWUAVCq3wA2048vs2IY020Ec7CjxVAFwI0_Xr0E3s1l8cAv FVAK0II2c7xJM28CjxkF64kEwVA0rcxSw2x7M28EF7xvwVC0I7IYx2IY67AKxVW7JVWDJw A2z4x0Y4vE2Ix0cI8IcVCY1x0267AKxVW8Jr0_Cr1UM28EF7xvwVC2z280aVAFwI0_GcCE 3s1l84ACjcxK6I8E87Iv6xkF7I0E14v26rxl6s0DM2AIxVAIcxkEcVAq07x20xvEncxIr2 1l5I8CrVACY4xI64kE6c02F40Ex7xfMcIj6xIIjxv20xvE14v26r1j6r18McIj6I8E87Iv 67AKxVWUJVW8JwAm72CE4IkC6x0Yz7v_Jr0_Gr1lF7xvr2IYc2Ij64vIr41l42xK82IYc2 Ij64vIr41l4I8I3I0E4IkC6x0Yz7v_Jr0_Gr1lx2IqxVAqx4xG67AKxVWUJVWUGwC20s02 6x8GjcxK67AKxVWUGVWUWwC2zVAF1VAY17CE14v26r126r1DMIIYrxkI7VAKI48JMIIF0x vE2Ix0cI8IcVAFwI0_JFI_Gr1lIxAIcVC0I7IYx2IY6xkF7I0E14v26r4j6F4UMIIF0xvE 42xK8VAvwI8IcIk0rVWUJVWUCwCI42IY6I8E87Iv67AKxVWUJVW8JwCI42IY6I8E87Iv6x kF7I0E14v26r4j6r4UJbIYCTnIWIevJa73UjIFyTuYvjxUIL05UUUUU X-CM-SenderInfo: 5vklyvpphqwq5kxd4v5lfo033gof0z/ X-Stat-Signature: tcsh9gic4gcgwe1caecqqefh3z7qo9wi X-Rspamd-Server: rspam12 X-Rspamd-Queue-Id: F26601C000A X-Rspam-User: X-HE-Tag: 1741867769-303367 X-HE-Meta: U2FsdGVkX18LBB2g1xHWTNOBIgp/tS1/TCuTMofZnM0yj7uuITsoDzo2RoV0KF8pJyEMZeE5leeuMc171y74nNbU+7wUD7zuOke1jcJ0MY7ohrBr8YPDYiFzugmW+X9k7Q8zPbK1rU6cv1/6yypQ2sQE8IDzxrWzw6zCICzeyLF/unLSjYhN9VgpRpPs/4PNHxi0z4HyKW0Yjbnq4+nhsq+fERLla1Jl3hVIHSsreB1UlzQiTreE43reFyUOvEPyfLRcdD1gOnCGQGY1MEycFjSO/NRUS4LLADY7qppz6/Fp3ub04SwF4dvfrSfU600+WMvzmVf/UVOeAMJhYi3MV8xSBO979wftFoId9qpDTamPtLI53VizEb224Swx0JBdHUJomKbfqalS5xTivMhldy+xUYe04f20vvljtk7Mfu4hPin6uvQTUY1mkuBtXrhImim4lrxgv2uVefUF2cQ8vzYDH25WuKvgvaRgKVe4JdcAYdJCqIBbDjuy+b4PFDBiuIEaj39Qt6AOLnEIhCV65NiTbFLwzRkNk7VYY2keVgQtVss7nLpkbxmi6kXGtFaQu+2eKJyzrVh1pLJSskBiqVNFAq5PbaT8J11nftRSM5zKmRD+s162VqNls/J1UDIPa5P3dmkfcSWYWc/9ivwZQRQlSYo5ZwWGXbeGNavt5S3WrWtnR3WfM267Kyo9Zy/kSFusBgrHsQI4EubVTP0pmZTM297J3JF1nmgPkH5w84+bSkkHzvOl+vq9K9Tth/FIDlvEFOQ6jUO9crCb8PkIcGVXZ91lyYVHSedqJoGmFUZdSFT/usp0sKT7HH1+RtyNdtydMvX4rlA3Go8dvPXNlyvu9OCW8NzwnAGlOdh7PNTsk45r2Z62d0fmux4I6QnXkAB5XIy0zWc5QqCy61/5i7mtMiel75fMvjxGK5PjbK8h7k4cmgQ/BOoymVdAYAyxbIIcpDDdDDcy4OwHAhX BGHXcYqw P3t4GVWSoQNpHJAXaP1q8zySKcX5i0sIl+YbMA7+2ARCcmLzRqTWOhE/I46GhsA3BIi91y5dfcylt/YG2RVGo4ey9GYSESPylvSU6c5GQ6rUGy0Q39rXdEwy8Ppp+VSHOjTQ3OlXRzGsJNUv9fdiyGf2H8FC4OZ9Z9ENTNB6/lDSsgrQNNs3OzqRH0utgxFOkvQf2d6RpwzOdAUTMdBHi3E07Vw== 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: 1. Factor out general swap_entries_put_map() helper to drop entries belong to one cluster. If entries are last map, free entries in batch, otherwise put entries with cluster lock acquired and released only once. 2. Iterate and call swap_entries_put_map() for each cluster in swap_entries_put_nr() to leverage batch-remove for last map belong to one cluster and reduce lock acquire/release in fallback case. 3. As swap_entries_put_nr() won't handle SWAP_HSA_CACHE drop, rename it to swap_entries_put_map_nr(). Signed-off-by: Kemeng Shi --- mm/swapfile.c | 58 +++++++++++++++++++++++++-------------------------- 1 file changed, 29 insertions(+), 29 deletions(-) diff --git a/mm/swapfile.c b/mm/swapfile.c index 2d0f5d630211..ebac9ff74ba7 100644 --- a/mm/swapfile.c +++ b/mm/swapfile.c @@ -1473,25 +1473,10 @@ struct swap_info_struct *get_swap_device(swp_entry_t entry) return NULL; } -static unsigned char swap_entry_put(struct swap_info_struct *si, - swp_entry_t entry) +static bool swap_entries_put_map(struct swap_info_struct *si, + swp_entry_t entry, int nr) { - struct swap_cluster_info *ci; unsigned long offset = swp_offset(entry); - unsigned char usage; - - ci = lock_cluster(si, offset); - usage = swap_entry_put_locked(si, ci, entry, 1); - unlock_cluster(ci); - - return usage; -} - -static bool swap_entries_put_nr(struct swap_info_struct *si, - swp_entry_t entry, int nr) -{ - unsigned long offset = swp_offset(entry); - unsigned int type = swp_type(entry); struct swap_cluster_info *ci; bool has_cache = false; unsigned char count; @@ -1502,9 +1487,6 @@ static bool swap_entries_put_nr(struct swap_info_struct *si, count = swap_count(data_race(si->swap_map[offset])); if (count != 1 && count != SWAP_MAP_SHMEM) goto fallback; - /* cross into another cluster */ - if (nr > SWAPFILE_CLUSTER - offset % SWAPFILE_CLUSTER) - goto fallback; ci = lock_cluster(si, offset); if (!swap_is_last_map(si, offset, nr, &has_cache)) { @@ -1521,15 +1503,33 @@ static bool swap_entries_put_nr(struct swap_info_struct *si, return has_cache; fallback: - for (i = 0; i < nr; i++) { - if (data_race(si->swap_map[offset + i])) { - count = swap_entry_put(si, swp_entry(type, offset + i)); - if (count == SWAP_HAS_CACHE) - has_cache = true; - } else { - WARN_ON_ONCE(1); - } + ci = lock_cluster(si, offset); + for (i = 0; i < nr; i++, entry.val++) { + count = swap_entry_put_locked(si, ci, entry, 1); + if (count == SWAP_HAS_CACHE) + has_cache = true; } + unlock_cluster(ci); + return has_cache; + +} + +static bool swap_entries_put_map_nr(struct swap_info_struct *si, + swp_entry_t entry, int nr) +{ + int cluster_nr, cluster_rest; + unsigned long offset = swp_offset(entry); + bool has_cache = false; + + cluster_rest = SWAPFILE_CLUSTER - offset % SWAPFILE_CLUSTER; + while (nr) { + cluster_nr = min(nr, cluster_rest); + has_cache |= swap_entries_put_map(si, entry, cluster_nr); + cluster_rest = SWAPFILE_CLUSTER; + nr -= cluster_nr; + entry.val += cluster_nr; + } + return has_cache; } @@ -1807,7 +1807,7 @@ void free_swap_and_cache_nr(swp_entry_t entry, int nr) /* * First free all entries in the range. */ - any_only_cache = swap_entries_put_nr(si, entry, nr); + any_only_cache = swap_entries_put_map_nr(si, entry, nr); /* * Short-circuit the below loop if none of the entries had their From patchwork Thu Mar 13 21:05:14 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kemeng Shi X-Patchwork-Id: 14014915 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 335EDC28B2E for ; Thu, 13 Mar 2025 12:09:56 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 29BB8280004; Thu, 13 Mar 2025 08:09:36 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 983AF280007; Thu, 13 Mar 2025 08:09:35 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 0850C280005; Thu, 13 Mar 2025 08:09:34 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id BA166280009 for ; Thu, 13 Mar 2025 08:09:34 -0400 (EDT) Received: from smtpin01.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id F302EC2047 for ; Thu, 13 Mar 2025 12:09:34 +0000 (UTC) X-FDA: 83216408268.01.6263C1B Received: from dggsgout11.his.huawei.com (dggsgout11.his.huawei.com [45.249.212.51]) by imf06.hostedemail.com (Postfix) with ESMTP id 39180180010 for ; Thu, 13 Mar 2025 12:09:29 +0000 (UTC) Authentication-Results: imf06.hostedemail.com; dkim=none; spf=pass (imf06.hostedemail.com: domain of shikemeng@huaweicloud.com designates 45.249.212.51 as permitted sender) smtp.mailfrom=shikemeng@huaweicloud.com; dmarc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1741867773; 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; bh=vN+zxinYtJgl5VhyLg4gN0/1iNFAUWY7Wn2AGVpvSSc=; b=7ultTOvbwMTv33X0b8eU0u8q4ciQz0fafph7o/yiiSdPQo1vJDtws+790KE+fBi6j8oKY+ gG/x3ofiSR0GJ1Xd8Dn9Xdqx2VS5AOdGFBZ/7xOn60Y68+rAy0JND58T8ZK2gg5vW2GrwY g1PI38dP0Mwi45D7vwrTzOd7MgYPG1k= ARC-Authentication-Results: i=1; imf06.hostedemail.com; dkim=none; spf=pass (imf06.hostedemail.com: domain of shikemeng@huaweicloud.com designates 45.249.212.51 as permitted sender) smtp.mailfrom=shikemeng@huaweicloud.com; dmarc=none ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1741867773; a=rsa-sha256; cv=none; b=MH2KLARF5qSnwY+kJQphzQK2an6R6l9gPhPtyDG/Hht/c1ylFuwpdPoh1h4vslIkAiV2kr SaPEWpx2liiywQk+9ITOVLftc7ZGbiE2KUcFUtaCfttIr5Dh7ePsJcUnJzpTwfvq+1ihkG UcgvE14IjCFi7n4N22TwPwScwtN4+1k= Received: from mail.maildlp.com (unknown [172.19.163.216]) by dggsgout11.his.huawei.com (SkyGuard) with ESMTP id 4ZD5rZ2c2Vz4f3mHX for ; Thu, 13 Mar 2025 20:09:02 +0800 (CST) Received: from mail02.huawei.com (unknown [10.116.40.75]) by mail.maildlp.com (Postfix) with ESMTP id 425DD1A0AA4 for ; Thu, 13 Mar 2025 20:09:26 +0800 (CST) Received: from huaweicloud.com (unknown [10.175.101.6]) by APP2 (Coremail) with SMTP id Syh0CgCnsGPyytJnTaZeGQ--.9643S10; Thu, 13 Mar 2025 20:09:26 +0800 (CST) From: Kemeng Shi To: akpm@linux-foundation.org Cc: kasong@tencent.com, linux-mm@kvack.org, linux-kernel@vger.kernel.org Subject: [PATCH 8/9] mm: swap: factor out helper to drop cache of entries within a single cluster Date: Fri, 14 Mar 2025 05:05:14 +0800 Message-Id: <20250313210515.9920-9-shikemeng@huaweicloud.com> X-Mailer: git-send-email 2.30.0 In-Reply-To: <20250313210515.9920-1-shikemeng@huaweicloud.com> References: <20250313210515.9920-1-shikemeng@huaweicloud.com> MIME-Version: 1.0 X-CM-TRANSID: Syh0CgCnsGPyytJnTaZeGQ--.9643S10 X-Coremail-Antispam: 1UD129KBjvJXoW7uFWkAF4DJr4rGryrJF13Arb_yoW8CFykpF 9Igrn8KF48Xr13Gw4xJw45J3ySv3yIg3WUZFy7Gw13Z3Z3Jr10gFyqyrWa9ryYkr95ur98 Ca48try2gF1jyF7anT9S1TB71UUUUU7qnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDU0xBIdaVrnRJUUUB2b4IE77IF4wAFF20E14v26rWj6s0DM7CY07I20VC2zVCF04k2 6cxKx2IYs7xG6rWj6s0DM7CIcVAFz4kK6r1j6r18M280x2IEY4vEnII2IxkI6r1a6r45M2 8IrcIa0xkI8VA2jI8067AKxVWUAVCq3wA2048vs2IY020Ec7CjxVAFwI0_Xr0E3s1l8cAv FVAK0II2c7xJM28CjxkF64kEwVA0rcxSw2x7M28EF7xvwVC0I7IYx2IY67AKxVW7JVWDJw A2z4x0Y4vE2Ix0cI8IcVCY1x0267AKxVW8Jr0_Cr1UM28EF7xvwVC2z280aVAFwI0_GcCE 3s1l84ACjcxK6I8E87Iv6xkF7I0E14v26rxl6s0DM2AIxVAIcxkEcVAq07x20xvEncxIr2 1l5I8CrVACY4xI64kE6c02F40Ex7xfMcIj6xIIjxv20xvE14v26r1j6r18McIj6I8E87Iv 67AKxVWUJVW8JwAm72CE4IkC6x0Yz7v_Jr0_Gr1lF7xvr2IYc2Ij64vIr41l42xK82IYc2 Ij64vIr41l4I8I3I0E4IkC6x0Yz7v_Jr0_Gr1lx2IqxVAqx4xG67AKxVWUJVWUGwC20s02 6x8GjcxK67AKxVWUGVWUWwC2zVAF1VAY17CE14v26r126r1DMIIYrxkI7VAKI48JMIIF0x vE2Ix0cI8IcVAFwI0_JFI_Gr1lIxAIcVC0I7IYx2IY6xkF7I0E14v26r4j6F4UMIIF0xvE 42xK8VAvwI8IcIk0rVWUJVWUCwCI42IY6I8E87Iv67AKxVWUJVW8JwCI42IY6I8E87Iv6x kF7I0E14v26r4j6r4UJbIYCTnIWIevJa73UjIFyTuYvjxUIL05UUUUU X-CM-SenderInfo: 5vklyvpphqwq5kxd4v5lfo033gof0z/ X-Rspam-User: X-Rspamd-Server: rspam10 X-Rspamd-Queue-Id: 39180180010 X-Stat-Signature: kmbdgrxbzhc6krqwxzyxfopq6keigis5 X-HE-Tag: 1741867769-412478 X-HE-Meta: U2FsdGVkX1/w6s4WxswUVjbeh5eYwbwYNkf4ETKyxWexA+j6U+zA1Z52oIqiEBhI1bUVJPEAhNMxqN2WaIVpqTM+HJTvP8bOVYOLlZeJOPjvAdqnfB9Uq7cxwTwwjELe+bnjolA3QFQcsnkkmZ0sY+Vjhqir8cbHGp3jeMrk4iSH2ZDssQQJETxo92kmhMzDVjfiprAizLu+oWt6Kz4p0Y4IyIn1wOdaRgvCRox6l8H29NH0o2rasJL81uNXTGj6FvYBV25TTrzUTXu30CKKABKe7n8x2eAqFcbZYy2cdWKx/EhP1gGqQKMzp5VM0MEzla/7Ukeoi/K0weYJbpjsSjWru6bxk5QfPk3bM8QQ78OmKaD3y9pE+ocdX7NA63g5oquib4LMWnjPpbfzcctmNr/O+5/lWRzMqp8g+v3Pw7/Ef3jCbOGCRZD5ZDjj9JhJJtovWUZxGFgqux4w/QurfZD4k6KZ2HE9SYtxJWnw6KZXQfXj9TQ3bYDsknSxR3iG+thiNUU79Vftq2iKVNKh3QKNYzwvnkBMa12CQoEXt09Our1Mo63rp4A/XnjEQgxqo4a5VIS/KmjuV3hQk27CGk60QJTvgijSiAGhI3qXtEM/igjTdRUM2lAf6Qy+aEFmEQtgqxHQwytIoDxwIDqEKe1tx5DXKJUlwb9/qyoGMU37AhXYtmPlU4cdTKU/F9AxN2NOabiB+K0AF3KqufYiZkIYb/brvGdyley51348yy6usFTFUxSqcrFtGjyYJ8otIMm58GBNTBlXR9YefUXPmN/4WUdoTu+5ac50m2Nq9x7CqzXoLG5Lf8zsJygJ7XFItmXWJtlJ6uDXr9dk9vUgBKaqdtoJsvEB5eM7E0yepBdbxywROQ75bEW3yt9mg+jZkpDhTxnKGzyNUZhE6fl+tQIVZRZwC9Ro97ZcHHZRYhsQ84iSkSYrujIGMl2Z8CzdYFtV6A2Ck0cBfGl3rud BKLsEipB MmCLCc/uvER5b/pUdINREzg6LCmT+TG6NG5q/IM7Wg0z8xVimW7Uf5xZHa4fHK0N+VAhtb3lqRDcKp5ed1LTC1zSMc4jY8bsfE3lYhdE8fniPAea8I5HNHUh2N2OLoPS0+rM9sa8t3id7wKVK3FyhnjToHvGSdpMbLs6x 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: Factor out helper swap_entries_put_cache() from put_swap_folio() to server as a general-purpose routine for dropping cache flag of entries within a single cluster. Signed-off-by: Kemeng Shi --- mm/swapfile.c | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/mm/swapfile.c b/mm/swapfile.c index ebac9ff74ba7..343b34eb2a81 100644 --- a/mm/swapfile.c +++ b/mm/swapfile.c @@ -1473,6 +1473,21 @@ struct swap_info_struct *get_swap_device(swp_entry_t entry) return NULL; } +static void swap_entries_put_cache(struct swap_info_struct *si, + swp_entry_t entry, int nr) +{ + unsigned long offset = swp_offset(entry); + struct swap_cluster_info *ci; + + ci = lock_cluster(si, offset); + if (swap_only_has_cache(si, offset, nr)) + swap_entries_free(si, ci, entry, nr); + else + for (int i = 0; i < nr; i++, entry.val++) + swap_entry_put_locked(si, ci, entry, SWAP_HAS_CACHE); + unlock_cluster(ci); +} + static bool swap_entries_put_map(struct swap_info_struct *si, swp_entry_t entry, int nr) { @@ -1597,8 +1612,6 @@ void swap_free_nr(swp_entry_t entry, int nr_pages) */ void put_swap_folio(struct folio *folio, swp_entry_t entry) { - unsigned long offset = swp_offset(entry); - struct swap_cluster_info *ci; struct swap_info_struct *si; int size = 1 << swap_entry_order(folio_order(folio)); @@ -1606,13 +1619,7 @@ void put_swap_folio(struct folio *folio, swp_entry_t entry) if (!si) return; - ci = lock_cluster(si, offset); - if (swap_only_has_cache(si, offset, size)) - swap_entries_free(si, ci, entry, size); - else - for (int i = 0; i < size; i++, entry.val++) - swap_entry_put_locked(si, ci, entry, SWAP_HAS_CACHE); - unlock_cluster(ci); + swap_entries_put_cache(si, entry, size); } int __swap_count(swp_entry_t entry) From patchwork Thu Mar 13 21:05:15 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kemeng Shi X-Patchwork-Id: 14014909 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 76067C28B2E for ; Thu, 13 Mar 2025 12:09:41 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 0ABBA28000A; Thu, 13 Mar 2025 08:09:35 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id B5C26280004; Thu, 13 Mar 2025 08:09:34 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 7B34C280009; Thu, 13 Mar 2025 08:09:34 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id 38EA7280006 for ; Thu, 13 Mar 2025 08:09:34 -0400 (EDT) Received: from smtpin01.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id 48BD6121FCD for ; Thu, 13 Mar 2025 12:09:34 +0000 (UTC) X-FDA: 83216408268.01.A0081F1 Received: from dggsgout12.his.huawei.com (dggsgout12.his.huawei.com [45.249.212.56]) by imf18.hostedemail.com (Postfix) with ESMTP id 0CAFB1C0023 for ; Thu, 13 Mar 2025 12:09:30 +0000 (UTC) Authentication-Results: imf18.hostedemail.com; dkim=none; dmarc=none; spf=pass (imf18.hostedemail.com: domain of shikemeng@huaweicloud.com designates 45.249.212.56 as permitted sender) smtp.mailfrom=shikemeng@huaweicloud.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1741867772; a=rsa-sha256; cv=none; b=LY2dEmmuRbyTOEPeMU5a7UdeF79FOTJINbaKOF6yJPpVeGF+BvUkL8i+/iUNvns624HzKS F6m4dKDJzUSisgg2LTixvjp7phC7WMxlvNCOK22h3G+jZMLEeGuSoF6XOHy5Cw7kDItYfW 1r9ByWUpKrgcG6e+o5elVDNnRMBVXsE= ARC-Authentication-Results: i=1; imf18.hostedemail.com; dkim=none; dmarc=none; spf=pass (imf18.hostedemail.com: domain of shikemeng@huaweicloud.com designates 45.249.212.56 as permitted sender) smtp.mailfrom=shikemeng@huaweicloud.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1741867772; 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; bh=8UW2oPGILsVY3hxInLRYz3AZXxLhkJ0g3HKUaw4jVTg=; b=Eg/GySkE48/qTfip45dDpbSP5snUT5QHyCdr953DbRyM9b81nwxQw0GTyutF7wIc+5cGyr OfPG7wv5mqQWJSiEQTQ/PbHXGHpem5Wsd511UZDF9FJ9oNxLwwjOcRHu2TejTBCU8KCKNy xZvwjy7OIrdlV+1Be4ugMWtkaMqYj+I= Received: from mail.maildlp.com (unknown [172.19.163.235]) by dggsgout12.his.huawei.com (SkyGuard) with ESMTP id 4ZD5rc0YtTz4f3js3 for ; Thu, 13 Mar 2025 20:09:04 +0800 (CST) Received: from mail02.huawei.com (unknown [10.116.40.75]) by mail.maildlp.com (Postfix) with ESMTP id 7FB6C1A06DC for ; Thu, 13 Mar 2025 20:09:26 +0800 (CST) Received: from huaweicloud.com (unknown [10.175.101.6]) by APP2 (Coremail) with SMTP id Syh0CgCnsGPyytJnTaZeGQ--.9643S11; Thu, 13 Mar 2025 20:09:26 +0800 (CST) From: Kemeng Shi To: akpm@linux-foundation.org Cc: kasong@tencent.com, linux-mm@kvack.org, linux-kernel@vger.kernel.org Subject: [PATCH 9/9] mm: swap: replace cluster_swap_free_nr() with swap_entries_put_[map/cache]() Date: Fri, 14 Mar 2025 05:05:15 +0800 Message-Id: <20250313210515.9920-10-shikemeng@huaweicloud.com> X-Mailer: git-send-email 2.30.0 In-Reply-To: <20250313210515.9920-1-shikemeng@huaweicloud.com> References: <20250313210515.9920-1-shikemeng@huaweicloud.com> MIME-Version: 1.0 X-CM-TRANSID: Syh0CgCnsGPyytJnTaZeGQ--.9643S11 X-Coremail-Antispam: 1UD129KBjvJXoW7KFy7Wr47tryrJryDJr1rtFb_yoW8Aw18pF 93Wr1DKr4fJr1fKw4Ivw4DZrWav3ykGw1UJF9rWr1Fy3Z7tryIgF1vkrWxu345Gr95urZI kanrt3srWrs8tr7anT9S1TB71UUUUU7qnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDU0xBIdaVrnRJUUUB2b4IE77IF4wAFF20E14v26rWj6s0DM7CY07I20VC2zVCF04k2 6cxKx2IYs7xG6rWj6s0DM7CIcVAFz4kK6r1j6r18M280x2IEY4vEnII2IxkI6r1a6r45M2 8IrcIa0xkI8VA2jI8067AKxVWUAVCq3wA2048vs2IY020Ec7CjxVAFwI0_Xr0E3s1l8cAv FVAK0II2c7xJM28CjxkF64kEwVA0rcxSw2x7M28EF7xvwVC0I7IYx2IY67AKxVW7JVWDJw A2z4x0Y4vE2Ix0cI8IcVCY1x0267AKxVW8Jr0_Cr1UM28EF7xvwVC2z280aVAFwI0_GcCE 3s1l84ACjcxK6I8E87Iv6xkF7I0E14v26rxl6s0DM2AIxVAIcxkEcVAq07x20xvEncxIr2 1l5I8CrVACY4xI64kE6c02F40Ex7xfMcIj6xIIjxv20xvE14v26r1j6r18McIj6I8E87Iv 67AKxVWUJVW8JwAm72CE4IkC6x0Yz7v_Jr0_Gr1lF7xvr2IYc2Ij64vIr41l42xK82IYc2 Ij64vIr41l4I8I3I0E4IkC6x0Yz7v_Jr0_Gr1lx2IqxVAqx4xG67AKxVWUJVWUGwC20s02 6x8GjcxK67AKxVWUGVWUWwC2zVAF1VAY17CE14v26r126r1DMIIYrxkI7VAKI48JMIIF0x vE2Ix0cI8IcVAFwI0_JFI_Gr1lIxAIcVC0I7IYx2IY6xkF7I0E14v26r4j6F4UMIIF0xvE 42xK8VAvwI8IcIk0rVWUJVWUCwCI42IY6I8E87Iv67AKxVWUJVW8JwCI42IY6I8E87Iv6x kF7I0E14v26r4j6r4UJbIYCTnIWIevJa73UjIFyTuYvjxUIL05UUUUU X-CM-SenderInfo: 5vklyvpphqwq5kxd4v5lfo033gof0z/ X-Stat-Signature: wrbtsaqbcphmw4d5oo9f7rtew1juf4b9 X-Rspamd-Server: rspam12 X-Rspamd-Queue-Id: 0CAFB1C0023 X-Rspam-User: X-HE-Tag: 1741867770-413588 X-HE-Meta: U2FsdGVkX1+qpPnCAqlOzWKVbSK6HIDzTk+fwSC2DoUdfWEZ+t1qRKUA/qRo3f11ZmbCxRcK7ZCtgUZQt9YahGQvwOgtxh7J4S+uTgoN4sM40cNcmPtM59KiUWtogyEAMvJ+i4NZU+pBv5oklzq0gQCbvV8+WWq3IVE1qrZCrn6+4vcK68sFs1xjGYtleZpNp2TiZpZpjDVduaUVSDj6R2qd2skD/sX3qhkfY75l0JsSwY/wDV40uvdUoLB2GjGTLRjxo3NbCxjyBcdBGeFQakhqTuRF/OS2xKLyqrJUoM/nP3mC6WYAg0TfpKwZszJYurONFbaHscxZsXP/TC+vFpHlrGs7dlgSLBnZL8n4NSxKNG6h87BaLZxxoClsttnBAh99/CcalfNkorw3Q958vbhRZVpkWgGdzKcmxHn0oFICiheriB9hLaJJBmBjvd6fPwisAQgSxhx/ifpZbtTLwiygJ5GR+Op+Dg3DhPl/2wJOHzL6fRduFcwmcLLvUdq3iAG6JEalgVINJe3sRPltB6Kvgb3UoCZzG9bAxiLLbIJMcWHtwlH4vZtQc+SqUvAr3/PovU4BPhY7NuAHE1veDRNJIo97g8d6muFzVB/VYCHKAXsuX7m4mLR/wGgiKBEpmoav2DtaJ5mpwyqHgxBjBp9WPvQdCmNsYUGvrkwzWgbYilzTkNkbwB8WRTdmQOkfG+X6uLTqTA9O6lpYOxZo7CyEBV11DD/BXuEx6ZKLHA3FdE7gxNHcrvKI2R25jC3aOgcEJsYUmzu2XycUj8Pw0km6ktGJk6knWSNSUUsBf0OLoSqp+bXtVZrK7bqhrYFBYSUyKXbb15dE1uqjbOUf5zrg9Sd8rRO43cOotKA2eCfvjRt87USghFt/nR/RpSHDp1U1TKHzokciwbZhm7OMIuhmfuo+jpo4o4lDDKlaRhv5LUIRpfgbb+CsBszScA9gJ2n/fDQkgRkmBCTdkYO JbOTo5Di +zQ7qquU1ZwYif0mG5RxB0qtsxVZm9mQLeFFO3AkOwRK2A9zQ+3f2idOcW/5cUfzt914AkFACir1AShVyNTk9NmHxIqiH75Qk7fdruZuD+jlfRU9U7kgCFh5BNFu/Y5rdtVSTufTDFgyAGDUwuGIQJJ4FhnooAUzH7DZrPKCI8D+6qsjFD8gAAneBhy1fHlkifikXw1vil18xldpIfxSbTDnNgw== 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: Replace cluster_swap_free_nr() with swap_entries_put_[map/cache]() to remove repeat code and leverage batch-remove for entries with last flag. Signed-off-by: Kemeng Shi --- mm/swapfile.c | 21 ++------------------- 1 file changed, 2 insertions(+), 19 deletions(-) diff --git a/mm/swapfile.c b/mm/swapfile.c index 343b34eb2a81..c27cf09d84a6 100644 --- a/mm/swapfile.c +++ b/mm/swapfile.c @@ -1570,21 +1570,6 @@ static void swap_entries_free(struct swap_info_struct *si, __swap_entries_free(si, ci, entry, nr_pages); } -static void cluster_swap_free_nr(struct swap_info_struct *si, - unsigned long offset, int nr_pages, - unsigned char usage) -{ - struct swap_cluster_info *ci; - unsigned long end = offset + nr_pages; - - ci = lock_cluster(si, offset); - do { - swap_entry_put_locked(si, ci, swp_entry(si->type, offset), - usage); - } while (++offset < end); - unlock_cluster(ci); -} - /* * Caller has made sure that the swap device corresponding to entry * is still around or has not been recycled. @@ -1601,7 +1586,7 @@ void swap_free_nr(swp_entry_t entry, int nr_pages) while (nr_pages) { nr = min_t(int, nr_pages, SWAPFILE_CLUSTER - offset % SWAPFILE_CLUSTER); - cluster_swap_free_nr(sis, offset, nr, 1); + swap_entries_put_map(sis, swp_entry(sis->type, offset), nr); offset += nr; nr_pages -= nr; } @@ -3632,9 +3617,7 @@ int swapcache_prepare(swp_entry_t entry, int nr) void swapcache_clear(struct swap_info_struct *si, swp_entry_t entry, int nr) { - unsigned long offset = swp_offset(entry); - - cluster_swap_free_nr(si, offset, nr, SWAP_HAS_CACHE); + swap_entries_put_cache(si, entry, nr); } struct swap_info_struct *swp_swap_info(swp_entry_t entry)