From nobody Mon Feb 9 04:23:03 2026 Received: from dggsgout11.his.huawei.com (dggsgout11.his.huawei.com [45.249.212.51]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 4A7F51F3FD9 for ; Sat, 22 Feb 2025 07:12:32 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=45.249.212.51 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740208355; cv=none; b=k1MlJFESf1qD0bkNNcqleOwdPvUnAwp2ooyoKmKb0fuX7m4mfpDNerkMOr/JVyunVCqpbm/ZAr0d2yLizqm1cNLmlB9/mWApuWxkTSLbwFCFCHWu4YXB5Z2I2kqFrloVH29e/V95xYfa1sSuqmdAXqWlYFO6NQOjAOeW3/kFKW4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740208355; c=relaxed/simple; bh=ehBW/ddWpfP0rTSUU9UzKJwjaKLEeMQ10NbELkliNE4=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=BgWLuXld4HquPBmn4RVtJAchDFe4Q2+DxTujbA+6l4aYNPkdbVE2dpOkOaQEhd8oZOB4/ugYCvRdw7MxfQI5d61BMZPvl9/69YqB0tnowI6b52AAbJpzOH6qV9RlWuk8gKWxjsY5I2qGtYfp0EcPKFUf2JvjILagbZZTo2HVOZ8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=huaweicloud.com; spf=pass smtp.mailfrom=huaweicloud.com; arc=none smtp.client-ip=45.249.212.51 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=huaweicloud.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=huaweicloud.com Received: from mail.maildlp.com (unknown [172.19.93.142]) by dggsgout11.his.huawei.com (SkyGuard) with ESMTP id 4Z0J8r2M4Jz4f3jt8 for ; Sat, 22 Feb 2025 15:12:12 +0800 (CST) Received: from mail02.huawei.com (unknown [10.116.40.75]) by mail.maildlp.com (Postfix) with ESMTP id B18C91A0359 for ; Sat, 22 Feb 2025 15:12:28 +0800 (CST) Received: from huaweicloud.com (unknown [10.175.101.6]) by APP2 (Coremail) with SMTP id Syh0CgBHBWjaeLlnrTsjEg--.26688S3; Sat, 22 Feb 2025 15:12:28 +0800 (CST) From: Kemeng Shi To: akpm@linux-foundation.org, kasong@tencent.com Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org Subject: [PATCH 1/6] mm: swap: avoid losting cluster in swap_reclaim_full_clusters() Date: Sun, 23 Feb 2025 00:08:45 +0800 Message-Id: <20250222160850.505274-2-shikemeng@huaweicloud.com> X-Mailer: git-send-email 2.30.0 In-Reply-To: <20250222160850.505274-1-shikemeng@huaweicloud.com> References: <20250222160850.505274-1-shikemeng@huaweicloud.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-CM-TRANSID: Syh0CgBHBWjaeLlnrTsjEg--.26688S3 X-Coremail-Antispam: 1UD129KBjvdXoW7GFy5Kr4fXF43Aw1fJF4xWFg_yoW3CFc_Aa 4vy348GrZ5Jw1kGr12y3yrXrZ7Krs7ZFyjgry3tFWxA34fXFs7tan7Gay2gw1rJa1DCa4r J3Z8trn3X39FkjkaLaAFLSUrUUUUjb8apTn2vfkv8UJUUUU8Yxn0WfASr-VFAUDa7-sFnT 9fnUUIcSsGvfJTRUUUbf8YFVCjjxCrM7AC8VAFwI0_Gr0_Xr1l1xkIjI8I6I8E6xAIw20E Y4v20xvaj40_Wr0E3s1l1IIY67AEw4v_Jr0_Jr4l87I20VAvwVAaII0Ic2I_JFv_Gryl82 xGYIkIc2x26280x7IE14v26r18M28IrcIa0xkI8VCY1x0267AKxVWUXVWUCwA2ocxC64kI II0Yj41l84x0c7CEw4AK67xGY2AK021l84ACjcxK6xIIjxv20xvE14v26w1j6s0DM28EF7 xvwVC0I7IYx2IY6xkF7I0E14v26r4UJVWxJr1l84ACjcxK6I8E87Iv67AKxVW0oVCq3wA2 z4x0Y4vEx4A2jsIEc7CjxVAFwI0_GcCE3s1le2I262IYc4CY6c8Ij28IcVAaY2xG8wAqx4 xG64xvF2IEw4CE5I8CrVC2j2WlYx0E2Ix0cI8IcVAFwI0_Jr0_Jr4lYx0Ex4A2jsIE14v2 6r1j6r4UMcvjeVCFs4IE7xkEbVWUJVW8JwACjcxG0xvY0x0EwIxGrwCF04k20xvY0x0EwI xGrwCFx2IqxVCFs4IE7xkEbVWUJVW8JwC20s026c02F40E14v26r1j6r18MI8I3I0E7480 Y4vE14v26r106r1rMI8E67AF67kF1VAFwI0_JF0_Jw1lIxkGc2Ij64vIr41lIxAIcVC0I7 IYx2IY67AKxVWUJVWUCwCI42IY6xIIjxv20xvEc7CjxVAFwI0_Jr0_Gr1lIxAIcVCF04k2 6cxKx2IYs7xG6r1j6r1xMIIF0xvEx4A2jsIE14v26r1j6r4UMIIF0xvEx4A2jsIEc7CjxV AFwI0_Jr0_GrUvcSsGvfC2KfnxnUUI43ZEXa7IU0a0PDUUUUU== X-CM-SenderInfo: 5vklyvpphqwq5kxd4v5lfo033gof0z/ Content-Type: text/plain; charset="utf-8" If no swap cache is reclaimed, cluster taken off from full_clusters list will not be put in any list and may not be reused. Do relocate_cluster for such cluster to fix the issue. Fixes: 3b644773eefda ("mm, swap: reduce contention on device lock") Signed-off-by: Kemeng Shi Reviewed-by: Kairui Song --- mm/swapfile.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/mm/swapfile.c b/mm/swapfile.c index 34baefb000b5..e5f58ab86329 100644 --- a/mm/swapfile.c +++ b/mm/swapfile.c @@ -861,6 +861,10 @@ static void swap_reclaim_full_clusters(struct swap_inf= o_struct *si, bool force) offset++; } =20 + /* in case no swap cache is reclaimed */ + if (ci->flags =3D=3D CLUSTER_FLAG_NONE) + relocate_cluster(si, ci); + unlock_cluster(ci); if (to_scan <=3D 0) break; --=20 2.30.0 From nobody Mon Feb 9 04:23:03 2026 Received: from dggsgout11.his.huawei.com (dggsgout11.his.huawei.com [45.249.212.51]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 4A78F1F03C1 for ; Sat, 22 Feb 2025 07:12:32 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=45.249.212.51 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740208355; cv=none; b=qIl3x/mtH5AJtc1bY5ebheDZ1vyAAtL2cJU9EZLSP1/bs2Tofmexse0NXzta29p7qTZ8aObbXmeNZoEi26tFPaDs3cGaNP+rPneYGV56h6OMwEyYcEqV7MUGnsMynd9M38FbbCj2jxfFRXnWkT/4UNuI4MY7VvJhARDJ9p4mD28= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740208355; c=relaxed/simple; bh=CAmkhd0nr7kiPjqOSP/WxIuE2J/HKvOW0Yu4KluxmmA=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=YWbCBFU/HSe0dFCBD259XRsW63k9k74tHIF2RNf6bLgEqb1SfjK102lJRV9JB7ku3jq+VoAwf6SQB1btEx9oehNkDP0Q5rpdkHzn4zOerp2P41TMbSQuXEDdzOTbPmN2i2rAGU2BY19AOyaa2N/8UVzsa+HTR3Y5+eC7szwhWV0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=huaweicloud.com; spf=none smtp.mailfrom=huaweicloud.com; arc=none smtp.client-ip=45.249.212.51 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=huaweicloud.com Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=huaweicloud.com Received: from mail.maildlp.com (unknown [172.19.93.142]) by dggsgout11.his.huawei.com (SkyGuard) with ESMTP id 4Z0J8r467dz4f3jtC for ; Sat, 22 Feb 2025 15:12:12 +0800 (CST) Received: from mail02.huawei.com (unknown [10.116.40.75]) by mail.maildlp.com (Postfix) with ESMTP id ED8541A0EE1 for ; Sat, 22 Feb 2025 15:12:28 +0800 (CST) Received: from huaweicloud.com (unknown [10.175.101.6]) by APP2 (Coremail) with SMTP id Syh0CgBHBWjaeLlnrTsjEg--.26688S4; Sat, 22 Feb 2025 15:12:28 +0800 (CST) From: Kemeng Shi To: akpm@linux-foundation.org, kasong@tencent.com Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org Subject: [PATCH 2/6] mm: swap: use correct step in loop to wait all clusters in wait_for_allocation() Date: Sun, 23 Feb 2025 00:08:46 +0800 Message-Id: <20250222160850.505274-3-shikemeng@huaweicloud.com> X-Mailer: git-send-email 2.30.0 In-Reply-To: <20250222160850.505274-1-shikemeng@huaweicloud.com> References: <20250222160850.505274-1-shikemeng@huaweicloud.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-CM-TRANSID: Syh0CgBHBWjaeLlnrTsjEg--.26688S4 X-Coremail-Antispam: 1UD129KBjvJXoW7Zr1DAFy3trW8tw4DtrWrKrg_yoW8GF4kpF n8t3ZYkFs3XrykJF4DA3ZYkry8Kw1vgFWxXFy5ur1fZwnxXrWakF1Dtr90qFyjkr1kJr90 qFZ7K34xurn0yaUanT9S1TB71UUUUU7qnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDU0xBIdaVrnRJUUUB0b4IE77IF4wAFF20E14v26r4j6ryUM7CY07I20VC2zVCF04k2 6cxKx2IYs7xG6rWj6s0DM7CIcVAFz4kK6r1j6r18M280x2IEY4vEnII2IxkI6r1a6r45M2 8IrcIa0xkI8VA2jI8067AKxVWUXwA2048vs2IY020Ec7CjxVAFwI0_JFI_Gr1l8cAvFVAK 0II2c7xJM28CjxkF64kEwVA0rcxSw2x7M28EF7xvwVC0I7IYx2IY67AKxVWDJVCq3wA2z4 x0Y4vE2Ix0cI8IcVCY1x0267AKxVW8Jr0_Cr1UM28EF7xvwVC2z280aVAFwI0_GcCE3s1l 84ACjcxK6I8E87Iv6xkF7I0E14v26rxl6s0DM2AIxVAIcxkEcVAq07x20xvEncxIr21l5I 8CrVACY4xI64kE6c02F40Ex7xfMcIj6xIIjxv20xvE14v26r1j6r18McIj6I8E87Iv67AK xVWUJVW8JwAm72CE4IkC6x0Yz7v_Jr0_Gr1lF7xvr2IYc2Ij64vIr41l42xK82IYc2Ij64 vIr41l4I8I3I0E4IkC6x0Yz7v_Jr0_Gr1lx2IqxVAqx4xG67AKxVWUJVWUGwC20s026x8G jcxK67AKxVWUGVWUWwC2zVAF1VAY17CE14v26r126r1DMIIYrxkI7VAKI48JMIIF0xvE2I x0cI8IcVAFwI0_Jr0_JF4lIxAIcVC0I7IYx2IY6xkF7I0E14v26r4j6F4UMIIF0xvE42xK 8VAvwI8IcIk0rVWUJVWUCwCI42IY6I8E87Iv67AKxVWUJVW8JwCI42IY6I8E87Iv6xkF7I 0E14v26r4j6r4UJbIYCTnIWIevJa73UjIFyTuYvjxUsmiiDUUUU X-CM-SenderInfo: 5vklyvpphqwq5kxd4v5lfo033gof0z/ Content-Type: text/plain; charset="utf-8" Use correct step in loop to wait all clusters in wait_for_allocation(). If we miss some cluster in wait_for_allocation(), use after free may occurs as following: shmem_writepage swapoff folio_alloc_swap get_swap_pages scan_swap_map_slots cluster_alloc_swap_entry alloc_swap_scan_cluster cluster_alloc_range /* SWP_WRITEOK is valid */ if (!(si->flags & SWP_WRITEOK)) ... del_from_avail_list(p, true); ... /* miss the cluster in shmem_writepage */ wait_for_allocation() ... try_to_unuse() memset(si->swap_map + start, usage, nr_pages); swap_range_alloc(si, nr_pages); ci->count +=3D nr_pages; /* return a valid entry */ ... exit_swap_address_space(p->type); ... ... add_to_swap_cache /* dereference swap_address_space(entry) which is NULL */ xas_lock_irq(&xas); Fixes: e47bd46eab97e ("mm, swap: hold a reference during scan and cleanup f= lag usage") Signed-off-by: Kemeng Shi Reviewed-by: Kairui Song --- mm/swapfile.c | 1 - 1 file changed, 1 deletion(-) diff --git a/mm/swapfile.c b/mm/swapfile.c index e5f58ab86329..425126c0a07d 100644 --- a/mm/swapfile.c +++ b/mm/swapfile.c @@ -2627,7 +2627,6 @@ static void wait_for_allocation(struct swap_info_stru= ct *si) for (offset =3D 0; offset < end; offset +=3D SWAPFILE_CLUSTER) { ci =3D lock_cluster(si, offset); unlock_cluster(ci); - offset +=3D SWAPFILE_CLUSTER; } } =20 --=20 2.30.0 From nobody Mon Feb 9 04:23:03 2026 Received: from dggsgout11.his.huawei.com (dggsgout11.his.huawei.com [45.249.212.51]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A8C7C1FCFE2 for ; Sat, 22 Feb 2025 07:12:32 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=45.249.212.51 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740208354; cv=none; b=h84HEHyoO1uYx8dMJiNzvG/F34LaiQRbHMwSImpwDU0BDUJE3aM1YGwixvtgmTS53iWy2GiC0ssS+iB/y/vVNR3eYgWZ4PCn98HT4ReQ21NewhDE+3wZu/O2BjH0fAPjaz+4suKqwPSv1MFuTwaDx9OFK4sDoc0zFsf7M176a7I= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740208354; c=relaxed/simple; bh=Mn60az/QQlpq+cUO4+lmKvt2lCoarwt3UUdR5XG1++k=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=fwJOnyT/oCIJOI99D9e7xvIApoRetxmxPlYXe33xWLiuc256oBXHPYagXDco2ibYmPE+C2vkyO0HqLl04xXApEzSsWtnznbruY6A8fIw+h2cr8EliZgKQu3VQoV0VXUBs9NDIHCXFZIxoL3fexDn4yjTMlnuomftSfMh7WZwxBI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=huaweicloud.com; spf=pass smtp.mailfrom=huaweicloud.com; arc=none smtp.client-ip=45.249.212.51 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=huaweicloud.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=huaweicloud.com Received: from mail.maildlp.com (unknown [172.19.163.235]) by dggsgout11.his.huawei.com (SkyGuard) with ESMTP id 4Z0J8k0jxwz4f3lDc for ; Sat, 22 Feb 2025 15:12:06 +0800 (CST) Received: from mail02.huawei.com (unknown [10.116.40.75]) by mail.maildlp.com (Postfix) with ESMTP id 365641A058E for ; Sat, 22 Feb 2025 15:12:29 +0800 (CST) Received: from huaweicloud.com (unknown [10.175.101.6]) by APP2 (Coremail) with SMTP id Syh0CgBHBWjaeLlnrTsjEg--.26688S5; Sat, 22 Feb 2025 15:12:29 +0800 (CST) From: Kemeng Shi To: akpm@linux-foundation.org, kasong@tencent.com Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org Subject: [PATCH 3/6] mm, swap: avoid BUG_ON in relocate_cluster() Date: Sun, 23 Feb 2025 00:08:47 +0800 Message-Id: <20250222160850.505274-4-shikemeng@huaweicloud.com> X-Mailer: git-send-email 2.30.0 In-Reply-To: <20250222160850.505274-1-shikemeng@huaweicloud.com> References: <20250222160850.505274-1-shikemeng@huaweicloud.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-CM-TRANSID: Syh0CgBHBWjaeLlnrTsjEg--.26688S5 X-Coremail-Antispam: 1UD129KBjvJXoW7Ar17GFW7JF45GrW5Cr1xZrb_yoW8XFW3pr 1fKF98tF4xtr4kGw45A3Z3JayrGw40gry5Gay3Xr1fCasxZr4xKFyvyr9avr98GF4kCa4D ZF1DKa4xuFn8A3JanT9S1TB71UUUUU7qnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDU0xBIdaVrnRJUUUB0b4IE77IF4wAFF20E14v26ryj6rWUM7CY07I20VC2zVCF04k2 6cxKx2IYs7xG6rWj6s0DM7CIcVAFz4kK6r1j6r18M280x2IEY4vEnII2IxkI6r1a6r45M2 8IrcIa0xkI8VA2jI8067AKxVWUWwA2048vs2IY020Ec7CjxVAFwI0_Gr0_Xr1l8cAvFVAK 0II2c7xJM28CjxkF64kEwVA0rcxSw2x7M28EF7xvwVC0I7IYx2IY67AKxVWDJVCq3wA2z4 x0Y4vE2Ix0cI8IcVCY1x0267AKxVW8Jr0_Cr1UM28EF7xvwVC2z280aVAFwI0_GcCE3s1l 84ACjcxK6I8E87Iv6xkF7I0E14v26rxl6s0DM2AIxVAIcxkEcVAq07x20xvEncxIr21l5I 8CrVACY4xI64kE6c02F40Ex7xfMcIj6xIIjxv20xvE14v26r1j6r18McIj6I8E87Iv67AK xVWUJVW8JwAm72CE4IkC6x0Yz7v_Jr0_Gr1lF7xvr2IYc2Ij64vIr41l42xK82IYc2Ij64 vIr41l4I8I3I0E4IkC6x0Yz7v_Jr0_Gr1lx2IqxVAqx4xG67AKxVWUJVWUGwC20s026x8G jcxK67AKxVWUGVWUWwC2zVAF1VAY17CE14v26r126r1DMIIYrxkI7VAKI48JMIIF0xvE2I x0cI8IcVAFwI0_Jr0_JF4lIxAIcVC0I7IYx2IY6xkF7I0E14v26r4j6F4UMIIF0xvE42xK 8VAvwI8IcIk0rVWUJVWUCwCI42IY6I8E87Iv67AKxVWUJVW8JwCI42IY6I8E87Iv6xkF7I 0E14v26r4j6r4UJbIYCTnIWIevJa73UjIFyTuYvjxU3G-eDUUUU X-CM-SenderInfo: 5vklyvpphqwq5kxd4v5lfo033gof0z/ Content-Type: text/plain; charset="utf-8" If allocation is racy with swapoff, we may call free_cluster for cluster already in free list and trigger bug on as following: Allocation Swapoff cluster_alloc_swap_entry ... /* may get a free cluster with offset */ offset =3D xxx; if (offset) ci =3D lock_cluster(si, offset); ... del_from_avail_list(p, true); si->flags &=3D ~SWP_WRITEOK; alloc_swap_scan_cluster(si, ci, ...) ... /* failed to alloc entry from free entry */ if (!cluster_alloc_range(...)) break; ... /* add back a free cluster */ relocate_cluster(si, ci); if (!ci->count) free_cluster(si, ci); VM_BUG_ON(ci->flags =3D=3D CLUSTER_FLAG_FREE); Despite bug_on could be triggered, call free_cluster() for free cluster only move cluster to tail of list and should be fine. Check cluster is not free before calling free_cluster() in relocate_cluster() to avoid bug_on. Fixes: 3b644773eefda ("mm, swap: reduce contention on device lock") Signed-off-by: Kemeng Shi Reviewed-by: Kairui Song --- mm/swapfile.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/mm/swapfile.c b/mm/swapfile.c index 425126c0a07d..fc45b9d56639 100644 --- a/mm/swapfile.c +++ b/mm/swapfile.c @@ -653,7 +653,8 @@ static void relocate_cluster(struct swap_info_struct *s= i, return; =20 if (!ci->count) { - free_cluster(si, ci); + if (ci->flags !=3D CLUSTER_FLAG_FREE) + free_cluster(si, ci); } else if (ci->count !=3D SWAPFILE_CLUSTER) { if (ci->flags !=3D CLUSTER_FLAG_FRAG) move_cluster(si, ci, &si->frag_clusters[ci->order], --=20 2.30.0 From nobody Mon Feb 9 04:23:03 2026 Received: from dggsgout11.his.huawei.com (dggsgout11.his.huawei.com [45.249.212.51]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A8C191FBE80 for ; Sat, 22 Feb 2025 07:12:32 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=45.249.212.51 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740208355; cv=none; b=d93u7trIa+MvHmGOvxf0tzZ45NDyU7hPQteBmoXNvdGkcSjQ68ajJMtMgKJofiv+Tg+4D6+1iVuJYbIBWXbhZJzovh645YuE7a+7nFSUqDS/RkqpIuCHkz1+0vSAzAg+8HIJ7gGs+ftN/LcuoaxaCDjIlO2++IqS8amS2LC5wN8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740208355; c=relaxed/simple; bh=M/qi547sbYwVzGNEFb6kPaPNCMKTQxSid3NaA8xXMZc=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=snY87WKvSCva2D9y1nUUj/OiluVMAinVW9XxoD1+jNpCHl0Md8bnJTYtriAUDlIHCK0P3NQQgNenRzIJrZszN1vrdkxVqQH2lKDhz0kksqxe6xsU4hjr0Zn2ZLuVHnbeaHovTer5o2A8wEvSBi531IJAUQXUEsS40K6E8yzjVjo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=huaweicloud.com; spf=pass smtp.mailfrom=huaweicloud.com; arc=none smtp.client-ip=45.249.212.51 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=huaweicloud.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=huaweicloud.com Received: from mail.maildlp.com (unknown [172.19.93.142]) by dggsgout11.his.huawei.com (SkyGuard) with ESMTP id 4Z0J8s0dfkz4f3jqM for ; Sat, 22 Feb 2025 15:12:13 +0800 (CST) Received: from mail02.huawei.com (unknown [10.116.40.75]) by mail.maildlp.com (Postfix) with ESMTP id 76D851A0EE1 for ; Sat, 22 Feb 2025 15:12:29 +0800 (CST) Received: from huaweicloud.com (unknown [10.175.101.6]) by APP2 (Coremail) with SMTP id Syh0CgBHBWjaeLlnrTsjEg--.26688S6; Sat, 22 Feb 2025 15:12:29 +0800 (CST) From: Kemeng Shi To: akpm@linux-foundation.org, kasong@tencent.com Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org Subject: [PATCH 4/6] mm, swap: remove setting SWAP_MAP_BAD for discard cluster Date: Sun, 23 Feb 2025 00:08:48 +0800 Message-Id: <20250222160850.505274-5-shikemeng@huaweicloud.com> X-Mailer: git-send-email 2.30.0 In-Reply-To: <20250222160850.505274-1-shikemeng@huaweicloud.com> References: <20250222160850.505274-1-shikemeng@huaweicloud.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-CM-TRANSID: Syh0CgBHBWjaeLlnrTsjEg--.26688S6 X-Coremail-Antispam: 1UD129KBjvJXoW7CF4ktr4rZr4kJrW5Wr47twb_yoW8XF43pF y2q3Z8KF4UJF1q9F4UZws0yry3KrW8Kr9rXa1Sqw1fC3Z8tr1fJr90ya9ayrW5GrZ5Cr9r uw4jg3y7u398tFUanT9S1TB71UUUUU7qnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDU0xBIdaVrnRJUUUB2b4IE77IF4wAFF20E14v26rWj6s0DM7CY07I20VC2zVCF04k2 6cxKx2IYs7xG6rWj6s0DM7CIcVAFz4kK6r1j6r18M280x2IEY4vEnII2IxkI6r1a6r45M2 8IrcIa0xkI8VA2jI8067AKxVWUAVCq3wA2048vs2IY020Ec7CjxVAFwI0_Gr0_Xr1l8cAv FVAK0II2c7xJM28CjxkF64kEwVA0rcxSw2x7M28EF7xvwVC0I7IYx2IY67AKxVWDJVCq3w A2z4x0Y4vE2Ix0cI8IcVCY1x0267AKxVW8Jr0_Cr1UM28EF7xvwVC2z280aVAFwI0_GcCE 3s1l84ACjcxK6I8E87Iv6xkF7I0E14v26rxl6s0DM2AIxVAIcxkEcVAq07x20xvEncxIr2 1l5I8CrVACY4xI64kE6c02F40Ex7xfMcIj6xIIjxv20xvE14v26r1j6r18McIj6I8E87Iv 67AKxVWUJVW8JwAm72CE4IkC6x0Yz7v_Jr0_Gr1lF7xvr2IYc2Ij64vIr41l42xK82IYc2 Ij64vIr41l4I8I3I0E4IkC6x0Yz7v_Jr0_Gr1lx2IqxVAqx4xG67AKxVWUJVWUGwC20s02 6x8GjcxK67AKxVWUGVWUWwC2zVAF1VAY17CE14v26r126r1DMIIYrxkI7VAKI48JMIIF0x vE2Ix0cI8IcVAFwI0_Jr0_JF4lIxAIcVC0I7IYx2IY6xkF7I0E14v26r4j6F4UMIIF0xvE 42xK8VAvwI8IcIk0rVWUJVWUCwCI42IY6I8E87Iv67AKxVWUJVW8JwCI42IY6I8E87Iv6x kF7I0E14v26r4j6r4UJbIYCTnIWIevJa73UjIFyTuYvjxU3XTQUUUUU X-CM-SenderInfo: 5vklyvpphqwq5kxd4v5lfo033gof0z/ Content-Type: text/plain; charset="utf-8" Before alloc from a cluster, we will aqcuire cluster's lock and make sure it is usable by cluster_is_usable(), so there is no need to set SWAP_MAP_BAD for cluster to be discarded. Signed-off-by: Kemeng Shi --- mm/swapfile.c | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/mm/swapfile.c b/mm/swapfile.c index fc45b9d56639..c640f77a464a 100644 --- a/mm/swapfile.c +++ b/mm/swapfile.c @@ -479,15 +479,6 @@ static void move_cluster(struct swap_info_struct *si, static void swap_cluster_schedule_discard(struct swap_info_struct *si, struct swap_cluster_info *ci) { - unsigned int idx =3D cluster_index(si, ci); - /* - * If scan_swap_map_slots() can't find a free cluster, it will check - * si->swap_map directly. To make sure the discarding cluster isn't - * taken by scan_swap_map_slots(), mark the swap entries bad (occupied). - * It will be cleared after discard - */ - memset(si->swap_map + idx * SWAPFILE_CLUSTER, - SWAP_MAP_BAD, SWAPFILE_CLUSTER); VM_BUG_ON(ci->flags =3D=3D CLUSTER_FLAG_FREE); move_cluster(si, ci, &si->discard_clusters, CLUSTER_FLAG_DISCARD); schedule_work(&si->discard_work); @@ -571,8 +562,6 @@ static bool swap_do_scheduled_discard(struct swap_info_= struct *si) * return the cluster to allocation list. */ ci->flags =3D CLUSTER_FLAG_NONE; - memset(si->swap_map + idx * SWAPFILE_CLUSTER, - 0, SWAPFILE_CLUSTER); __free_cluster(si, ci); spin_unlock(&ci->lock); ret =3D true; --=20 2.30.0 From nobody Mon Feb 9 04:23:03 2026 Received: from dggsgout11.his.huawei.com (dggsgout11.his.huawei.com [45.249.212.51]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 270C31FF7D3 for ; Sat, 22 Feb 2025 07:12:32 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=45.249.212.51 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740208355; cv=none; b=sxmoatyGLrNWHWx9mlhR/KscRDMO+xNN4uyhvCN2HR1WLDJBXigoI1nJDIHeFjWltN2LRttVofrTrmovkg5rSq/Rpj4Yha3W0WOtMnEvlDxH+y11Lq+K084/+wtSE1Z7/8c5QyVstbpWBR3vyaoYjumnWdX2vAzzqI+MKbsrSi8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740208355; c=relaxed/simple; bh=WgcPEGsOZJ+FYPFLtF/r6nXAMSBtvczQiZjJBohnE2I=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=PU2QhjsZ6FsWDJYYbB3fY0Xd4YtIO8/0u8BSt1OBCYM5KiOtYQIy+DKd1iqRDViKBWc8gDsrXrRDDgTJI7sIrGe4FSbgpTN3V8CiWmc5ZPHbD8WxCzJG1t5kKg/hKidffykCuhHQXImzWkteWj2Lvks19u7+9LK+i/md8edeRzo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=huaweicloud.com; spf=pass smtp.mailfrom=huaweicloud.com; arc=none smtp.client-ip=45.249.212.51 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=huaweicloud.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=huaweicloud.com Received: from mail.maildlp.com (unknown [172.19.163.235]) by dggsgout11.his.huawei.com (SkyGuard) with ESMTP id 4Z0J8s2fSlz4f3jtG for ; Sat, 22 Feb 2025 15:12:13 +0800 (CST) Received: from mail02.huawei.com (unknown [10.116.40.75]) by mail.maildlp.com (Postfix) with ESMTP id BB8DD1A058E for ; Sat, 22 Feb 2025 15:12:29 +0800 (CST) Received: from huaweicloud.com (unknown [10.175.101.6]) by APP2 (Coremail) with SMTP id Syh0CgBHBWjaeLlnrTsjEg--.26688S7; Sat, 22 Feb 2025 15:12:29 +0800 (CST) From: Kemeng Shi To: akpm@linux-foundation.org, kasong@tencent.com Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org Subject: [PATCH 5/6] mm, swap: correct comment in swap_usage_sub() Date: Sun, 23 Feb 2025 00:08:49 +0800 Message-Id: <20250222160850.505274-6-shikemeng@huaweicloud.com> X-Mailer: git-send-email 2.30.0 In-Reply-To: <20250222160850.505274-1-shikemeng@huaweicloud.com> References: <20250222160850.505274-1-shikemeng@huaweicloud.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-CM-TRANSID: Syh0CgBHBWjaeLlnrTsjEg--.26688S7 X-Coremail-Antispam: 1UD129KBjvdXoWrtw1DWF1rtr4UtF4kGw15Jwb_yoW3Jrc_ua 9Yqa18Gw48J3Wvyr17ur97urnrWws8AF1fWay3JFy7Gry5JF18Zr1vg39xWa4DA3Z0vrn5 Xw1vqF1qkw4kujkaLaAFLSUrUUUUjb8apTn2vfkv8UJUUUU8Yxn0WfASr-VFAUDa7-sFnT 9fnUUIcSsGvfJTRUUUbS8YFVCjjxCrM7AC8VAFwI0_Wr0E3s1l1xkIjI8I6I8E6xAIw20E Y4v20xvaj40_Wr0E3s1l1IIY67AEw4v_Jr0_Jr4l87I20VAvwVAaII0Ic2I_JFv_Gryl82 xGYIkIc2x26280x7IE14v26r126s0DM28IrcIa0xkI8VCY1x0267AKxVW8JVW5JwA2ocxC 64kIII0Yj41l84x0c7CEw4AK67xGY2AK021l84ACjcxK6xIIjxv20xvE14v26w1j6s0DM2 8EF7xvwVC0I7IYx2IY6xkF7I0E14v26r4UJVWxJr1l84ACjcxK6I8E87Iv67AKxVW0oVCq 3wA2z4x0Y4vEx4A2jsIEc7CjxVAFwI0_GcCE3s1le2I262IYc4CY6c8Ij28IcVAaY2xG8w Aqx4xG64xvF2IEw4CE5I8CrVC2j2WlYx0E2Ix0cI8IcVAFwI0_Jr0_Jr4lYx0Ex4A2jsIE 14v26r1j6r4UMcvjeVCFs4IE7xkEbVWUJVW8JwACjcxG0xvY0x0EwIxGrwCF04k20xvY0x 0EwIxGrwCFx2IqxVCFs4IE7xkEbVWUJVW8JwC20s026c02F40E14v26r1j6r18MI8I3I0E 7480Y4vE14v26r106r1rMI8E67AF67kF1VAFwI0_JF0_Jw1lIxkGc2Ij64vIr41lIxAIcV C0I7IYx2IY67AKxVWUCVW8JwCI42IY6xIIjxv20xvEc7CjxVAFwI0_Gr0_Cr1lIxAIcVCF 04k26cxKx2IYs7xG6r1j6r1xMIIF0xvEx4A2jsIE14v26r1j6r4UMIIF0xvEx4A2jsIEc7 CjxVAFwI0_Gr0_Gr1UYxBIdaVFxhVjvjDU0xZFpf9x07jyYLPUUUUU= X-CM-SenderInfo: 5vklyvpphqwq5kxd4v5lfo033gof0z/ Content-Type: text/plain; charset="utf-8" We will add si back to plist in swap_usage_sub(), just correct the wrong comment which says we will remove si from plist in swap_usage_sub(). Signed-off-by: Kemeng Shi --- mm/swapfile.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mm/swapfile.c b/mm/swapfile.c index c640f77a464a..6ff57ed23e27 100644 --- a/mm/swapfile.c +++ b/mm/swapfile.c @@ -1098,7 +1098,7 @@ static void swap_usage_sub(struct swap_info_struct *s= i, unsigned int nr_entries) =20 /* * If device is not full, and SWAP_USAGE_OFFLIST_BIT is set, - * remove it from the plist. + * add it to the plist. */ if (unlikely(val & SWAP_USAGE_OFFLIST_BIT)) add_to_avail_list(si, false); --=20 2.30.0 From nobody Mon Feb 9 04:23:03 2026 Received: from dggsgout11.his.huawei.com (dggsgout11.his.huawei.com [45.249.212.51]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 55BDB2046BD for ; Sat, 22 Feb 2025 07:12:37 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=45.249.212.51 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740208358; cv=none; b=pLjaecUOy8sA8XrRQsoEI5DLMTdqgE3Ces6Jr18phoyT4+FNl8XmYJ/hmGKoNhgNgaL9Lx/73MN2L84dvbivMMd/UkAnY2n0uvaFM1lC1zK84GUwdcMQBf3iBlOyeqf4ziutE6iPWlnNH2Id2Du2eM4ZYD3DYlIqDoed7gHnniQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740208358; c=relaxed/simple; bh=lcMarZmdIa/O8qSOvi5bh0dtceBNI8DUtJN+5aIfq2k=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=RbHRwXefXI9xVJjpu9aqr2ATTNa9RJPgjsGQzTHh8jaLCZWkVYG7YOYkHzHIfB9rFbt5BUlpNy/X6FhXkIyTrZAkcHSvSS6tCtuGtNV0plzwy5M/lVSwONE6o0RdQ9/tVp9n/OnNnSaJwvdNEfKVIM8sb2fJGHl4rbUIPNgQFTc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=huaweicloud.com; spf=pass smtp.mailfrom=huaweicloud.com; arc=none smtp.client-ip=45.249.212.51 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=huaweicloud.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=huaweicloud.com Received: from mail.maildlp.com (unknown [172.19.163.216]) by dggsgout11.his.huawei.com (SkyGuard) with ESMTP id 4Z0J8s4sQXz4f3jtC for ; Sat, 22 Feb 2025 15:12:13 +0800 (CST) Received: from mail02.huawei.com (unknown [10.116.40.75]) by mail.maildlp.com (Postfix) with ESMTP id 14F831A1402 for ; Sat, 22 Feb 2025 15:12:30 +0800 (CST) Received: from huaweicloud.com (unknown [10.175.101.6]) by APP2 (Coremail) with SMTP id Syh0CgBHBWjaeLlnrTsjEg--.26688S8; Sat, 22 Feb 2025 15:12:29 +0800 (CST) From: Kemeng Shi To: akpm@linux-foundation.org, kasong@tencent.com Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org Subject: [PATCH 6/6] mm: swap: remove stale comment of swap_reclaim_full_clusters() Date: Sun, 23 Feb 2025 00:08:50 +0800 Message-Id: <20250222160850.505274-7-shikemeng@huaweicloud.com> X-Mailer: git-send-email 2.30.0 In-Reply-To: <20250222160850.505274-1-shikemeng@huaweicloud.com> References: <20250222160850.505274-1-shikemeng@huaweicloud.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-CM-TRANSID: Syh0CgBHBWjaeLlnrTsjEg--.26688S8 X-Coremail-Antispam: 1UD129KBjvdXoW7Jr1kKrWfAF4fAr4kuw4rKrg_yoWxZFX_ua 9Yy34kGrWrG3W8Ca43C34rXrZ7Wan3Za48Ary3KFW7A343GF1xZ3WkX343W343Xw4DX34r AwsYvrn3AwnrKjkaLaAFLSUrUUUUjb8apTn2vfkv8UJUUUU8Yxn0WfASr-VFAUDa7-sFnT 9fnUUIcSsGvfJTRUUUbS8YFVCjjxCrM7AC8VAFwI0_Wr0E3s1l1xkIjI8I6I8E6xAIw20E Y4v20xvaj40_Wr0E3s1l1IIY67AEw4v_Jr0_Jr4l87I20VAvwVAaII0Ic2I_JFv_Gryl82 xGYIkIc2x26280x7IE14v26r126s0DM28IrcIa0xkI8VCY1x0267AKxVW5JVCq3wA2ocxC 64kIII0Yj41l84x0c7CEw4AK67xGY2AK021l84ACjcxK6xIIjxv20xvE14v26w1j6s0DM2 8EF7xvwVC0I7IYx2IY6xkF7I0E14v26r4UJVWxJr1l84ACjcxK6I8E87Iv67AKxVW0oVCq 3wA2z4x0Y4vEx4A2jsIEc7CjxVAFwI0_GcCE3s1le2I262IYc4CY6c8Ij28IcVAaY2xG8w Aqx4xG64xvF2IEw4CE5I8CrVC2j2WlYx0E2Ix0cI8IcVAFwI0_Jr0_Jr4lYx0Ex4A2jsIE 14v26r1j6r4UMcvjeVCFs4IE7xkEbVWUJVW8JwACjcxG0xvY0x0EwIxGrwCF04k20xvY0x 0EwIxGrwCFx2IqxVCFs4IE7xkEbVWUJVW8JwC20s026c02F40E14v26r1j6r18MI8I3I0E 7480Y4vE14v26r106r1rMI8E67AF67kF1VAFwI0_JF0_Jw1lIxkGc2Ij64vIr41lIxAIcV C0I7IYx2IY67AKxVWUCVW8JwCI42IY6xIIjxv20xvEc7CjxVAFwI0_Gr0_Cr1lIxAIcVCF 04k26cxKx2IYs7xG6r1j6r1xMIIF0xvEx4A2jsIE14v26r1j6r4UMIIF0xvEx4A2jsIEc7 CjxVAFwI0_Gr0_Gr1UYxBIdaVFxhVjvjDU0xZFpf9x07jstxDUUUUU= X-CM-SenderInfo: 5vklyvpphqwq5kxd4v5lfo033gof0z/ Content-Type: text/plain; charset="utf-8" swap_reclaim_full_clusters() has no return value now, just remove the stale comment which says swap_reclaim_full_clusters() wil return a bool value. Signed-off-by: Kemeng Shi --- mm/swapfile.c | 1 - 1 file changed, 1 deletion(-) diff --git a/mm/swapfile.c b/mm/swapfile.c index 6ff57ed23e27..dc0dc5a26a88 100644 --- a/mm/swapfile.c +++ b/mm/swapfile.c @@ -820,7 +820,6 @@ static unsigned int alloc_swap_scan_cluster(struct swap= _info_struct *si, return found; } =20 -/* Return true if reclaimed a whole cluster */ static void swap_reclaim_full_clusters(struct swap_info_struct *si, bool f= orce) { long to_scan =3D 1; --=20 2.30.0