From nobody Sat Sep 26 01:05:30 2026 Received: from mx0b-00364e01.pphosted.com (mx0b-00364e01.pphosted.com [148.163.139.74]) (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 5E2903B841F for ; Sun, 6 Sep 2026 22:29:55 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.163.139.74 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788733797; cv=none; b=iqsPh/Gxacgxzut6fkcqBcdl2W8lZZXggOww4Lo7YrGMDOYK2i3CnB9uDFzN7KdV9+4bgDnD7fsOEaFu3Pkwd3heZ4t7U34qUVeXYi8p00/HbJETkcyOmFvQKFkk5cnCGcnI1OUBSBwFFMYa8XTYNjE6vNbU29kIVIyECTpN2L4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788733797; c=relaxed/simple; bh=UHIoCpUOr80B6OIjSfLBsPGPRqzcBDnVz7IzGXpufHs=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=r3dz4u1RJnBNOsm90Tgutjnanm3tAYtaEZm/FWJrjKx0shhcc/4hzE/31xBS648gBDwiLmX5Zs0SL+kILQVabJZoBXZ5s9dKE28jOEb1RuauKQ7ntCUMzJxVq1xjbSgr7Va8seIAvfb9Ugqg3LCh8rWI+gstYAK0TKSx1e+ZnOM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=columbia.edu; spf=pass smtp.mailfrom=columbia.edu; dkim=pass (2048-bit key) header.d=columbia.edu header.i=@columbia.edu header.b=SjH1XWZz; dkim=pass (2048-bit key) header.d=columbia.edu header.i=@columbia.edu header.b=XN/EGOBL; arc=none smtp.client-ip=148.163.139.74 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=columbia.edu Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=columbia.edu Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=columbia.edu header.i=@columbia.edu header.b="SjH1XWZz"; dkim=pass (2048-bit key) header.d=columbia.edu header.i=@columbia.edu header.b="XN/EGOBL" Received: from pps.filterd (m0167077.ppops.net [127.0.0.1]) by mx0b-00364e01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 686Joq6e227664 for ; Sun, 6 Sep 2026 18:29:54 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=columbia.edu; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=pps01; bh=HKdH npaiIBGa9ZODJMzu07Ab1f2StwCUuRXZsINXD8Q=; b=SjH1XWZzpWstXiLzLxLr NtvsgTvirJXay/1MmbBZz/Xe/fwI7wKty95M3n//aAR9aKIiO8+byWzqvIda6zqp r0dfKdsWIyz7VzaFbnMD+OGsf9MXI9PAjECCq4wfSXrnwQJdk7qfN9hJ90fqLXfk W6l2VNcQ92neJ1b9vkm5EGkGZVKjDYLHaN853SyX7B78L2J7GRdEv3DzS+Wo1enP MSrxUCTaOQrhqyHT3LCjBGbADNJxRtK7gzO2rULh44SmzJiFmfLcic+AQqIAo4SF Cck2sXyMSQxFuJSZTfboMj+hbG5lfSiYp2xQCDGwCWILgOkUAfasT+bbGy4S7VPh zA== Received: from mail-qt1-f199.google.com (mail-qt1-f199.google.com [209.85.160.199]) by mx0b-00364e01.pphosted.com (PPS) with ESMTPS id 4ghepk0gf3-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Sun, 06 Sep 2026 18:29:54 -0400 (EDT) Received: by mail-qt1-f199.google.com with SMTP id d75a77b69052e-52fbe82672eso51705871cf.1 for ; Sun, 06 Sep 2026 15:29:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=columbia.edu; s=lionmail; t=1788733793; x=1789338593; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=HKdHnpaiIBGa9ZODJMzu07Ab1f2StwCUuRXZsINXD8Q=; b=XN/EGOBLvPb0YHo6jPHvI2EFzWO/i2zyy+xd7ad/ZMgAT2U6LummZWO5nPrabkANsc jMADz9YVLM6hYGoKXOYkObPZQwyxSCJLoDXnrfsOKQBUL+Oq/QctoF6YMUzk3wAcFqwN yRNtgKTWZTO509JfeIO9tKBBkOyyAxWdAyv7DUEpuhY3NLOwNBSRQvOV7Z2VUJVW0TAQ qSjvVH4FYQ+hTKqcPmSC2/ziGhB8He4lZfR6ttcq7wiT9khR949yEebvfz28mTHjFsIi aF77rdiUM8qH6gjKbOg33jNNKwtYJB4Od72qX0Vy/zW+qkV/+B++olNrSPeg6gn5eK6f e9tg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788733793; x=1789338593; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=HKdHnpaiIBGa9ZODJMzu07Ab1f2StwCUuRXZsINXD8Q=; b=IGjhXVJIk3tiwXmeN54GKTSK3w3/LrH9sqhfBeF3VZ37dOOdvAPp7N8rVCa4f1TWoO fR5Rx079qPTrtAN9/ZpbuqjC6RxrONisEtM+EfCN4S8q6NZmko9MT8h613twM2hY/nhy vX/XpCiPTOzheK4cx8bvMyDmabUjz0zkLguGxMGGI38Hr9jXbCxE4zk6KgBOf/y8Cn3Q 0KGFD1NPbFy20LlMW3iyLkDKcOYXPxnjHaCUDbNUdLXlwmkuzFJtwfXHwAFroyhKFs8z gukF84zW3uVjYJVqR5oZkwv6mSIxbpmDrKq4LK6Qjex+KxQaYeZ5Nz/FduwcbhMk1Np7 7fqA== X-Forwarded-Encrypted: i=1; AKwUvBxkmgygXiFeosmf4AVUxxsBgefrrdW2nTfpxGlUfkFftK4PpC+GDrMnhkner02YW1AXlh57xzYB3TjJkF8=@vger.kernel.org X-Gm-Message-State: AFuF++legLHQig2cJWXszExdG0Pm7uwpR07Kx+7KsvDaUqcSjLRBOZ9F xQwg12moSGObjjp3EpDYi/IxwUdL0asJw3FBjLLGpKJa12Y0hYU0vyjetDvl7iFXKtF6jS7sGEw 8Sr9jJvgMYdS+QUC9TzPTFJGhMnwTWMuRVcmTsBvfxoKHxtIs+EyO+McDrGjwrg== X-Gm-Gg: AYBFou2ZgA2vLmAz1D2I0SCkLgcExNq2UeG4CiITnrfQ5bLAt2XqKVe/BZgVsYZTNob eSLhNtTqzHpEOBSZ6jeLpk/OISPpgmpn0bMRQ2t/f/7a536BYBoVBrsolf9qhdeoR03x11RWEFN wwugQdwHlhdjRqxqgUNJOYlQlE5DGUosMvNt5/hnERblVuO++PNHthR3hZqNZU3IG2x1sx1vt5W AJKQo1BAILV4+g2AjuhV/6qDyL/tWBJyvnuAaV6AmAOmB2V/5DESBCt8B85KjcknW8l1yxDSHq4 bC5AKzUZXKXNEQK1JSd5hKWIcLNKDEmfhHTNFKxNG3gsX3dMx8lztO7mvXHZTNZ+h6s3wI6yX2G KEQvMJG0UiMVsYbpLNwqF43oP8L2NDmkbEtHjJzyhC0zBX1jF X-Received: by 2002:a05:622a:d6:b0:52d:4ea9:b3d8 with SMTP id d75a77b69052e-530547f86c0mr210852991cf.3.1788733793535; Sun, 06 Sep 2026 15:29:53 -0700 (PDT) X-Received: by 2002:a05:622a:d6:b0:52d:4ea9:b3d8 with SMTP id d75a77b69052e-530547f86c0mr210852741cf.3.1788733793118; Sun, 06 Sep 2026 15:29:53 -0700 (PDT) Received: from [127.0.1.1] (nat-128-59-176-104.net.columbia.edu. [128.59.176.104]) by smtp.gmail.com with ESMTPSA id d75a77b69052e-5305402a7b7sm73048541cf.3.2026.09.06.15.29.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 06 Sep 2026 15:29:52 -0700 (PDT) From: Tal Zussman Date: Sun, 06 Sep 2026 18:29:28 -0400 Subject: [PATCH 01/10] btrfs: tests: rename process_page_range() to process_folio_range() Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260906-btrfs-folio-conversions-v1-1-834b9d7b06f5@columbia.edu> References: <20260906-btrfs-folio-conversions-v1-0-834b9d7b06f5@columbia.edu> In-Reply-To: <20260906-btrfs-folio-conversions-v1-0-834b9d7b06f5@columbia.edu> To: David Sterba , Chris Mason Cc: "Matthew Wilcox (Oracle)" , linux-btrfs@vger.kernel.org, linux-kernel@vger.kernel.org, Tal Zussman X-Mailer: b4 0.17-dev-db0b7 X-Developer-Signature: v=1; a=ed25519-sha256; t=1788733791; l=2475; i=tz2294@columbia.edu; s=20250528; h=from:subject:message-id; bh=UHIoCpUOr80B6OIjSfLBsPGPRqzcBDnVz7IzGXpufHs=; b=pfUCaFVwyjCkzvfcd1YxXFAp3sEb+tjEvyba7nAGOpkPYOhih10JIwU/Rj75RZOw7jUA30O9k Lz9Iay/syZbBBFeGk2+SXm/+6SxrDxkadGwUyFKDW3AeQGRNA0tlsyR X-Developer-Key: i=tz2294@columbia.edu; a=ed25519; pk=BIj5KdACscEOyAC0oIkeZqLB3L94fzBnDccEooxeM5Y= X-Authority-Analysis: v=2.4 cv=Wc48rUhX c=1 sm=1 tr=0 ts=6a9de962 cx=c_pps a=WeENfcodrlLV9YRTxbY/uA==:117 a=aNLBvxxoObQFLnBXsbaGlA==:17 a=IkcTkHD0fZMA:10 a=VdqzKS8jKosA:10 a=x7bEGLp0ZPQA:10 a=A0y_DWxS2BwA:10 a=VkNPw1HP01LnGYTKEx00:22 a=Da8U98TiO7q1upZEImrf:22 a=QOCMdifcju39GKoXhKua:22 a=pFsSI43hCpC9wVlfDdoA:9 a=QEXdDO2ut3YA:10 a=kacYvNCVWA4VmyqE58fU:22 X-Proofpoint-ORIG-GUID: C-ncsAjW1K8nCfBAMI3c9R6bS4QK4-d0 X-Proofpoint-Spam-Info: AW1haW4tMjYwOTA2MDI1MiBTYWx0ZWRfX9b1jAuN9qh0q s+6vdKwNhRTxMM4jekcrI3Xp8WQLgpK9Mk1iDQjJ9hRXCJDrpWOa7hKPCNclSuwToREt2lFNRjn X2rYV7C/uY6Mwhnq2H5A4lVdaJVePZtbrnPoapusZA2I7TIJuMzY X-Proofpoint-GUID: C-ncsAjW1K8nCfBAMI3c9R6bS4QK4-d0 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwOTA2MDI1MiBTYWx0ZWRfX8xRO2/uRUpQn 8hhMqGR/qleWqjervNq7MC0QjhTi1hRaUnVjyNuLkDpND9ztHSN207Nru8piZcYPMfuGPBEW1sL z3VlIOT3bOGX9dLgf9xtQXW/xdwk8ZuNnaNNKS7C28q29T3+OE911L9YcE1baSz3bRpe2/pQSac kuSy4LSy4DEuq1GjXuu+suIfS7GCFgEgxTBLkL5M+ovRkQsaHj5wEyApS7HIY6ghYvVWtZLJiIq BsfiTI4rHPZGqfd+kejzI75w8hAG2bpkXhfqgS334PEHh0mcItF7tAZkn+IgV+cdX6ouJpEWxKB FlHgS/eghkQY1ATq5EZemOQ+qflluxL4iMmmpuQTa/0DVeiZLI3/N3bEyou3GmwEQZPxJlQ/7nK B2f/Pdb2Yf4hFlEctYiN8/+HysE4URptkwGMBFcMM+JwpGBRXPgSBPsN6LEGd761Q2nMGLHPA2N Csdv4gXVdRMX8UEAF9Q== X-Proofpoint-Virus-Version: vendor=nai engine=6900 definitions=11898 signatures=596817 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 phishscore=0 priorityscore=1501 malwarescore=0 spamscore=0 lowpriorityscore=10 bulkscore=10 suspectscore=0 clxscore=1015 adultscore=0 impostorscore=10 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2609060252 It already operates on folios. No functional change. Signed-off-by: Tal Zussman Reviewed-by: Qu Wenruo --- fs/btrfs/tests/extent-io-tests.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/fs/btrfs/tests/extent-io-tests.c b/fs/btrfs/tests/extent-io-te= sts.c index 23459cd4e503..6eb55bfb2bd4 100644 --- a/fs/btrfs/tests/extent-io-tests.c +++ b/fs/btrfs/tests/extent-io-tests.c @@ -18,8 +18,8 @@ #define PROCESS_RELEASE (1U << 1) #define PROCESS_TEST_LOCKED (1U << 2) =20 -static noinline int process_page_range(struct inode *inode, u64 start, u64= end, - unsigned long flags) +static noinline int process_folio_range(struct inode *inode, u64 start, u6= 4 end, + unsigned long flags) { int ret; struct folio_batch fbatch; @@ -221,8 +221,8 @@ static int test_find_delalloc(u32 sectorsize, u32 nodes= ize) test_start, max_bytes - 1, start, end); goto out_bits; } - if (process_page_range(inode, start, end, - PROCESS_TEST_LOCKED | PROCESS_UNLOCK)) { + if (process_folio_range(inode, start, end, + PROCESS_TEST_LOCKED | PROCESS_UNLOCK)) { test_err("there were unlocked pages in the range"); goto out_bits; } @@ -276,8 +276,8 @@ static int test_find_delalloc(u32 sectorsize, u32 nodes= ize) test_start, total_dirty - 1, start, end); goto out_bits; } - if (process_page_range(inode, start, end, - PROCESS_TEST_LOCKED | PROCESS_UNLOCK)) { + if (process_folio_range(inode, start, end, + PROCESS_TEST_LOCKED | PROCESS_UNLOCK)) { test_err("pages in range were not all locked"); goto out_bits; } @@ -317,8 +317,8 @@ static int test_find_delalloc(u32 sectorsize, u32 nodes= ize) test_start, test_start + PAGE_SIZE - 1, start, end); goto out_bits; } - if (process_page_range(inode, start, end, PROCESS_TEST_LOCKED | - PROCESS_UNLOCK)) { + if (process_folio_range(inode, start, end, PROCESS_TEST_LOCKED | + PROCESS_UNLOCK)) { test_err("pages in range were not all locked"); goto out_bits; } @@ -330,8 +330,8 @@ static int test_find_delalloc(u32 sectorsize, u32 nodes= ize) out: if (locked_page) put_page(locked_page); - process_page_range(inode, 0, total_dirty - 1, - PROCESS_UNLOCK | PROCESS_RELEASE); + process_folio_range(inode, 0, total_dirty - 1, + PROCESS_UNLOCK | PROCESS_RELEASE); iput(inode); out_root_info: btrfs_free_dummy_root(root); --=20 2.39.5 From nobody Sat Sep 26 01:05:30 2026 Received: from mx0b-00364e01.pphosted.com (mx0b-00364e01.pphosted.com [148.163.139.74]) (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 6F2933B8BBB for ; Sun, 6 Sep 2026 22:29:56 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.163.139.74 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788733798; cv=none; b=EMsgTyRD3upRX2/IMX+Xh8tw3zKJ+6EHRTpodUj7pBvLqNzgqmzlQoPbQE7PzWTm3V+dQ6Xe1QwAAboTqNCXPKvQpnbbC7D4Sz81i9cVbPMGpWW7Wv3WFC32rXUGfglUu2VZ5ptFt7XqHSh7IoYiUSivqHwlDwiDkU+hzjTxYbE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788733798; c=relaxed/simple; bh=VQrVn8A0HLSM3sgWrEf2RTYhGAJ0C9CH2J0N54TnyYE=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=J/MMM6sSzgmFF6JjdJ14SJqA6nhAYN9jG4Y0PaMymbIQBzRv06FroAjExB99bw6qom4GpUjIM1kLg+qvYGCl5fdmjJBb8M2Vl0/HxQ1q717ec0YSzhuSGD3WUDws//sVV0KXlxqMjBzZDhpsPknGZSnUUYKCjOFclOAQaN2LSTs= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=columbia.edu; spf=pass smtp.mailfrom=columbia.edu; dkim=pass (2048-bit key) header.d=columbia.edu header.i=@columbia.edu header.b=r3X7erUK; dkim=pass (2048-bit key) header.d=columbia.edu header.i=@columbia.edu header.b=5u6wqRLj; arc=none smtp.client-ip=148.163.139.74 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=columbia.edu Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=columbia.edu Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=columbia.edu header.i=@columbia.edu header.b="r3X7erUK"; dkim=pass (2048-bit key) header.d=columbia.edu header.i=@columbia.edu header.b="5u6wqRLj" Received: from pps.filterd (m0167075.ppops.net [127.0.0.1]) by mx0b-00364e01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 686KQwib305508 for ; Sun, 6 Sep 2026 18:29:55 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=columbia.edu; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=pps01; bh=4fn5 jWYflJxjCAZuByVB9tQPGJxiwJekj9vVjZtfQ4s=; b=r3X7erUKpzQl1DLAfLHX 8Krizb3VKv4gi851rovOPiLXvVxq/fXfa/tlNI/9OG053jKBJSoaDCVF9sXktSAo P0RK+wziOErCsiQ37Kxy1Tik4Lwb3zREocOb4gy3rT6f4WsZPRiepNHENGEe5zxH Vdd8UAxMvvLbVVW+rhaPrSHTD1XixP4JM3vbkH+UaQl7agpHIsXmwiSUqJPscp5l 9uA4jeQ5fqurPMg2wWb//Ylu3uEuc3ChVy9qE8ZtyuBjd4cPdZDRCMe+2cWsFFmY PKlMSKNR1r8WEDM/pTTf5Rr9pYpHjx3siMU34ITWgIqiUBeM+Oon5J4r/s5jWSat Zw== Received: from mail-qt1-f200.google.com (mail-qt1-f200.google.com [209.85.160.200]) by mx0b-00364e01.pphosted.com (PPS) with ESMTPS id 4ghf7krcp4-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Sun, 06 Sep 2026 18:29:55 -0400 (EDT) Received: by mail-qt1-f200.google.com with SMTP id d75a77b69052e-52ff59f2c47so70224351cf.1 for ; Sun, 06 Sep 2026 15:29:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=columbia.edu; s=lionmail; t=1788733794; x=1789338594; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=4fn5jWYflJxjCAZuByVB9tQPGJxiwJekj9vVjZtfQ4s=; b=5u6wqRLj2IXgBJPsrhuWcj3OC6uYJw4jte7NOOxmwb04TxmxveHt/IxexA/AIYqr4W cNVSzzY/B96Ddb1cuLVMfFmNEnzGDn2Ucyz2SjdoWSb9Aed5AdoKoDXDTDSPvmjR8lN/ RHITEkCma8KLATkLfqZJoQhkumbpt58OYnMLgj+OVpkj/svcEEKWus135+eGBfMVWYTM NEm5kUZE3JORhqEEBjLSZuUkt+reRhkc/O5IS39oxBsPgM8m2fSeg/3ci3CNoDgoX3UI m1S42WGf1a8XIMz3+ibtXyMUMUzxKzGTWFrPtVEV3gJtSeR7265832ya/DyW9b8T7XMw qtFA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788733794; x=1789338594; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=4fn5jWYflJxjCAZuByVB9tQPGJxiwJekj9vVjZtfQ4s=; b=dINTUXeeCnMxnUpjOAUkEzfz4N+T74mb1alLdX8NVvgoXNA4R685+lw2G05C7y4VDg ZJAhmfBt7H/Xla0lU0xuiWcC7221OuaNF1I5vglOLVks0HyLLc64gjgt5ohEsRWyokpz u6wyPxbxE5vNSAolTz9N2jBSJywYU0U14E1AG4VPAvLSQCJYX4s+OgbWxUJPSf4KZgTO j9/KR55xQFAqfVcXnnFVIoGLATrXj5/YH7k0Eo/KOQioSVANvctxJDeoO8F2/vascnoC g8wLpKMD7BkSFKEDGXmt4t67q05to1D0ZxzIXd6NFEP5b9jwxQvdRIyeVmmm4vH0Jxth kjwA== X-Forwarded-Encrypted: i=1; AKwUvBx2m8MYZuD9i66dSYxk3VdH26dmQt57F1sHBXVa2j2oIV10yCHcwj9/wM7voKjjD/86Ex6EX03ZcOCn+g8=@vger.kernel.org X-Gm-Message-State: AFuF++nD1ZMN1YmHB9s1QuV9quumxfp3YvJqpsRAjwNBqG/H695nPX6o YxIGF/pkSbTcgtiNg7ApV9Zu3h/9PFoE2bjfO/HGnXOe8IMywwVUXjIuSYZtRPILTbwBLH9a9GS zXEwW7KLxPI+yF2DL84ftjNtI051y76DD/xhCr15bE/31wvF6mhgGGn8qiVICLg== X-Gm-Gg: AYBFou0uUpfFlQ53bwp4DgTGjrXS8VLgTII9D/qBHg7VKP8IairBzaVqxSlPz4NsXxs AT0sMX2JeSoABQYhCgwlekV4QccTqNjwc65U0bnFfHHA6CQkInTB4c3JOrNvE7spr5RYl7T3mbS 87o/QGVGYsyvujuWjPvE8IRaG66sJ5V7iJUmWGWHlZbSVW6uBZhdws0zRrQfknVbdWrK73sIpgk TdfNWLkOEUt1N9tNrpGi9ZtLw7uNjWrl7BORtByxIxyTq6EBLisMsZRsYrfl2i8n+LxLBF6jlnK Bw9oGX+h+z/ptwb9F/0VJk2WgmleJuI66dXSuwmlxap0yoyLnUtwS+HR05V2oXaT1NFsZLUYDLT uGqIKfukf096g6Xh0F/f7pg6PNM5dwuEsEtJWBxV+MGIvrKKX X-Received: by 2002:a05:622a:1183:b0:52f:b372:2ef9 with SMTP id d75a77b69052e-53056214cd5mr137333981cf.20.1788733794507; Sun, 06 Sep 2026 15:29:54 -0700 (PDT) X-Received: by 2002:a05:622a:1183:b0:52f:b372:2ef9 with SMTP id d75a77b69052e-53056214cd5mr137333731cf.20.1788733794047; Sun, 06 Sep 2026 15:29:54 -0700 (PDT) Received: from [127.0.1.1] (nat-128-59-176-104.net.columbia.edu. [128.59.176.104]) by smtp.gmail.com with ESMTPSA id d75a77b69052e-5305402a7b7sm73048541cf.3.2026.09.06.15.29.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 06 Sep 2026 15:29:53 -0700 (PDT) From: Tal Zussman Date: Sun, 06 Sep 2026 18:29:29 -0400 Subject: [PATCH 02/10] btrfs: tests: convert test_find_delalloc() to use folios Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260906-btrfs-folio-conversions-v1-2-834b9d7b06f5@columbia.edu> References: <20260906-btrfs-folio-conversions-v1-0-834b9d7b06f5@columbia.edu> In-Reply-To: <20260906-btrfs-folio-conversions-v1-0-834b9d7b06f5@columbia.edu> To: David Sterba , Chris Mason Cc: "Matthew Wilcox (Oracle)" , linux-btrfs@vger.kernel.org, linux-kernel@vger.kernel.org, Tal Zussman X-Mailer: b4 0.17-dev-db0b7 X-Developer-Signature: v=1; a=ed25519-sha256; t=1788733791; l=8260; i=tz2294@columbia.edu; s=20250528; h=from:subject:message-id; bh=VQrVn8A0HLSM3sgWrEf2RTYhGAJ0C9CH2J0N54TnyYE=; b=uZfatUhPgayb3I/w342KTZATxSJcDNIgJLpkescgYGiYBaqgRgOcFrOdnsubisdYVUlZVqfXW fSPA83o7InGCqNCveEP9MFkqTr/h4TxeVic/DT/caNnhEwZbhrXNnlU X-Developer-Key: i=tz2294@columbia.edu; a=ed25519; pk=BIj5KdACscEOyAC0oIkeZqLB3L94fzBnDccEooxeM5Y= X-Proofpoint-ORIG-GUID: seOmKwlPHp5LK6vopqt2OTtXY0CjXWb1 X-Authority-Analysis: v=2.4 cv=RrD16imK c=1 sm=1 tr=0 ts=6a9de963 cx=c_pps a=JbAStetqSzwMeJznSMzCyw==:117 a=aNLBvxxoObQFLnBXsbaGlA==:17 a=IkcTkHD0fZMA:10 a=VdqzKS8jKosA:10 a=x7bEGLp0ZPQA:10 a=A0y_DWxS2BwA:10 a=VkNPw1HP01LnGYTKEx00:22 a=Da8U98TiO7q1upZEImrf:22 a=HpS3TJQ9O3Ob1ozEcmik:22 a=GGKBf0zGomX5QsxccnIA:9 a=QEXdDO2ut3YA:10 a=uxP6HrT_eTzRwkO_Te1X:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwOTA2MDI1MiBTYWx0ZWRfXwcGEHCByah7D v2RpBT6BNzltJD914SXNzg6B2feXfSu3HYXhuXTfezMSHz6zvabx9j+Wz4XqBzKzSuJNBleLhQY vNEsxOAVQySBjH9e3k/+6hw+i+5x/9sCNXlxBEolBwulj9WCLNWHECvi8RKt2O14SwdeUxzKZu/ ovq5SHUYOkaXG/Paj0/PHX9Uuu3aUv8w0S/JYFAVsiKDVNQHHdTKpf7wKNwV0L2qdxhJ4MdsWaf UDVvFqVJsRzVSZ2MoxjQsRoIN+ytP/teGMnnrptuPEvYzJLhwMPMvy7WwgaHjzGwXg5aMeSwjsf iNRUXlR0+mATvfKqPBPgaQSiO1CQ6DGcT3p/sX/d5DM6oc0h9Vr31CVuNq/5KsPULWdtUN97ElF OsktcxaYoV9DBXWYyV+7V0RnsGRWAfVKTAjesz76C2JcWEFslR+vhlQiDmPymi8Pff3U6VNwEhH Sa8ytfsofMdQzEAjSfw== X-Proofpoint-GUID: seOmKwlPHp5LK6vopqt2OTtXY0CjXWb1 X-Proofpoint-Spam-Info: AW1haW4tMjYwOTA2MDI1MiBTYWx0ZWRfX1q0Rzcxiw6CG ayt4miO6yB5/mwB2tCY6ZJgyGAq762Yv6tUA9Qn3deQc4jDUe90j6A6yV5cOfwNptTSLRHZJhLc JuSgoatMFFqMfqxJSdLFvQp0pPzwDCuueDOfd9Mw4CqO36nMaZD2 X-Proofpoint-Virus-Version: vendor=nai engine=6900 definitions=11898 signatures=596817 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=10 suspectscore=0 phishscore=0 bulkscore=10 priorityscore=1501 adultscore=0 clxscore=1015 malwarescore=0 lowpriorityscore=10 spamscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2609060252 This removes the last btrfs callers of find_or_create_page(), find_lock_page(), SetPageDirty(), ClearPageDirty(), and get_page(), and 15 calls to compound_head(). The folio lookups return an ERR_PTR instead of NULL, so adjust the error handling. Update the comments and test messages accordingly. Signed-off-by: Tal Zussman --- fs/btrfs/tests/extent-io-tests.c | 94 ++++++++++++++++++++----------------= ---- 1 file changed, 46 insertions(+), 48 deletions(-) diff --git a/fs/btrfs/tests/extent-io-tests.c b/fs/btrfs/tests/extent-io-te= sts.c index 6eb55bfb2bd4..3056dd934b54 100644 --- a/fs/btrfs/tests/extent-io-tests.c +++ b/fs/btrfs/tests/extent-io-tests.c @@ -112,8 +112,8 @@ static int test_find_delalloc(u32 sectorsize, u32 nodes= ize) struct btrfs_root *root =3D NULL; struct inode *inode =3D NULL; struct extent_io_tree *tmp; - struct page *page; - struct page *locked_page =3D NULL; + struct folio *folio; + struct folio *locked_folio =3D NULL; /* In this test we need at least 2 file extents at its maximum size */ u64 max_bytes =3D BTRFS_MAX_EXTENT_SIZE; u64 total_dirty =3D 2 * max_bytes; @@ -152,23 +152,24 @@ static int test_find_delalloc(u32 sectorsize, u32 nod= esize) btrfs_extent_io_tree_init(NULL, tmp, IO_TREE_SELFTEST); =20 /* - * First go through and create and mark all of our pages dirty, we pin - * everything to make sure our pages don't get evicted and screw up our + * First go through and create and mark all of our folios dirty, we pin + * everything to make sure our folios don't get evicted and screw up our * test. */ for (pgoff_t index =3D 0; index < (total_dirty >> PAGE_SHIFT); index++) { - page =3D find_or_create_page(inode->i_mapping, index, GFP_KERNEL); - if (!page) { - test_err("failed to allocate test page"); - ret =3D -ENOMEM; + folio =3D __filemap_get_folio(inode->i_mapping, index, + FGP_LOCK | FGP_ACCESSED | FGP_CREAT, GFP_KERNEL); + if (IS_ERR(folio)) { + test_err("failed to allocate test folio"); + ret =3D PTR_ERR(folio); goto out; } - SetPageDirty(page); + folio_set_dirty(folio); if (index) { - unlock_page(page); + folio_unlock(folio); } else { - get_page(page); - locked_page =3D page; + folio_get(folio); + locked_folio =3D folio; } } =20 @@ -179,8 +180,7 @@ static int test_find_delalloc(u32 sectorsize, u32 nodes= ize) btrfs_set_extent_bit(tmp, 0, sectorsize - 1, EXTENT_DELALLOC, NULL); start =3D 0; end =3D start + PAGE_SIZE - 1; - found =3D find_lock_delalloc_range(inode, page_folio(locked_page), &start, - &end); + found =3D find_lock_delalloc_range(inode, locked_folio, &start, &end); if (!found) { test_err("should have found at least one delalloc"); goto out_bits; @@ -191,8 +191,8 @@ static int test_find_delalloc(u32 sectorsize, u32 nodes= ize) goto out_bits; } btrfs_unlock_extent(tmp, start, end, NULL); - unlock_page(locked_page); - put_page(locked_page); + folio_unlock(locked_folio); + folio_put(locked_folio); =20 /* * Test this scenario @@ -201,17 +201,17 @@ static int test_find_delalloc(u32 sectorsize, u32 nod= esize) * |--- search ---| */ test_start =3D SZ_64M; - locked_page =3D find_lock_page(inode->i_mapping, - test_start >> PAGE_SHIFT); - if (!locked_page) { - test_err("couldn't find the locked page"); + locked_folio =3D filemap_lock_folio(inode->i_mapping, + test_start >> PAGE_SHIFT); + if (IS_ERR(locked_folio)) { + test_err("couldn't find the locked folio"); + locked_folio =3D NULL; goto out_bits; } btrfs_set_extent_bit(tmp, sectorsize, max_bytes - 1, EXTENT_DELALLOC, NUL= L); start =3D test_start; end =3D start + PAGE_SIZE - 1; - found =3D find_lock_delalloc_range(inode, page_folio(locked_page), &start, - &end); + found =3D find_lock_delalloc_range(inode, locked_folio, &start, &end); if (!found) { test_err("couldn't find delalloc in our range"); goto out_bits; @@ -223,12 +223,12 @@ static int test_find_delalloc(u32 sectorsize, u32 nod= esize) } if (process_folio_range(inode, start, end, PROCESS_TEST_LOCKED | PROCESS_UNLOCK)) { - test_err("there were unlocked pages in the range"); + test_err("there were unlocked folios in the range"); goto out_bits; } btrfs_unlock_extent(tmp, start, end, NULL); - /* locked_page was unlocked above */ - put_page(locked_page); + /* locked_folio was unlocked above */ + folio_put(locked_folio); =20 /* * Test this scenario @@ -236,16 +236,16 @@ static int test_find_delalloc(u32 sectorsize, u32 nod= esize) * |--- search ---| */ test_start =3D max_bytes + sectorsize; - locked_page =3D find_lock_page(inode->i_mapping, test_start >> - PAGE_SHIFT); - if (!locked_page) { - test_err("couldn't find the locked page"); + locked_folio =3D filemap_lock_folio(inode->i_mapping, + test_start >> PAGE_SHIFT); + if (IS_ERR(locked_folio)) { + test_err("couldn't find the locked folio"); + locked_folio =3D NULL; goto out_bits; } start =3D test_start; end =3D start + PAGE_SIZE - 1; - found =3D find_lock_delalloc_range(inode, page_folio(locked_page), &start, - &end); + found =3D find_lock_delalloc_range(inode, locked_folio, &start, &end); if (found) { test_err("found range when we shouldn't have"); goto out_bits; @@ -265,8 +265,7 @@ static int test_find_delalloc(u32 sectorsize, u32 nodes= ize) btrfs_set_extent_bit(tmp, max_bytes, total_dirty - 1, EXTENT_DELALLOC, NU= LL); start =3D test_start; end =3D start + PAGE_SIZE - 1; - found =3D find_lock_delalloc_range(inode, page_folio(locked_page), &start, - &end); + found =3D find_lock_delalloc_range(inode, locked_folio, &start, &end); if (!found) { test_err("didn't find our range"); goto out_bits; @@ -278,36 +277,35 @@ static int test_find_delalloc(u32 sectorsize, u32 nod= esize) } if (process_folio_range(inode, start, end, PROCESS_TEST_LOCKED | PROCESS_UNLOCK)) { - test_err("pages in range were not all locked"); + test_err("folios in range were not all locked"); goto out_bits; } btrfs_unlock_extent(tmp, start, end, NULL); =20 /* - * Now to test where we run into a page that is no longer dirty in the + * Now to test where we run into a folio that is no longer dirty in the * range we want to find. */ - page =3D find_get_page(inode->i_mapping, - (max_bytes + SZ_1M) >> PAGE_SHIFT); - if (!page) { - test_err("couldn't find our page"); + folio =3D filemap_get_folio(inode->i_mapping, + (max_bytes + SZ_1M) >> PAGE_SHIFT); + if (IS_ERR(folio)) { + test_err("couldn't find our folio"); goto out_bits; } - ClearPageDirty(page); - put_page(page); + folio_clear_dirty(folio); + folio_put(folio); =20 /* We unlocked it in the previous test */ - lock_page(locked_page); + folio_lock(locked_folio); start =3D test_start; end =3D start + PAGE_SIZE - 1; /* - * Currently if we fail to find dirty pages in the delalloc range we + * Currently if we fail to find dirty folios in the delalloc range we * will adjust max_bytes down to PAGE_SIZE and then re-search. If * this changes at any point in the future we will need to fix this * tests expected behavior. */ - found =3D find_lock_delalloc_range(inode, page_folio(locked_page), &start, - &end); + found =3D find_lock_delalloc_range(inode, locked_folio, &start, &end); if (!found) { test_err("didn't find our range"); goto out_bits; @@ -319,7 +317,7 @@ static int test_find_delalloc(u32 sectorsize, u32 nodes= ize) } if (process_folio_range(inode, start, end, PROCESS_TEST_LOCKED | PROCESS_UNLOCK)) { - test_err("pages in range were not all locked"); + test_err("folios in range were not all locked"); goto out_bits; } ret =3D 0; @@ -328,8 +326,8 @@ static int test_find_delalloc(u32 sectorsize, u32 nodes= ize) dump_extent_io_tree(tmp); btrfs_clear_extent_bit(tmp, 0, total_dirty - 1, (unsigned)-1, NULL); out: - if (locked_page) - put_page(locked_page); + if (locked_folio) + folio_put(locked_folio); process_folio_range(inode, 0, total_dirty - 1, PROCESS_UNLOCK | PROCESS_RELEASE); iput(inode); --=20 2.39.5 From nobody Sat Sep 26 01:05:30 2026 Received: from mx0b-00364e01.pphosted.com (mx0b-00364e01.pphosted.com [148.163.139.74]) (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 D7C0F3BE161 for ; Sun, 6 Sep 2026 22:29:56 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.163.139.74 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788733798; cv=none; b=bFf6GVLt4CfM5XWNq2VmnjIqfiVC/N/uHltN3qCS/mspH55uD6GXjI68AT5JmoAtP1iu3WXs7sTIsyjgco0Eg0S0mcjOjxc6GD8XWbDzOHakxKkHbnDy0CXrNt2nHDI1s4cMBgWB5PUNZj7Fes1eA5nks4aJEnS1HQPjXZqWQy0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788733798; c=relaxed/simple; bh=Hkc9N/wQnPcy5buqwz6C0KvUQNctJoFaOYafrURHzho=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=G3ZJgamLa7W87GQFMyWlG37/mLccXJkApT6a43ru/gsThBu0vOKQ2TtneVAt6Fog3HuWjY0JB6mUpyVauiXBUiTBgkGfWseXh1HS36JumPXUnDxqNk+ewM/iGrffIxm3LgW5hmD6BvcxWk+5Ll49rBu1sG8Z/vBx8b/L2ugBKBA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=columbia.edu; spf=pass smtp.mailfrom=columbia.edu; dkim=pass (2048-bit key) header.d=columbia.edu header.i=@columbia.edu header.b=Dju04wNc; dkim=pass (2048-bit key) header.d=columbia.edu header.i=@columbia.edu header.b=GG/lBvVG; arc=none smtp.client-ip=148.163.139.74 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=columbia.edu Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=columbia.edu Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=columbia.edu header.i=@columbia.edu header.b="Dju04wNc"; dkim=pass (2048-bit key) header.d=columbia.edu header.i=@columbia.edu header.b="GG/lBvVG" Received: from pps.filterd (m0167073.ppops.net [127.0.0.1]) by mx0b-00364e01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 686KY8Fn439540 for ; Sun, 6 Sep 2026 18:29:56 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=columbia.edu; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=pps01; bh=KC9I uSFqPl2DT5AtFsBj64BwQeweoIQ/q7eyjkLDXpk=; b=Dju04wNcmnCDsyALxLYg e/ZsiP4lJ5+iN4XqUgNZrKyLkIVYi96HAjhBEkSHvsgzy7hXH32HwEwINO9FeeJP VARsqPIcSQvlULQxkDyQD4X2AObqnj1ftHqw9u7LcD4JeLhLDD0WkB1gremLpYXu DIB6jciiF+8y04JCzViePOz9HIqoOPxH6duqmWwkW7WFJzzSQLdtgMKUscYjFBRE j1lod/a+4qm9b1MJV12nC0khHPYPUe64RQWTAqjYmeYQ32sVON5E7QvfFpoO8tR5 +OcLTR/8QWqsDmJjhjYmWaM8BTdPP6dnLmdhwYN4cSNUqvuTpjqtPebWOV3Y/jwb PA== Received: from mail-qt1-f200.google.com (mail-qt1-f200.google.com [209.85.160.200]) by mx0b-00364e01.pphosted.com (PPS) with ESMTPS id 4ghfawrbtg-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Sun, 06 Sep 2026 18:29:55 -0400 (EDT) Received: by mail-qt1-f200.google.com with SMTP id d75a77b69052e-5283df62d68so53352591cf.0 for ; Sun, 06 Sep 2026 15:29:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=columbia.edu; s=lionmail; t=1788733795; x=1789338595; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=KC9IuSFqPl2DT5AtFsBj64BwQeweoIQ/q7eyjkLDXpk=; b=GG/lBvVG4RRo2Lm/nu+aouq4Xajo0iEqnWzxTySJZDiTjabkER8oGmntkZNiBx65tM hia9Mj1irw77GDfW/R7ihlInumHYtY1477WsvvE/209HNyVpppOL1FyJh6nUzANN/Q0I s1ooF4YekFOxrqjPDvoJwPan8Rt3tmXOfXC+KTYK/0OSnzkVxjkVSUD1d6x7ckCe098Z JA5OgH6xRqVxYO/yKHadW5/XyrzKbD5ITGg06roACER0sD8Dui6LAXn9umBvWE3MNft6 5cUjmcJfSx7gYkv++NF0HPjDAuKt+bWgcW7HgmHIUeC9RR1EPdChFegisAMP/gEzs62t XYVg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788733795; x=1789338595; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=KC9IuSFqPl2DT5AtFsBj64BwQeweoIQ/q7eyjkLDXpk=; b=H7WH0qNVO5mWOdJDdpfDpRDoB8msoXGVzAPPP3+rRNUQkQd2qCusJsIK5cdtMdSFk1 y5kI//kP9DeAIBxDaEz0tefHfwJNoMV7xlhIJGCURstJPemeFAaV1cFDmGjwNfyPgiU6 drlhvvJMbCNwcNv8mXGsBBO+9VE0EsUPrqfnOFkEPxtuvbSBHTpfvmVaSP+2CnNn4Mqz dqNCxs0O8B6a503j41Rc9FX4ZAm1lQipLo19AvScVkd0hIU5MP+GJK7rBhcX9IwwlUfl MV11mAbrLi32Nf/3kQo+IMRSrcqtYY/k56MYboAh4PRXDkxZ7bR0wrtnvX0BkY02yF0v c7Dw== X-Forwarded-Encrypted: i=1; AKwUvBw/8VtUa4VjYor+IX4g4YXU8+V08kgx42dg5NCBOlmE8HOF6vQJkx3Cf9V7ZJWHppHQM6LFPuBUAHAVHQI=@vger.kernel.org X-Gm-Message-State: AFuF++nRTtJuxAmD04VTKG6CNNThafl/NKzg41S02PI2Ycte1DmDzfQD MRHQu4E1OCaTbFWRzBq6A3kdsg2tcMUaYuRWJxkY1u4ubuojgdkgaJlNfGQ16YWOv3/03wie4q/ vU6Bi3lzAQBVGanBlCNpXZ2QwmPxgGCNLU7vzxX6g17JdrdxqcnvH6b3pdYyqZaaF4Lzeys8H X-Gm-Gg: AYBFou1V/B44zBwIa388qLXIVv3zuinrbTpfCQo1A0HKOvZhOlShrkv/j9X+vsB/MIG Wk5X7kAQXEy7i85crJwUNur71m9QLPlOu3Vi8Hoa6+8w7+k6CrC7iZUDbi2BlZJ3GIHBhIrGdjq mlatKmU0k+SOasCON6q5/tdEilb8Y7uD0bTMXzm/vQ02GUdMLGIHLAo6Mp4F1XiFzNCbH3+JzIs zhbNgWD6jnD8+P1Jr0qKtpe0pIBmyJWOyJkFdBaBYVQKergfbqtEp2xfNjMMvRHFHriTPoiz1dp QCh6UqTki5+awisicIN8oDCSbKZ5gw9uWFYPB6RyiNRTNHgQs4TY/3gUJiMa+PhohdEO1bj5ajm Fkwm0byN89GL3F5i1al4ewq8GZsM/Qtc/ECKT9wmjJ2lOV4Nn X-Received: by 2002:a05:622a:6203:b0:51c:f3:34e3 with SMTP id d75a77b69052e-53054962126mr222231771cf.28.1788733795270; Sun, 06 Sep 2026 15:29:55 -0700 (PDT) X-Received: by 2002:a05:622a:6203:b0:51c:f3:34e3 with SMTP id d75a77b69052e-53054962126mr222231461cf.28.1788733794785; Sun, 06 Sep 2026 15:29:54 -0700 (PDT) Received: from [127.0.1.1] (nat-128-59-176-104.net.columbia.edu. [128.59.176.104]) by smtp.gmail.com with ESMTPSA id d75a77b69052e-5305402a7b7sm73048541cf.3.2026.09.06.15.29.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 06 Sep 2026 15:29:54 -0700 (PDT) From: Tal Zussman Date: Sun, 06 Sep 2026 18:29:30 -0400 Subject: [PATCH 03/10] btrfs: tests: use eb folio helpers in extent buffer memory checks Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260906-btrfs-folio-conversions-v1-3-834b9d7b06f5@columbia.edu> References: <20260906-btrfs-folio-conversions-v1-0-834b9d7b06f5@columbia.edu> In-Reply-To: <20260906-btrfs-folio-conversions-v1-0-834b9d7b06f5@columbia.edu> To: David Sterba , Chris Mason Cc: "Matthew Wilcox (Oracle)" , linux-btrfs@vger.kernel.org, linux-kernel@vger.kernel.org, Tal Zussman X-Mailer: b4 0.17-dev-db0b7 X-Developer-Signature: v=1; a=ed25519-sha256; t=1788733791; l=2030; i=tz2294@columbia.edu; s=20250528; h=from:subject:message-id; bh=Hkc9N/wQnPcy5buqwz6C0KvUQNctJoFaOYafrURHzho=; b=zyP1Otl9DtQs1g8FRbFXY4ZcLAv4fMzrlgC+7GqkKpwLKAjzopBK74GyXn46YYwn9IXfcdhfu 7vtAK9PsZA4CPe6zooKDIIBXIap8HX5liFoDR7ysbK00hm0CBEZOxj5 X-Developer-Key: i=tz2294@columbia.edu; a=ed25519; pk=BIj5KdACscEOyAC0oIkeZqLB3L94fzBnDccEooxeM5Y= X-Proofpoint-GUID: KqXH6DgZlYztGtKCyzk3UwD_oTX2qnVr X-Proofpoint-Spam-Info: AW1haW4tMjYwOTA2MDI1MiBTYWx0ZWRfXxTY3YUX64Lsj MtXW26CxtYLg8bcwZH6DkDn4uf372QHAdZofG1E28Rc40Q1u+Kk0b5jRN7kky/2XNhJBAHqgIhk VOvzC65vwK6ppozNjPrftknip3CzSEGhLU19hORpOp4RuwEypM9r X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwOTA2MDI1MiBTYWx0ZWRfX8klC+AieB3Pd b0IoXXgKeYM6ta/DHKbklTlClAci1MinpS7VGkgWlBK56P13ThCRwZ1HXiQSu/plZOpytUqZmm1 BD4+ioyWYvRktQbX6HHkcLuc2Lq/CKyXoyf9kRLriYYogyrdTAaPaGoPPsOFabM2NeNJnNwffvY Y8wnh/OJM5f4Zm1RDEZlOTIpYxah/gXND4d7ap7SLxZ8uvgp+9SErIFQkqPVqubrqsvrg9WknLt 4O9suC0vIzoHTguCBcLTpoWe+U9PWl2kcihmzxyNhb8y1TDG0xPbmEwNAi0tK+aof2TG+1YKq+V h5XDtP8RsMz9PHijtl/87k7l+rC+TnERV3pWmYg7e9aKq8tdsZg+q5fHytuScpjTHBr3nC9b+P2 DS3vJzKHKnYUF89lieh13ZQp6AN4isXlP2lMPwIc8XZXNWMGDB/RBtMmMb8GSv0RVIgTPLpxY6s cNdIZdCwMxqx2J2qVwg== X-Proofpoint-ORIG-GUID: KqXH6DgZlYztGtKCyzk3UwD_oTX2qnVr X-Authority-Analysis: v=2.4 cv=bvd8wkai c=1 sm=1 tr=0 ts=6a9de963 cx=c_pps a=JbAStetqSzwMeJznSMzCyw==:117 a=aNLBvxxoObQFLnBXsbaGlA==:17 a=IkcTkHD0fZMA:10 a=VdqzKS8jKosA:10 a=x7bEGLp0ZPQA:10 a=A0y_DWxS2BwA:10 a=VkNPw1HP01LnGYTKEx00:22 a=Da8U98TiO7q1upZEImrf:22 a=jHxIr1HyPKZ_Q5_91PL3:22 a=5XjfI53T0xRJ3RmVdd8A:9 a=QEXdDO2ut3YA:10 a=uxP6HrT_eTzRwkO_Te1X:22 X-Proofpoint-Virus-Version: vendor=nai engine=6900 definitions=11898 signatures=596817 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 lowpriorityscore=10 malwarescore=0 clxscore=1015 priorityscore=1501 suspectscore=0 impostorscore=10 phishscore=0 spamscore=0 adultscore=0 bulkscore=10 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2609060252 dump_eb_and_memory_contents() and verify_eb_and_memory() hardcode one page per folio instead of using get_eb_folio_index() and get_eb_offset_in_folio() like the rest of the extent buffer code. Use the helpers and folio_address(). This removes the last struct page usage in the file. No functional change. The tests only run with sectorsize =3D=3D PAGE_SIZE, and the test extent buffers are backed by order-0 folios. Assisted-by: Claude:claude-fable-5-1 Signed-off-by: Tal Zussman Reviewed-by: Qu Wenruo --- fs/btrfs/tests/extent-io-tests.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/fs/btrfs/tests/extent-io-tests.c b/fs/btrfs/tests/extent-io-te= sts.c index 3056dd934b54..7a68b321608e 100644 --- a/fs/btrfs/tests/extent-io-tests.c +++ b/fs/btrfs/tests/extent-io-tests.c @@ -669,8 +669,9 @@ static void dump_eb_and_memory_contents(struct extent_b= uffer *eb, void *memory, const char *test_name) { for (int i =3D 0; i < eb->len; i++) { - struct page *page =3D folio_page(eb->folios[i >> PAGE_SHIFT], 0); - void *addr =3D page_address(page) + offset_in_page(i); + const unsigned long idx =3D get_eb_folio_index(eb, i); + void *addr =3D folio_address(eb->folios[idx]) + + get_eb_offset_in_folio(eb, i); =20 if (memcmp(addr, memory + i, 1) !=3D 0) { test_err("%s failed", test_name); @@ -685,9 +686,12 @@ static int verify_eb_and_memory(struct extent_buffer *= eb, void *memory, const char *test_name) { for (int i =3D 0; i < (eb->len >> PAGE_SHIFT); i++) { - void *eb_addr =3D folio_address(eb->folios[i]); + const unsigned long offset =3D i << PAGE_SHIFT; + const unsigned long idx =3D get_eb_folio_index(eb, offset); + void *eb_addr =3D folio_address(eb->folios[idx]) + + get_eb_offset_in_folio(eb, offset); =20 - if (memcmp(memory + (i << PAGE_SHIFT), eb_addr, PAGE_SIZE) !=3D 0) { + if (memcmp(memory + offset, eb_addr, PAGE_SIZE) !=3D 0) { dump_eb_and_memory_contents(eb, memory, test_name); return -EUCLEAN; } --=20 2.39.5 From nobody Sat Sep 26 01:05:30 2026 Received: from mx0b-00364e01.pphosted.com (mx0b-00364e01.pphosted.com [148.163.139.74]) (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 BC3B03CB907 for ; Sun, 6 Sep 2026 22:29:57 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.163.139.74 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788733799; cv=none; b=byeXv5u2oj7/ghRu9xJEC5by32HCGTnYPnhCiPKNHq+Q3yoEkODMeQ5YeKrun+djyrhBvnPBpz/fdiZCtpxRa08/b8HEDEGkuXpDcWpyS9I7C20/KHUYakxQ5iL/qJKqHyOOwimRkPVnhlfFgg5zc0jix7e4NMhBTqqjmd0VMo8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788733799; c=relaxed/simple; bh=HNVhDJW4y3zPfpcfwyZNp9DsCxsecMP4eaj2B/cHMdU=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=EaX50tMXm7/WTVqmD4dfQ7SPWkjpfDF8ksEuGiWb6lK8onbBQyXtwCCF6mu0QjFyl9LKlPZTignKIxTC6Ckf70wL4y557SP23Q5hd1k4Ti174JEaz+XWALOvyuV8HP45DJmLjI8HnV67ejtO2BCsYfWFApFsZO6obVjQmS7OA5w= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=columbia.edu; spf=pass smtp.mailfrom=columbia.edu; dkim=pass (2048-bit key) header.d=columbia.edu header.i=@columbia.edu header.b=laCSRwBy; dkim=pass (2048-bit key) header.d=columbia.edu header.i=@columbia.edu header.b=c9LOmlcp; arc=none smtp.client-ip=148.163.139.74 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=columbia.edu Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=columbia.edu Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=columbia.edu header.i=@columbia.edu header.b="laCSRwBy"; dkim=pass (2048-bit key) header.d=columbia.edu header.i=@columbia.edu header.b="c9LOmlcp" Received: from pps.filterd (m0167074.ppops.net [127.0.0.1]) by mx0b-00364e01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 686KSc3L361537 for ; Sun, 6 Sep 2026 18:29:56 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=columbia.edu; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=pps01; bh=zPAC TqEYoSVTzUbOOOSx8ireZs7IP/+c6pL6mtnNpeg=; b=laCSRwByGaSSjTpwKlTs ja+OeW2PgWpCZVeEiV8mB+fzPu+lAl0VDdICTnDSSmG2b9tILZVjbOY7sJNTFmeY nD+zjkXRpOiHHXyYGP422PGB5OA3y+k2JQOtAOsIbFoewsYPJkTZhPdZ1Y+0DhL5 ja7O9xIgY5HB/XX8VVmsddf+li+BIZfAs91AqDIRqL8lA5s4DgCi+CgUzB9K2f/S 80z4giBZuv9jcmUpcoU7tXw4VUEL/tCDepmWdgNtdPET3iG2eSkrWhIyYt+wfQqO fKhaZQV2C4FZ6RoPIVTd4wQ8DoQe/rc372Yeu3RQ40RhrwmqvijcVnAcfqfX82PM cQ== Received: from mail-qt1-f200.google.com (mail-qt1-f200.google.com [209.85.160.200]) by mx0b-00364e01.pphosted.com (PPS) with ESMTPS id 4ghf7qgca0-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Sun, 06 Sep 2026 18:29:56 -0400 (EDT) Received: by mail-qt1-f200.google.com with SMTP id d75a77b69052e-52d33c89a29so72904571cf.1 for ; Sun, 06 Sep 2026 15:29:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=columbia.edu; s=lionmail; t=1788733796; x=1789338596; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=zPACTqEYoSVTzUbOOOSx8ireZs7IP/+c6pL6mtnNpeg=; b=c9LOmlcpMlHh9uUB6CXTPg+7DnE9w2Rw0jJ2U+s9mpXyeqz8plQF4VQmunRJZWBCmd i3En6iT3mbDwnz4Zuk4Nt+ELl3wufszE1xzPn7sHuHf45kt4u+aAKV2j1UStfpfed7tj zZwiQhCgfqgQEFgj+Fmn7osl5UJehUMezYSqTdSM2csiX/cf3+EWTGscOq1dIFa4q8UA V/XEFTI4fnrwqxkDACQNfDyoKSXsnEct6JDc2VlZNTnukuVQuC4vsVi5xwO4BTW943Sc WJrmq/H8V536TnJC5yKLe2bGLebr3/sbZMC/un0/VpRXkhZeG3p/mbTgcofdsp4bWqWL Tfrg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788733796; x=1789338596; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=zPACTqEYoSVTzUbOOOSx8ireZs7IP/+c6pL6mtnNpeg=; b=GUr971rac1Z4pbp2xEJwaPPNNIaErpzxDqBT40Ud10uh+DAS0nxS7d4cG7uwFFIO0p VVFiRp7EaXXJvMe1o4oidgyXVEVZz4KhIc3sCuz2u4jIZ76mjBrj4560WS4C2UeESGbN F88NROivSFEKHb1NqcZmMySu8pH1fkK7YNBPTaCfG1iWypZaeBNhrphKt+QOwjreCEky N7rc95XO4eq66ZTwvJ00lZnbZr7TeiGVjzLNBLgPdz4bjkxOMAYmnjbQ6K0duULRg8ee tWFfltTV2wcO4XB920IvKk4W2aL9zSyCQ9IN0TflTsB6ewiA/q+O7ja1DP65haqcio7F RPNw== X-Forwarded-Encrypted: i=1; AKwUvBxIALD0JMQ1yVwYYvkoVlAZkhzfqzZFl60p+2Vn55NPEuavOJP8EQ4oizM9Rw0l4JBzsJKpr6wc6rCva6Q=@vger.kernel.org X-Gm-Message-State: AFuF++kCO2Fp2qA/EfWirqmzZ31w5n7TCtshQoWxHQ3YG8YQVSUWkeNH AX4kx5S6f2anariPGjnf2/Q+5YfPcn8lX6qYVGskpSGGU+c5cUqVwUMO1KvPON0u1DyomjselLw c6c6kwYWT7Rn3mZbOICPdUDcOOLUlYE7m/L7Mw+59NSe+NtZ/UgcgHSQG+qYNbA== X-Gm-Gg: AYBFou1cd4faqmu6YptCddsT91w3ei7+P6FUNMIFU50V+UBjAgetvXotRuMXHKaczMI b7IZIXYjaMzRu6segruuwRHqxYcPEQH7V4y+nd2Qb4SfjdFERLli+mQR5IzizBjzYZOjC0oKPOT QN/6q+v8XPfO2ElHBSjWRZNyvnro86erDcEZQ8StzYGz6OdsIuOzFvJpE5xYmd+EMpJd9I8fg0y nss+DL448WxCtzVAv3/qo4XCmKJMc6pPeOqMfxINKz4C1q4/9BLv/hNMoim2HI64aM9tMxZ/Ra6 5dLvw0TlzX8YvxdaIji9PCMrcjkEs2BlkEohAOzSPhxhPVPYsFuKQaGFCAL6cuFqZolms9q3xq8 BU7J8JSvkhzvzI1QImtCafg/M3ZLw/rxQtG/mJoRrgttagoGu X-Received: by 2002:a05:622a:1f86:b0:530:42e4:f283 with SMTP id d75a77b69052e-53054a26cbfmr248136541cf.44.1788733796093; Sun, 06 Sep 2026 15:29:56 -0700 (PDT) X-Received: by 2002:a05:622a:1f86:b0:530:42e4:f283 with SMTP id d75a77b69052e-53054a26cbfmr248136221cf.44.1788733795682; Sun, 06 Sep 2026 15:29:55 -0700 (PDT) Received: from [127.0.1.1] (nat-128-59-176-104.net.columbia.edu. [128.59.176.104]) by smtp.gmail.com with ESMTPSA id d75a77b69052e-5305402a7b7sm73048541cf.3.2026.09.06.15.29.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 06 Sep 2026 15:29:55 -0700 (PDT) From: Tal Zussman Date: Sun, 06 Sep 2026 18:29:31 -0400 Subject: [PATCH 04/10] btrfs: convert btrfs_compr_pool_scan() to use folios Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260906-btrfs-folio-conversions-v1-4-834b9d7b06f5@columbia.edu> References: <20260906-btrfs-folio-conversions-v1-0-834b9d7b06f5@columbia.edu> In-Reply-To: <20260906-btrfs-folio-conversions-v1-0-834b9d7b06f5@columbia.edu> To: David Sterba , Chris Mason Cc: "Matthew Wilcox (Oracle)" , linux-btrfs@vger.kernel.org, linux-kernel@vger.kernel.org, Tal Zussman X-Mailer: b4 0.17-dev-db0b7 X-Developer-Signature: v=1; a=ed25519-sha256; t=1788733791; l=1065; i=tz2294@columbia.edu; s=20250528; h=from:subject:message-id; bh=HNVhDJW4y3zPfpcfwyZNp9DsCxsecMP4eaj2B/cHMdU=; b=625wPx93iQ+FvGpQaBFiEcf5UodB2UC0eWl+7/eYt0r7vnM8bY3i9CocWWWlOHGijAK/PTkB3 4wzHQH02fjoBnLIF+IBkcwo1GZqm5exoOwO7IvDdL+cmx2wPopLTBqf X-Developer-Key: i=tz2294@columbia.edu; a=ed25519; pk=BIj5KdACscEOyAC0oIkeZqLB3L94fzBnDccEooxeM5Y= X-Proofpoint-ORIG-GUID: FEABTKmxFys8-tkjXeA6tp2pkyG2Sror X-Proofpoint-Spam-Info: AW1haW4tMjYwOTA2MDI1MiBTYWx0ZWRfX98jnrHKi2BCj GYJpJtc20qoC3oK+Uw6sO4ZwcByEqBk2jQHGr6zOnZZby6OpoQNjO+2FhIbdBBPG+/MwU+nvYA2 quLwuoas+XBRggXmyxPdzh36GXiqgX0S4IY4h3tuKNhuajXkMqMh X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwOTA2MDI1MiBTYWx0ZWRfXz0TWa3pRjoHz X22gOVEqK2iF6nxl/v3VzPq4HCe8PQMvwsmK6CnFXJDtzpu4mnydtBiMjQZIw2LjQKvXqozIpp6 jTyA5ephrqP+RgAbQQjduppEK2UAANgtPasf7BRjTDUSOcDOlDIMsizsTBt1FoWnvVZVTHIVdW2 dhzLm6BMZzJH9jnHkVym+Jmthzsjb0sKHJIxL9qbFK8VRd0Jluj1uwykafB54VQ394FpUwEDHGl 9MHh605TAJujn24vDD9ZNGUcuXR0ZjtX5ZqFPubWuPM1u+29GkAisfgNmytAHogH/8V+oNgaN1/ jTFxaI0v0Sjtnlhr9uWy5IF2pE7nMX4c8RIompMscJLyRLGqH1C7LswRCbwL1MJIJlPdWl4Skgp 48Qznd8CKmg9lBf6Uyzzqg6Qt4WW8MOdB2ENlLtIv/Atwnz5qeLoOz31hyLfEZMnh7yfKHhvuUL uxnDMOd01+dxPRTfnxA== X-Authority-Analysis: v=2.4 cv=N94Z0W9B c=1 sm=1 tr=0 ts=6a9de964 cx=c_pps a=JbAStetqSzwMeJznSMzCyw==:117 a=aNLBvxxoObQFLnBXsbaGlA==:17 a=IkcTkHD0fZMA:10 a=VdqzKS8jKosA:10 a=x7bEGLp0ZPQA:10 a=A0y_DWxS2BwA:10 a=VkNPw1HP01LnGYTKEx00:22 a=Da8U98TiO7q1upZEImrf:22 a=azVShVRs0zEubeQ0wG0L:22 a=Us7um2Mp8MJUFct2N4IA:9 a=QEXdDO2ut3YA:10 a=uxP6HrT_eTzRwkO_Te1X:22 X-Proofpoint-GUID: FEABTKmxFys8-tkjXeA6tp2pkyG2Sror X-Proofpoint-Virus-Version: vendor=nai engine=6900 definitions=11898 signatures=596817 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 bulkscore=10 suspectscore=0 clxscore=1015 impostorscore=10 malwarescore=0 lowpriorityscore=10 phishscore=0 adultscore=0 spamscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2609060252 The compression pool holds order-0 folios, but btrfs_compr_pool_scan() walks it as struct page through page->lru. Walk it as folios, matching the other compression pool functions. This removes the last use of page->lru in btrfs and saves a call to compound_head() per freed folio. Signed-off-by: Tal Zussman Reviewed-by: Qu Wenruo --- fs/btrfs/compression.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/fs/btrfs/compression.c b/fs/btrfs/compression.c index c62b5148d5ac..979b2ffbd8fc 100644 --- a/fs/btrfs/compression.c +++ b/fs/btrfs/compression.c @@ -168,10 +168,10 @@ static unsigned long btrfs_compr_pool_scan(struct shr= inker *sh, struct shrink_co spin_unlock(&compr_pool.lock); =20 list_for_each_safe(tmp, next, &remove) { - struct page *page =3D list_entry(tmp, struct page, lru); + struct folio *folio =3D list_entry(tmp, struct folio, lru); =20 - ASSERT(page_ref_count(page) =3D=3D 1); - put_page(page); + ASSERT(folio_ref_count(folio) =3D=3D 1); + folio_put(folio); } =20 return freed; --=20 2.39.5 From nobody Sat Sep 26 01:05:30 2026 Received: from mx0b-00364e01.pphosted.com (mx0b-00364e01.pphosted.com [148.163.139.74]) (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 A12F43CCA13 for ; Sun, 6 Sep 2026 22:29:58 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.163.139.74 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788733800; cv=none; b=S22KT1jsnIs40/kbmoZJIyUlM7+TtZPo4b7BpxCr2yisEicyyek4XdQbjuzJq7zuhgW0NO0hfefKAv0jxJcM0jNRHmAMhmHZtk5jtO+tpraA1ACHHPj/YY3zgEqplRejRYk2uXAuZZMzbJNLt1UQ42PMByDRgDEQ0JEaSk5sAf8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788733800; c=relaxed/simple; bh=r9OP5EqiRX6SdvmJ7fyAxljdJB91QgBIXVyOwYRs5ZY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=K+9Q3cWpR8B20jyqCS18xzdNvA+RlO+jY7AWkVBxirK5OKE0D15xsTcUs+JIVKoG5RWPyFg03kyDpaitd5Kcv8NO1lGlz3Qyqxa38++OUJ9SaQVML3OBHtpcXnm8YRBKO3DiVHyKLwi2zNmCAbKVTQeeHYAV2Vua759xy8c1N8A= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=columbia.edu; spf=pass smtp.mailfrom=columbia.edu; dkim=pass (2048-bit key) header.d=columbia.edu header.i=@columbia.edu header.b=E4HXze3l; dkim=pass (2048-bit key) header.d=columbia.edu header.i=@columbia.edu header.b=GwmCNivr; arc=none smtp.client-ip=148.163.139.74 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=columbia.edu Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=columbia.edu Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=columbia.edu header.i=@columbia.edu header.b="E4HXze3l"; dkim=pass (2048-bit key) header.d=columbia.edu header.i=@columbia.edu header.b="GwmCNivr" Received: from pps.filterd (m0167076.ppops.net [127.0.0.1]) by mx0b-00364e01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 686KR0SA454499 for ; Sun, 6 Sep 2026 18:29:57 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=columbia.edu; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=pps01; bh=Rlqq ceqVEqJYjo89RGpGLYw0GPiQZZ2db6ApcR0uysw=; b=E4HXze3lmSdqJx7uNNAG lIc4Qacom4zMHItDtIVVPwQbP9wT80Ufw1K/5cdecC/cv/JbZE+Oey044y+Y/eNc XtTTxAsah+cidlDoqUxeXtxV9rzFIegWWzlGgo8P5613e7g0fYKyflU200vKAPKK RHE+q5egOdkq/Zr2RwJMLWNjlGC9zeU7/RMHV4JIJPA+tuTX0uY2oMGVAVRt37xw RNmOYhzpImafH6aflbzUHuIJDICDD3eZ554JOmmwiIZVub74z0PBj7tKuQ/dkVll TpNFnJAmawzRQwHZTlq68H7ZGq1bbpAcn7QdzupkhiY73D4v3WS9lWz6RO6lASIk kg== Received: from mail-qt1-f199.google.com (mail-qt1-f199.google.com [209.85.160.199]) by mx0b-00364e01.pphosted.com (PPS) with ESMTPS id 4ghf7k0cn2-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Sun, 06 Sep 2026 18:29:57 -0400 (EDT) Received: by mail-qt1-f199.google.com with SMTP id d75a77b69052e-51c1d30035dso37776431cf.2 for ; Sun, 06 Sep 2026 15:29:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=columbia.edu; s=lionmail; t=1788733797; x=1789338597; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=RlqqceqVEqJYjo89RGpGLYw0GPiQZZ2db6ApcR0uysw=; b=GwmCNivrim5E3w1fIZdVwde1N4hr8n34vF+cAjqiYMujtosFy4YTZxNu7fZ+YnH7sX ZCbRkq3swTAOl4xIqtfTGtjmsm9OP8lLj974eb/CMacBwyk8m6gcbmbAfAN9miV9zgAN dDq8P8DdNOAoVT9wnmblFOdhCt62o9SFr8OYPYwAK3yNDPHgxtgRURgh2XkaF0DSwi9v RjhjxFSzO8BljGcqcJbqEzJA/8LXYln1ZSx4ugVkXdbypZRLxov40mZyVG24kA2nS1Qj sA1FSnWmMVCfTlAu5TxQHKZKHeAaF6DoDRzs0iC/v6FPWM6MXZKb1f/SWLj4jCTcuFAK HFgw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788733797; x=1789338597; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=RlqqceqVEqJYjo89RGpGLYw0GPiQZZ2db6ApcR0uysw=; b=Vu24y4PakIsTcw7+GM3ah2+ngiUsudZjY+f430it8HGZmCdeGo0ncbuTZi4qmrThUO Ru9GbTGGLHTp7pSlhgeYvCIYFLx+L1yXo5SmMaeFj1mMVyeWGMq//mwFt7oJ76/NRnOI cVZrVnEO8B1IATomEH/EooWJ5Xm1qfporHjE0I8toO3nh7FDALQ+8XbDxR5KL6dubMQg m5gevQiG8jIHeLIEbQkM9wsroTuhOs0ItHx8v/dejIGETKuZV37bVI2kVentjq6nHJID QNjy9xld1PcjYWMl56z25p9L9dprdRCdSeZ1ThJMqGph46pK75EKZZT1Co72L5M+xd07 J9dw== X-Forwarded-Encrypted: i=1; AKwUvByxcTOBR4VuzTdYL386P59B0eYgt53XJNgr5lOpVys1b+Hz8lvKQNAJhPoodhDDVYtGZ9cFuCgbg984IgY=@vger.kernel.org X-Gm-Message-State: AFuF++mViNisz4Mi70ms3b4yZS5FT6mV8ZyXgyMgwWl1WEX1QMj5fLHB n8cfofEfjP6/xgXqObNqmECC75SdMjREOOSH7bn7xOzlXxOduAo9YC6hdHsr5lUy8Od+hVy50Jn 3K2MnujcBKRM4FLWVegvwunwc7hhr0NNIit0YZHcEOjpljJHSlGBWk7g/OViVJA== X-Gm-Gg: AYBFou0q0i3DdRSgsOocH2SNRNoZgyBnR8JD/UUy18vmZ/KcWiLEHhVHHyCaY5gYnXb hg6ZadLxTJV528/BdgG++6W7vu6mvZCoDC0S4CT1FMobThbGbXIiZLgqQXWbcusd8k4cnF5jUvs 2MrgLYj3sA+tUt3Ae/uU4jbIBq8YbPBrT1bThTibuk5cDzshQRXpUwFg5kmxrqIhUZ87USjEXAh Qelse9yhskCUDyvJjmG3hyJOapRZA0KVSGSN1hMTJNPJS0Fhj5EvzweameHPr+1nkPf/DrjyQC+ 9rLiwLrrHVClpQy8ajDl+OWd35ByQfubzxWIqEMLHRWWzLW2TVb17ECfc+jpiyYKM7ZWpYjwnXy HbEuGubJaUpUarB0VTWXtP4md+A1IrSTTJW0HD9IA4WQG7HPF X-Received: by 2002:a05:622a:1114:b0:517:6550:2a0 with SMTP id d75a77b69052e-5305482cdbemr206755181cf.19.1788733797001; Sun, 06 Sep 2026 15:29:57 -0700 (PDT) X-Received: by 2002:a05:622a:1114:b0:517:6550:2a0 with SMTP id d75a77b69052e-5305482cdbemr206754771cf.19.1788733796515; Sun, 06 Sep 2026 15:29:56 -0700 (PDT) Received: from [127.0.1.1] (nat-128-59-176-104.net.columbia.edu. [128.59.176.104]) by smtp.gmail.com with ESMTPSA id d75a77b69052e-5305402a7b7sm73048541cf.3.2026.09.06.15.29.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 06 Sep 2026 15:29:56 -0700 (PDT) From: Tal Zussman Date: Sun, 06 Sep 2026 18:29:32 -0400 Subject: [PATCH 05/10] btrfs: convert heuristic_collect_sample() to use folios Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260906-btrfs-folio-conversions-v1-5-834b9d7b06f5@columbia.edu> References: <20260906-btrfs-folio-conversions-v1-0-834b9d7b06f5@columbia.edu> In-Reply-To: <20260906-btrfs-folio-conversions-v1-0-834b9d7b06f5@columbia.edu> To: David Sterba , Chris Mason Cc: "Matthew Wilcox (Oracle)" , linux-btrfs@vger.kernel.org, linux-kernel@vger.kernel.org, Tal Zussman X-Mailer: b4 0.17-dev-db0b7 X-Developer-Signature: v=1; a=ed25519-sha256; t=1788733791; l=1679; i=tz2294@columbia.edu; s=20250528; h=from:subject:message-id; bh=r9OP5EqiRX6SdvmJ7fyAxljdJB91QgBIXVyOwYRs5ZY=; b=OZIHZRewCdU2sBf3GHMjO3+KrcVDSqwCPzT2v6NGHQlZRX4eVUsC8Mo98Ns5cMznUHveglnKc JjjjQrwZ+yeDy2QV2hxCvgvGkfixrpbiB3CrsbdsT3Sjc7X2BwyIjHb X-Developer-Key: i=tz2294@columbia.edu; a=ed25519; pk=BIj5KdACscEOyAC0oIkeZqLB3L94fzBnDccEooxeM5Y= X-Proofpoint-GUID: 7xBLvhSLJPOeBfj5TmToLKoOO8scL6VS X-Proofpoint-Spam-Info: AW1haW4tMjYwOTA2MDI1MiBTYWx0ZWRfX5/iMWNKUZGmz 2T7rim7mdKJq94hURbCnI+sWIvt3Zu1miMAdv2ZQopNSf53JAFHRY5dWGQtXNfu/8z09r+JqhUp LDih50m0fXIqViPG1uw/0NX5iaPAefYNOLklFUbXTzHlj39MY7s9 X-Authority-Analysis: v=2.4 cv=QeBWeMbv c=1 sm=1 tr=0 ts=6a9de965 cx=c_pps a=WeENfcodrlLV9YRTxbY/uA==:117 a=aNLBvxxoObQFLnBXsbaGlA==:17 a=IkcTkHD0fZMA:10 a=VdqzKS8jKosA:10 a=x7bEGLp0ZPQA:10 a=A0y_DWxS2BwA:10 a=VkNPw1HP01LnGYTKEx00:22 a=Da8U98TiO7q1upZEImrf:22 a=Qm0qsxP7aFY2tkT6R2MF:22 a=drElJZGrh8K5ZkQw8CAA:9 a=QEXdDO2ut3YA:10 a=kacYvNCVWA4VmyqE58fU:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwOTA2MDI1MiBTYWx0ZWRfX4sZr2WYeI6n7 ZogpiA7WQSetn+jDVqcPM5+y+EbFF2NuhAhNI/bOhwO/VuLRQov+d/EMV8Ln8HVg82WTfggQvYJ jlKbpHySg6gHIP2sHkANOApY/zhY7Key+boDAMbpNJBBz9qFkzQ9kxx+suNzTgUevRVO9aL/fYC j5XRhdx1HrxUmUUGQMaFX7XkvwlTE0nQUWwt9MFJKw3LeFlLvhwLa+K1X9tk4tpuZYSnVvgfgwW yDwW5ISZY2wwE0/van4hc3WvTalwi4SIHyf9QfuevPi9/UcB+KOZRMEDzvaRtKNpRyWtea5vICc QUcwtGsfq8uIxegcfpeuKUIlJqhTZ3llFsfy3cxi+dhUOpf43MXwsLVXKyIGXBl2IavWWGJVAQv 7MtW538L4jBmsw8tf5k39+1PZbgy3tdKGakGqZjm9b2bRlcjl6VX0CYIGDzlptRl4q7A+A8ugSa DPQEWsg/lp63ww9yJMQ== X-Proofpoint-ORIG-GUID: 7xBLvhSLJPOeBfj5TmToLKoOO8scL6VS X-Proofpoint-Virus-Version: vendor=nai engine=6900 definitions=11898 signatures=596817 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 spamscore=0 lowpriorityscore=10 priorityscore=1501 phishscore=0 adultscore=0 bulkscore=10 clxscore=1015 impostorscore=10 suspectscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2609060252 Convert the sampling loop to folios. This removes the last caller of find_get_page() in btrfs and saves a call to compound_head() per sampled page. Document that the lookup is not supposed to fail with an ASSERT(). Signed-off-by: Tal Zussman Reviewed-by: Qu Wenruo --- fs/btrfs/compression.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/fs/btrfs/compression.c b/fs/btrfs/compression.c index 979b2ffbd8fc..fa8b92592321 100644 --- a/fs/btrfs/compression.c +++ b/fs/btrfs/compression.c @@ -1488,7 +1488,7 @@ static bool sample_repeated_patterns(struct heuristic= _ws *ws) static void heuristic_collect_sample(struct inode *inode, u64 start, u64 e= nd, struct heuristic_ws *ws) { - struct page *page; + struct folio *folio; pgoff_t index, index_end; u32 i, curr_sample_pos; u8 *in_data; @@ -1514,8 +1514,10 @@ static void heuristic_collect_sample(struct inode *i= node, u64 start, u64 end, =20 curr_sample_pos =3D 0; while (index < index_end) { - page =3D find_get_page(inode->i_mapping, index); - in_data =3D kmap_local_page(page); + folio =3D filemap_get_folio(inode->i_mapping, index); + ASSERT(!IS_ERR(folio)); + in_data =3D kmap_local_folio(folio, + offset_in_folio(folio, (u64)index << PAGE_SHIFT)); /* Handle case where the start is not aligned to PAGE_SIZE */ i =3D start % PAGE_SIZE; while (i < PAGE_SIZE - SAMPLING_READ_SIZE) { @@ -1529,7 +1531,7 @@ static void heuristic_collect_sample(struct inode *in= ode, u64 start, u64 end, curr_sample_pos +=3D SAMPLING_READ_SIZE; } kunmap_local(in_data); - put_page(page); + folio_put(folio); =20 index++; } --=20 2.39.5 From nobody Sat Sep 26 01:05:30 2026 Received: from mx0b-00364e01.pphosted.com (mx0b-00364e01.pphosted.com [148.163.139.74]) (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 3FAB53CE4AC for ; Sun, 6 Sep 2026 22:29:59 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.163.139.74 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788733804; cv=none; b=o1gEIu3rA83c5DW30RrkqNtUlF8w6+7Rh6onvP7D7E8vW+pfgTCEgw7nPh+MGdJ4mwwxUfexF7ULiO4uU/f/0qRnSiO00LQSDbV292NLpY4b5v80R5L2ibtsc/68PCmhCwAz9yyOdc1pNml6d1ci6w3O8KZIDiJ+BOXjIUUiAtc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788733804; c=relaxed/simple; bh=CJnstd+kkeK8rQHvGFsaX4UzZNSv2sQ+ooNQiOqyXWc=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=pcT6gLsz3PV11AC0ygIDas9FwDTynhDM9Tf825VHIBWiyqUJgQ1X9MJJBJbJ8g5Chq6WRCRgoyT6Y7QehJ+3Lawg1KhLaP4AiJpHnYXpoKbhdA+59uYnxNKEJVZmYP7tHmOOceAppjDGwFTs1KsDgTX6tnjBOyp/xFb+PFT2oWw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=columbia.edu; spf=pass smtp.mailfrom=columbia.edu; dkim=pass (2048-bit key) header.d=columbia.edu header.i=@columbia.edu header.b=VeVhcdbM; dkim=pass (2048-bit key) header.d=columbia.edu header.i=@columbia.edu header.b=lA5XFPAB; arc=none smtp.client-ip=148.163.139.74 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=columbia.edu Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=columbia.edu Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=columbia.edu header.i=@columbia.edu header.b="VeVhcdbM"; dkim=pass (2048-bit key) header.d=columbia.edu header.i=@columbia.edu header.b="lA5XFPAB" Received: from pps.filterd (m0167074.ppops.net [127.0.0.1]) by mx0b-00364e01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 686KRFcT358671 for ; Sun, 6 Sep 2026 18:29:58 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=columbia.edu; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=pps01; bh=CfC9 I79u0yHSazTNK3oQEllakS5tB7xZvD5W+HI/8UA=; b=VeVhcdbMErUB3nR9qYBN DcGug7nWorR80yaGbRyXmoOn6kV+HUUYuMEmUU0jiobSCQH+AoqWLEie3C5AM9Hg upqH6I55pH3UFfQV0uUfE92ipi3hvu9wWCD2F3tXy46haTGLrOvErODMv+PqnQ+3 1hoQTmuGDxfN7/Kr6IObxwy9VORIoSxrF4kA1msJK67IvIiZYqHUK4A/v6z6iC/5 s/8B4hHNF2rXXOmTAg+WqACxOpJF+Wmj2+ubIrytpyr/2aWro/vf0QWXket243X0 oaNZYsurdDHn4pRD/1M0abSccelnTTLjebDpOmt5rAzDnVsuFUc0iU3l74S8BwaB bA== Received: from mail-qt1-f198.google.com (mail-qt1-f198.google.com [209.85.160.198]) by mx0b-00364e01.pphosted.com (PPS) with ESMTPS id 4ghf7qgca4-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Sun, 06 Sep 2026 18:29:58 -0400 (EDT) Received: by mail-qt1-f198.google.com with SMTP id d75a77b69052e-52f64c48bf2so53485341cf.0 for ; Sun, 06 Sep 2026 15:29:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=columbia.edu; s=lionmail; t=1788733797; x=1789338597; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=CfC9I79u0yHSazTNK3oQEllakS5tB7xZvD5W+HI/8UA=; b=lA5XFPABt2dx37tDBneR3VTl0iykwdlt819f1wSNdae5M9skytNzNlujDynTfn3Ed9 0DNpBAne51b1tXtO+7lXL239mKkddjkwklxzo4zQiRszgFRb/fVvhAw/SV0PqXyvYxYJ uXig5GmVqm8JYxGIeW4ZREloMjVW6n8LU93y00xDC7J4aDDS5j2pwBYP6HAhRAheTvqv 0fM6d+QvpTz38dRxT3bkuvTho5G/mBz/aWVJtY12YtQy0rziCq2rEPEVYTagU+ICyaxq Z42/8bqnvu6mbqqNme/jkRwFBt37hgfpBfaZqBhMn1UoosOm9+lysXBMH+yjgjMXyxOy MNag== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788733797; x=1789338597; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=CfC9I79u0yHSazTNK3oQEllakS5tB7xZvD5W+HI/8UA=; b=G0Y/160zjucmu2ZIhndmxA/9EcioubbJ07wXxSbr/PAnBRuHiLz+MshdJIDUMzqzH7 CZBWlZdAGAyB+R/tISBFzIrtXSz4GX+tO6sB8To8YqdHK1qBW5XKsLZePbvNnSgspzH0 Uyx45MxNJTZsPKif2rqcHBHGkZgNMkqeRIDRHY/h3iJyTZv1ZX+HV3s7OyA1IlgAdWhO kfXB57GQoxCIDYqtekWPsYcAE4qeb3DA+72RZ29CCNgMuGwxSSfeyx7DLcpKT67Xge+f 79KsvSkYGFcBnrC738J+T17ZnU/ig3VWdkMw9iUbr7vHb7ELFyYcP9YBjR9EMannT5tP RXuA== X-Forwarded-Encrypted: i=1; AKwUvBwFOu6C/V1OA3b5W5RHn5ESaRoKn12NJG6lJXVkpKuhQqheGKJNBSD9qzv4EF7wwuH2eln2RFKa6lcHL2U=@vger.kernel.org X-Gm-Message-State: AFuF++nbfSqtqWv2tsXhxAUZV/T/lvW3czWWReiFqQOALAHQDoALNHaa TRTpzdKQt8YOG10rJepm/HpjV45uLCOWxXWgAM1V3zxFz7224Bc5qvpopQUdRdxc3Q6yvxeU/kK cDfYnFGHz/BCXm5BWkwnVJNQRTQXNnVTnn5KRiR3RdN5iscKd4v+xQIKVtJKO4g== X-Gm-Gg: AYBFou3kxHmJNFGFcT+Dcx8A2R+HrJJK/SZr8RmKYYJleBLdYrUkgNpYbrha+gFp4QR jLsD478minzXCDMGrvKFIfKpLsZp2wRSHbxe6ufcRB5XfkSa7pWJJseLNpS25q0BGrBZpMiyP3x qMa9MTQRbkT2bW8o7ah2N8q+XfB58dybQa7piYgfepdFyzd4jMzEZ6cpwyyRJuc4tntTLGgVEQP RFGPkUSEVkb4oGaW7LYP1kUNMBlP7EV3m7ah4QcD/koS3wE9EtuB1Cyxmf287iu7CT0NGKdPddn kR+++EPVEhP5bDpAomOJfHbx0swNfM8d8//IlTiX0F77Q2UQ6y0KZxM9lvbCvK6jF9cWeeAM2yT q9CI3vpbaKWiMDw+0dCnILNiwuAGzOaM9Buo1vjgCh1qRAYbu X-Received: by 2002:a05:622a:a05:b0:51c:fc4:a144 with SMTP id d75a77b69052e-53054800802mr226686461cf.4.1788733797687; Sun, 06 Sep 2026 15:29:57 -0700 (PDT) X-Received: by 2002:a05:622a:a05:b0:51c:fc4:a144 with SMTP id d75a77b69052e-53054800802mr226686061cf.4.1788733797246; Sun, 06 Sep 2026 15:29:57 -0700 (PDT) Received: from [127.0.1.1] (nat-128-59-176-104.net.columbia.edu. [128.59.176.104]) by smtp.gmail.com with ESMTPSA id d75a77b69052e-5305402a7b7sm73048541cf.3.2026.09.06.15.29.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 06 Sep 2026 15:29:56 -0700 (PDT) From: Tal Zussman Date: Sun, 06 Sep 2026 18:29:33 -0400 Subject: [PATCH 06/10] btrfs: fix stale function references in compression comments Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260906-btrfs-folio-conversions-v1-6-834b9d7b06f5@columbia.edu> References: <20260906-btrfs-folio-conversions-v1-0-834b9d7b06f5@columbia.edu> In-Reply-To: <20260906-btrfs-folio-conversions-v1-0-834b9d7b06f5@columbia.edu> To: David Sterba , Chris Mason Cc: "Matthew Wilcox (Oracle)" , linux-btrfs@vger.kernel.org, linux-kernel@vger.kernel.org, Tal Zussman X-Mailer: b4 0.17-dev-db0b7 X-Developer-Signature: v=1; a=ed25519-sha256; t=1788733791; l=1276; i=tz2294@columbia.edu; s=20250528; h=from:subject:message-id; bh=CJnstd+kkeK8rQHvGFsaX4UzZNSv2sQ+ooNQiOqyXWc=; b=wNakc2lD1D1Qxekt9Elvfw9A3rdleSrn6O45KjMVHUTXImAdH+dOdQInotuFk1LY51uR7P3r5 WjB9lAd+kaJCEFk5h6e2zb0n5nJvu/JKtFtKQ9a3f0LOXwgQSpSSsn2 X-Developer-Key: i=tz2294@columbia.edu; a=ed25519; pk=BIj5KdACscEOyAC0oIkeZqLB3L94fzBnDccEooxeM5Y= X-Proofpoint-ORIG-GUID: K_QYQQS2_tEK-xPRrEvZyHbXZb2DowsT X-Proofpoint-Spam-Info: AW1haW4tMjYwOTA2MDI1MiBTYWx0ZWRfXxMok/W8WFgaw uKoHQcUHWthxVrC1rchc+IPCzoYuFNp3dMsGnBqz8SCL1rHLkEsiLTHoYCpRYJ7iIE19KzZuzIq Zo1kSSk2mQMkd2UKmV/n/CQLPvbPD9MgZEDJJKGVYXyxCQMCio31 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwOTA2MDI1MiBTYWx0ZWRfX6AKc35ETXZwR W4hGnAf1+D6G6n4Qi9KRJNFELF0K8UUdN/GXf+SwqkJLv5glZHRYfP1tcdYqjj7ZYDLkhTElWYR pWTMlC5gDtnSb4Oab5kwORnGKMxRc3Qhca8WtCUFd5LdXMvIAf80seVq9rvza8BsjmE4to7u18D 5XgpEIsWplu3qIiXhD4p3/rVXaLTWdPsxzvAE216OLbkIjNZtqM1DuxkDK5r5AOOcwPNi5uLpVF r2ai0LYtcGJqbgmE8eKELJD4mcD2eeInY1Z43KUKzOrDb3ZXwv0TIN8PfCf8mucO49QxJ9vva2n cuWyhsJJDE1phU4tv6AYOp5qDhd7HENd4ybYl80gPNqcaW2onuBQ8jhss9Q3UYZliSreFVYmdhU sSW2/XuH/3AOKtkcIcl8PrUQP/lWdcU2UIbh8ZgY3nMHhkg7UOeKAMMi5ksaMBigLLLKDaeXdQi k3nPEoz2RikgmZdQjvw== X-Authority-Analysis: v=2.4 cv=N94Z0W9B c=1 sm=1 tr=0 ts=6a9de966 cx=c_pps a=mPf7EqFMSY9/WdsSgAYMbA==:117 a=aNLBvxxoObQFLnBXsbaGlA==:17 a=IkcTkHD0fZMA:10 a=VdqzKS8jKosA:10 a=x7bEGLp0ZPQA:10 a=A0y_DWxS2BwA:10 a=VkNPw1HP01LnGYTKEx00:22 a=Da8U98TiO7q1upZEImrf:22 a=azVShVRs0zEubeQ0wG0L:22 a=wS94dJsgKqXJMQyBkfsA:9 a=QEXdDO2ut3YA:10 a=dawVfQjAaf238kedN5IG:22 X-Proofpoint-GUID: K_QYQQS2_tEK-xPRrEvZyHbXZb2DowsT X-Proofpoint-Virus-Version: vendor=nai engine=6900 definitions=11898 signatures=596817 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 bulkscore=10 suspectscore=0 clxscore=1015 impostorscore=10 malwarescore=0 lowpriorityscore=10 phishscore=0 adultscore=0 spamscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2609060252 add_ra_bio_pages() was renamed to add_ra_bio_folios(), and btrfs_compress_filemap_get_folio() wraps filemap_get_folio(), not find_get_page(). Update the comments accordingly. Signed-off-by: Tal Zussman Reviewed-by: Qu Wenruo --- fs/btrfs/compression.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/fs/btrfs/compression.c b/fs/btrfs/compression.c index fa8b92592321..20169d028961 100644 --- a/fs/btrfs/compression.c +++ b/fs/btrfs/compression.c @@ -431,7 +431,7 @@ static noinline int add_ra_bio_folios(struct inode *ino= de, u64 compressed_end, } =20 /* - * Since add_ra_bio_pages() is always speculative, suppress + * Since add_ra_bio_folios() is always speculative, suppress * allocation warnings. */ masked_constraint_gfp =3D mapping_gfp_constraint(mapping, constraint_gfp= ); @@ -960,7 +960,7 @@ bool btrfs_compress_level_valid(unsigned int type, int = level) return levels->min_level <=3D level && level <=3D levels->max_level; } =20 -/* Wrapper around find_get_page(), with extra error message. */ +/* Wrapper around filemap_get_folio(), with extra error message. */ int btrfs_compress_filemap_get_folio(struct address_space *mapping, u64 st= art, struct folio **in_folio_ret) { --=20 2.39.5 From nobody Sat Sep 26 01:05:30 2026 Received: from mx0b-00364e01.pphosted.com (mx0b-00364e01.pphosted.com [148.163.139.74]) (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 2D53D3D0927 for ; Sun, 6 Sep 2026 22:30:00 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.163.139.74 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788733814; cv=none; b=eoZLIvGxGnmrH61y+zD7VpkmG38K3tWHqgnpfYxvJdBZz7PxCVzygc5fUiVx9uERQJxWj9D4pgkdnxJTAJWdmqKDb3zhZN1yFkZ+eAetEnwNzhnR+yWVj+z4x/pSIzqis5AGdzW002JsTUzie4DDwMigaWl3igZB4GmcxbHyDpw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788733814; c=relaxed/simple; bh=jovNapv+xLpH/I/e/ElKwI9GEREfMqwAcqQebs6v74U=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=LqHfxstiXnIL/0tGVyE/VKDXH8HAmhOs0A+gCi2MovZZh66EOW/k/n/Bnj/ArkC9+RrTl/D7aUrRjSahIQKpt/tJjw5r36iJEZnDi+l7pwwk7MTHIv48MKnnFioQdm06z4eiIGK4ATh2TgJX2Zkb9iWYPV7MxDTGtHAsYjpYiy8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=columbia.edu; spf=pass smtp.mailfrom=columbia.edu; dkim=pass (2048-bit key) header.d=columbia.edu header.i=@columbia.edu header.b=r3m0mlWQ; dkim=pass (2048-bit key) header.d=columbia.edu header.i=@columbia.edu header.b=2VnXtm9u; arc=none smtp.client-ip=148.163.139.74 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=columbia.edu Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=columbia.edu Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=columbia.edu header.i=@columbia.edu header.b="r3m0mlWQ"; dkim=pass (2048-bit key) header.d=columbia.edu header.i=@columbia.edu header.b="2VnXtm9u" Received: from pps.filterd (m0167073.ppops.net [127.0.0.1]) by mx0b-00364e01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 686LpmwR592569 for ; Sun, 6 Sep 2026 18:29:59 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=columbia.edu; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=pps01; bh=Be/E qUUFz0kczsRXaJG36N49Hpssj0V063Ft3ehqjSs=; b=r3m0mlWQWVS/E0tFV3o2 eXrSeAam+CwQoL3sBqT7Zm9DuXI9jxUl02EibB8CPWeb7fOaXli97/irR28rZAOT DO+jZgqV/LofKr4zSq3GzwmxWaTgrgeoLCxhGGpIz8LQnR4QOGdSNHRRVwtE4ASm 14XRAL31VMcI0/gl2hiqRaA5FJ32SGTWF1Ljlkd8JwwaXr2J/+vBrUIvFpekbuBE VWpRm+YgBzbIebvNTC9wyWcLPc5ZVWUbrMhg3o9jJXtE25Cr+s9gLAzZBFxRFQSf FspZLOSdAIiLVaZLthUyShWBPpPvczwKt+U70UM1NOk7chdHFndtLaU71kgvairI jw== Received: from mail-qt1-f199.google.com (mail-qt1-f199.google.com [209.85.160.199]) by mx0b-00364e01.pphosted.com (PPS) with ESMTPS id 4ghfawrbtw-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Sun, 06 Sep 2026 18:29:59 -0400 (EDT) Received: by mail-qt1-f199.google.com with SMTP id d75a77b69052e-53062ec5b9bso35344451cf.2 for ; Sun, 06 Sep 2026 15:29:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=columbia.edu; s=lionmail; t=1788733799; x=1789338599; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=Be/EqUUFz0kczsRXaJG36N49Hpssj0V063Ft3ehqjSs=; b=2VnXtm9un4DGyGR22mEa3M72e/AQTj6wcbvjwj1KPnHA3ywaKfG1/q1FFB3R04bft9 WcsVaR4OeU6S2qUcdCGmwte/C7iDV6I0YmYhzv8/8w8e3Veijx6+ScJstbSiiHzHQHhG 8aBVHPFumnGue2ifTEA7zMDflWP2iJATltrnf/2GdV+/IRiMRQpeM7Q2/+faAPHAe1ws x4lfELY72P0Bfa8QQcgMgXwA+dM8k0mERu+fa+1vbYmfP0s0kmvq5ZHsDrCJYcSt5VBz VoRddj2HTrFwS0kVU1XU287UaLU/45vwOdS0c9AUqnIOBWj0j5Wp5FDBVtNCFvc/81ZY d63w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788733799; x=1789338599; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=Be/EqUUFz0kczsRXaJG36N49Hpssj0V063Ft3ehqjSs=; b=s8obH8huslZqhKlzmEFpEZrKslyIf98imEQsS0oqvrv++VIZ8UZM4IatN4DFs1IiUz 5bhuXlxvX1f7mEqSsv4RZJ5PgLE58uHOSBI2IzUhnZHqhPKU71iZR3UxFsGNuq+UoOz8 6UVklgY2V6Gq6dz2qUy2m2MASrfoQjlBWqpFpGTIwhA+RfO2rrPf8sgtx8WtGD57j18L Yv/4TWomv2xtUsJJmOy+BqyUhgy2tv15Sst7zUpAgDJu2+fwWXxHk/VppM4nVOLpGPyN D+LdnqJZp3fBbCItyUJLCNXehRxU1DUZ1kwAYVNOZatQmkOUxYTKivLj8wWcC7+9wqTm Q4bg== X-Forwarded-Encrypted: i=1; AKwUvByR9buEGWWnZvsrY2KNn2ohqZhV8X0mZjcZ2CBq6LsOlTXsrhccmsLPFycVlQC0sbvAPM+20oZbE8Z65fk=@vger.kernel.org X-Gm-Message-State: AFuF++mjipg6Ypyvbr9JSIhB1M/C6UZUH3CTDlAOuE4pwmYAYnbXc5OB LzrsmMY8XRkGRhmunuQ11ZEiH0ejgmGwIhM6Qzp0xgf/xneHeHDMnoikxG4VGQjh1Ir3lXNRFri TMtze5eprCIx7FKnpyaTTxK03kF1kso8pbY+bXW1lkvzbZTiGu9EYxA2m5SAmJQ== X-Gm-Gg: AYBFou3WXXCMivjyYqwowU7y0xt4OFazl7G9et81C7hLT95O6FyFtO/RJywE+96XAR9 4wXaMNz7vnPiMGDB9C0FbdajyHa6qZ3pXEdnNdCExWpo56b9CbnaUPmYWqpEaeru2XFAXj1UyEB ycY8L2Ibq8lQ4bc+nTktyRqBhV3Yvp3o/FNkGpJV+PfRvS4OK1IkMW31XbyG1SInhrAGp8z8YH8 C/qrc9HzmDlMSVlM0JROXyaSwxH5dvFQoKkBW6ttTN1v03BjyKT005DVd4l5HuBxI5kEGPNr8ct J8HhjX3rfjOZdhHu/HTSiujKx86G4PdVtgZ0Ldzi56ZfW3a3hP4w6DWm/wcq0WIzZWvcPaLNZSm l/nHq6kqIv1WZViD0YgWZE6JE54lUrBc4/IUvQjgMOyh2FvmS X-Received: by 2002:a05:622a:4c14:b0:530:178a:9dc2 with SMTP id d75a77b69052e-53054849698mr219990791cf.16.1788733798706; Sun, 06 Sep 2026 15:29:58 -0700 (PDT) X-Received: by 2002:a05:622a:4c14:b0:530:178a:9dc2 with SMTP id d75a77b69052e-53054849698mr219990391cf.16.1788733798221; Sun, 06 Sep 2026 15:29:58 -0700 (PDT) Received: from [127.0.1.1] (nat-128-59-176-104.net.columbia.edu. [128.59.176.104]) by smtp.gmail.com with ESMTPSA id d75a77b69052e-5305402a7b7sm73048541cf.3.2026.09.06.15.29.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 06 Sep 2026 15:29:57 -0700 (PDT) From: Tal Zussman Date: Sun, 06 Sep 2026 18:29:34 -0400 Subject: [PATCH 07/10] btrfs: use folios for reading super blocks from the block device Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260906-btrfs-folio-conversions-v1-7-834b9d7b06f5@columbia.edu> References: <20260906-btrfs-folio-conversions-v1-0-834b9d7b06f5@columbia.edu> In-Reply-To: <20260906-btrfs-folio-conversions-v1-0-834b9d7b06f5@columbia.edu> To: David Sterba , Chris Mason Cc: "Matthew Wilcox (Oracle)" , linux-btrfs@vger.kernel.org, linux-kernel@vger.kernel.org, Tal Zussman X-Mailer: b4 0.17-dev-db0b7 X-Developer-Signature: v=1; a=ed25519-sha256; t=1788733791; l=3849; i=tz2294@columbia.edu; s=20250528; h=from:subject:message-id; bh=jovNapv+xLpH/I/e/ElKwI9GEREfMqwAcqQebs6v74U=; b=TlxjpbOD8hVpMicJRhhniWV303IHsd1usWSpxmpkraDVVbMQgZenazgdO5TnhegUe94wo98vP 5FRSFgxDaJ+DYvreByiDxMFLAJCWihNYuoYNOciT/Mpea+HUXGVkt3I X-Developer-Key: i=tz2294@columbia.edu; a=ed25519; pk=BIj5KdACscEOyAC0oIkeZqLB3L94fzBnDccEooxeM5Y= X-Proofpoint-GUID: LkFFa6_BFA4qYN0wVpuhkX9oBUWrEtko X-Proofpoint-Spam-Info: AW1haW4tMjYwOTA2MDI1MiBTYWx0ZWRfX4MrV5t/ufpqI 10XDLW+Q93pYWcTyeDrklFjD+Eu8EubPcBIkK5oVgZVQ1UkPhCSl96fF+L1ARmquVXDcvxQAxa+ G5cRCsLzps6fxnxP6ifKNBaWgUhuxmkSZoz6SDUt54mTDU8bC6qd X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwOTA2MDI1MiBTYWx0ZWRfX9eibDRm6O3Mf ia0ybtuszPXejV5AYXp8fzAo6EiBLGAGLFlmJdK40NwJdM0qF/vyXMFe0KgiApaAL2zJjrwuLot vSM6CTUPpkZ30+J/6qfWu3qc88/jqY2kNMJtI87uoP8B0s83DGbRv6wj9SWtgK1BaEt2UT/w6AQ 0e8Gmdx9/ZxaB0CcuDQ0IYJZxP7/fcUL4i+eAqULcqrHpkARwRntYEYKj1AKxdXBFhdx9rFHGYJ UAbU1eYuzKxRZ1KkBEMvqZOnpYQ8fbZCH4E40sZwlNrmVLi4sQYPh6jO1raXEBQsPRxOG+cfxPt Kn3rQ7nwUHkwwzr6/uhQ1WiY1yUhSfymXGUHA0FSCUHoNJjYBoFHWUrswRcfaYI5Kf6Fa+Hr3fE riI8ChPYlgpFc3XRlN4kFeL2dyDw0H+zBjXgfOFewuzjEpLCYxjfX5c00wm5bIyLXsiHe60vrS3 IerEO2knHTq38+d4mXg== X-Proofpoint-ORIG-GUID: LkFFa6_BFA4qYN0wVpuhkX9oBUWrEtko X-Authority-Analysis: v=2.4 cv=bvd8wkai c=1 sm=1 tr=0 ts=6a9de967 cx=c_pps a=WeENfcodrlLV9YRTxbY/uA==:117 a=aNLBvxxoObQFLnBXsbaGlA==:17 a=IkcTkHD0fZMA:10 a=VdqzKS8jKosA:10 a=x7bEGLp0ZPQA:10 a=A0y_DWxS2BwA:10 a=VkNPw1HP01LnGYTKEx00:22 a=Da8U98TiO7q1upZEImrf:22 a=jHxIr1HyPKZ_Q5_91PL3:22 a=C-EEzzuqgLcvSd4iXwIA:9 a=QEXdDO2ut3YA:10 a=kacYvNCVWA4VmyqE58fU:22 X-Proofpoint-Virus-Version: vendor=nai engine=6900 definitions=11898 signatures=596817 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 lowpriorityscore=10 malwarescore=0 clxscore=1015 priorityscore=1501 suspectscore=0 impostorscore=10 phishscore=0 spamscore=0 adultscore=0 bulkscore=10 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2609060252 btrfs_read_disk_super() and the zoned super block log comparison go through read_cache_page_gfp() and page_address(), and btrfs_release_disk_super() recovers the page with virt_to_page(). Use mapping_read_folio_gfp(), folio_address(), and virt_to_folio() instead. This removes the last callers of read_cache_page_gfp() and put_page() in btrfs. Compute the super block address with offset_in_folio() as write_dev_supers() does, rather than assuming it is at the start of the page. Assisted-by: Claude:claude-fable-5-1 Signed-off-by: Tal Zussman Reviewed-by: Qu Wenruo --- fs/btrfs/volumes.c | 16 +++++++--------- fs/btrfs/zoned.c | 12 ++++++------ 2 files changed, 13 insertions(+), 15 deletions(-) diff --git a/fs/btrfs/volumes.c b/fs/btrfs/volumes.c index 949e40baff33..4ddabadc9188 100644 --- a/fs/btrfs/volumes.c +++ b/fs/btrfs/volumes.c @@ -1327,16 +1327,14 @@ int btrfs_open_devices(struct btrfs_fs_devices *fs_= devices, =20 void btrfs_release_disk_super(struct btrfs_super_block *super) { - struct page *page =3D virt_to_page(super); - - put_page(page); + folio_put(virt_to_folio(super)); } =20 struct btrfs_super_block *btrfs_read_disk_super(struct block_device *bdev, int copy_num, bool drop_cache) { struct btrfs_super_block *super; - struct page *page; + struct folio *folio; u64 bytenr, bytenr_orig; struct address_space *mapping =3D bdev->bd_mapping; int ret; @@ -1357,7 +1355,7 @@ struct btrfs_super_block *btrfs_read_disk_super(struc= t block_device *bdev, ASSERT(copy_num =3D=3D 0); =20 /* - * Drop the page of the primary superblock, so later read will + * Drop the folio of the primary superblock, so later read will * always read from the device. */ invalidate_inode_pages2_range(mapping, bytenr >> PAGE_SHIFT, @@ -1365,12 +1363,12 @@ struct btrfs_super_block *btrfs_read_disk_super(str= uct block_device *bdev, } =20 filemap_invalidate_lock_shared(mapping); - page =3D read_cache_page_gfp(mapping, bytenr >> PAGE_SHIFT, GFP_NOFS); + folio =3D mapping_read_folio_gfp(mapping, bytenr >> PAGE_SHIFT, GFP_NOFS); filemap_invalidate_unlock_shared(mapping); - if (IS_ERR(page)) - return ERR_CAST(page); + if (IS_ERR(folio)) + return ERR_CAST(folio); =20 - super =3D page_address(page); + super =3D folio_address(folio) + offset_in_folio(folio, bytenr); if (btrfs_super_magic(super) !=3D BTRFS_MAGIC || btrfs_super_bytenr(super) !=3D bytenr_orig) { btrfs_release_disk_super(super); diff --git a/fs/btrfs/zoned.c b/fs/btrfs/zoned.c index 08a15465a087..a1ef8caaacda 100644 --- a/fs/btrfs/zoned.c +++ b/fs/btrfs/zoned.c @@ -123,24 +123,24 @@ static int sb_write_pointer(struct block_device *bdev= , struct blk_zone *zones, } else if (full[0] && full[1]) { /* Compare two super blocks */ struct address_space *mapping =3D bdev->bd_mapping; - struct page *page[BTRFS_NR_SB_LOG_ZONES]; struct btrfs_super_block *super[BTRFS_NR_SB_LOG_ZONES]; =20 for (int i =3D 0; i < BTRFS_NR_SB_LOG_ZONES; i++) { u64 zone_end =3D (zones[i].start + zones[i].capacity) << SECTOR_SHIFT; u64 bytenr =3D ALIGN_DOWN(zone_end, BTRFS_SUPER_INFO_SIZE) - BTRFS_SUPER_INFO_SIZE; + struct folio *folio; =20 filemap_invalidate_lock_shared(mapping); - page[i] =3D read_cache_page_gfp(mapping, - bytenr >> PAGE_SHIFT, GFP_NOFS); + folio =3D mapping_read_folio_gfp(mapping, bytenr >> PAGE_SHIFT, + GFP_NOFS); filemap_invalidate_unlock_shared(mapping); - if (IS_ERR(page[i])) { + if (IS_ERR(folio)) { if (i =3D=3D 1) btrfs_release_disk_super(super[0]); - return PTR_ERR(page[i]); + return PTR_ERR(folio); } - super[i] =3D page_address(page[i]); + super[i] =3D folio_address(folio) + offset_in_folio(folio, bytenr); } =20 if (btrfs_super_generation(super[0]) > --=20 2.39.5 From nobody Sat Sep 26 01:05:30 2026 Received: from mx0a-00364e01.pphosted.com (mx0a-00364e01.pphosted.com [148.163.135.74]) (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 8D15C3CB91C for ; Sun, 6 Sep 2026 22:30:08 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.163.135.74 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788733816; cv=none; b=Nxm4Su7CzBr8Pw74gD8HrVTxTcAYjRI2PmJq5F5hUl/Jad2ngS91LstL9z0k48OmihWBn/DrYM7qxQNnVaAfghShajDQDai8UqNqEnQqvMOL5cDqALBHapRpVlmpFupGEk8xJFq/4VfXmmy3M+XG3MUuJ+eqq1juaZFbeHyfOZU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788733816; c=relaxed/simple; bh=9HbGVBX5TrUvmHuy2p6Fy4BIU2dMPYb8NT1I6QaaWgo=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=SPRSAzhhrlZ6daKMgbReAyIge4jmQoSRZh/4yMjW89UAR/u+vraJ0dGB405pZt6S9oOk0vLEIsSjvzEZ7nLzRJuOykUj3a2hXeWiXSIw5YmhS4sZLrm7ye8sbhEUmTJKDI5SO8q2KnLZrWuEw9ZWMYQRhnFRkU+bLMdLHRHogX8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=columbia.edu; spf=pass smtp.mailfrom=columbia.edu; dkim=pass (2048-bit key) header.d=columbia.edu header.i=@columbia.edu header.b=O8JDc0Bv; dkim=pass (2048-bit key) header.d=columbia.edu header.i=@columbia.edu header.b=TLSQ7Wrw; arc=none smtp.client-ip=148.163.135.74 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=columbia.edu Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=columbia.edu Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=columbia.edu header.i=@columbia.edu header.b="O8JDc0Bv"; dkim=pass (2048-bit key) header.d=columbia.edu header.i=@columbia.edu header.b="TLSQ7Wrw" Received: from pps.filterd (m0167072.ppops.net [127.0.0.1]) by mx0a-00364e01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 686K0lEa4165882 for ; Sun, 6 Sep 2026 18:30:00 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=columbia.edu; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=pps01; bh=xck2 l++QwEZd4WONax1e8sjGplgHuiAYa/+vfb+E6TU=; b=O8JDc0BvfzTwN6A71kvc 78sjNRJxVpN/LtRo4j/7YhBigUx8UJsv2dCE7CVn1vHEcyBkhZHVAinddv+0Hy8w UXgT8SnKhvVR42Ct5faorkOesM159X0DUh47k5bwnc58lBh3MNllVI+n/bchXm07 teAc7dyjVtheki+hkVZ8I5x53fFO266nb9vvdPxtoE2mBnqSM5HDjZcFnInEDiLJ 7jFcRmFMCu0XPELpt90OcNX0Ob0NaUIS87LkDB/sXJYrXI5VVFe+ZXg7Mg6SpcNQ Au3VMRtm9Smjc6fEVfjLYghEaKycf5TlNXBaKzlKD4l+j/0IsGr7Tu2Zjud89Ric qw== Received: from mail-qt1-f198.google.com (mail-qt1-f198.google.com [209.85.160.198]) by mx0a-00364e01.pphosted.com (PPS) with ESMTPS id 4gheub0gct-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Sun, 06 Sep 2026 18:30:00 -0400 (EDT) Received: by mail-qt1-f198.google.com with SMTP id d75a77b69052e-53088a3939aso2385451cf.0 for ; Sun, 06 Sep 2026 15:30:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=columbia.edu; s=lionmail; t=1788733799; x=1789338599; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=xck2l++QwEZd4WONax1e8sjGplgHuiAYa/+vfb+E6TU=; b=TLSQ7WrwLeBrpHwVBbVM59ei17LsWIio9X4VZIVeahnkQQeR0W8A5hZnZA6RsnT+LE lY+VKmk9f1cxS+2dnqHzbBv9kNamMId4ghvEYgDuZr7zvxj8UyBeB8MX7sB0u5O1EO8P LCqQxJeWJN08kntOlRA1SlLnX3GtIuaCeJkq6PuHI8xFOI/0bXHIqIk+A8SzBB2uKF94 z2Uip46j/LTvf5eVGlgle1X89ZBiSe27CfNzI4yGajpAYHCMLxiIL4gvrR0/wZRALG+H mqD1XFIdpZ4JVnnBaoTyNDPzwc8EgtoUdiyvecrSO2JRBCSOYGgxqRj1CeW9Yk9fgwsc Rqag== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788733799; x=1789338599; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=xck2l++QwEZd4WONax1e8sjGplgHuiAYa/+vfb+E6TU=; b=E3RA5Bd7NyQXwIR5Ld1cw6KtUJsUxraqxQrvU6+9XzbKHiHjyOd1S4zG0KQcTQPio1 4m7QYGq2mbI3sb8+b8Lj9mhOHgDeaFmcB+4bnA/1R/e9uKUegCLq+7XxXlhFjPpaPNA4 W8pvWkHjR0fAFD8wZDKUB1D1CtpRbHBt0SnmW/pzGvgk46rDK/DjhbQIHMcm884OrOd6 Rrw3bo0saUerY9UKaFuzuihmA2A5nzFFCjqMn6wSqDrKzlwmhiPd7bhT2+CHm0n3srHZ 1QPCrEjCKnskbstQPP6qEnqU9/6IKYejAyHnpZ9/5UQAEc0c3XbNz4noX2SGGMAfThHP QkwA== X-Forwarded-Encrypted: i=1; AKwUvBwqeB/9II9RV5IXlPX77jz0YkjdrJiBIWDn4bUFe2hTXlaYoWkBAuQ1Ai1pkrZC2zcT42hdNH4XrJ/ez1U=@vger.kernel.org X-Gm-Message-State: AFuF++k0ByZt5g43OknnW8xVIuxGe6RkZQ5oVerFKiqiEZEZ3R6C7tI9 m1LUWNTKVF1TUPp9iZbCZeRlgXHgTqpiXHbTomdYYX9jj7BTBR+XF7WT3rG2JBVrFasvj7KCQLJ C7XG0RedIn5cC9aSkITj0fFpCV5GvAZeiHPFK8wGNuXwHTEnjaT7g4Ywe2YsexQ== X-Gm-Gg: AYBFou3mfUUY0xjgx/t9+vIyT2nhEE7ChPD/FQMkdC/oHBRTZdM0clkysLH0IUQCiPj 31QhYoL8qSAViUBFFhGmm7NfPDMhASxDFFye4incXk6VJg9X+FSD2UUj99HD0MiYbZx56RIoz+0 EjaCXn+PkQiWSxfHN3TFocjkbTkYFBRYH/yN1Oo/33fIubwi36DhJHSjb1nNW0dCWamXP2oQUoR IGjT5WRi2US0eGqVfbJxzYBQULH9XVZmIcWWatpUZyK0QS6C/bKfh+Khp5UBptvFqykhPzSlUCm Nl/9+WDVQH8LmLp5qfSCBSxxWNEgBQonce8GpsKB12qUkrT19dISR/SnkIFpu+kO5vRzxX/v81T op7NEch92IP+nRJ+gRyW2ykOWZgc5UzrlZ1yMXB877NEr4zxz X-Received: by 2002:a05:622a:4cc5:b0:52f:b6a8:9e56 with SMTP id d75a77b69052e-53054853b18mr211370801cf.19.1788733799454; Sun, 06 Sep 2026 15:29:59 -0700 (PDT) X-Received: by 2002:a05:622a:4cc5:b0:52f:b6a8:9e56 with SMTP id d75a77b69052e-53054853b18mr211370411cf.19.1788733799021; Sun, 06 Sep 2026 15:29:59 -0700 (PDT) Received: from [127.0.1.1] (nat-128-59-176-104.net.columbia.edu. [128.59.176.104]) by smtp.gmail.com with ESMTPSA id d75a77b69052e-5305402a7b7sm73048541cf.3.2026.09.06.15.29.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 06 Sep 2026 15:29:58 -0700 (PDT) From: Tal Zussman Date: Sun, 06 Sep 2026 18:29:35 -0400 Subject: [PATCH 08/10] btrfs: keep the free space cache inode mapping at order 0 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260906-btrfs-folio-conversions-v1-8-834b9d7b06f5@columbia.edu> References: <20260906-btrfs-folio-conversions-v1-0-834b9d7b06f5@columbia.edu> In-Reply-To: <20260906-btrfs-folio-conversions-v1-0-834b9d7b06f5@columbia.edu> To: David Sterba , Chris Mason Cc: "Matthew Wilcox (Oracle)" , linux-btrfs@vger.kernel.org, linux-kernel@vger.kernel.org, Tal Zussman X-Mailer: b4 0.17-dev-db0b7 X-Developer-Signature: v=1; a=ed25519-sha256; t=1788733791; l=1277; i=tz2294@columbia.edu; s=20250528; h=from:subject:message-id; bh=9HbGVBX5TrUvmHuy2p6Fy4BIU2dMPYb8NT1I6QaaWgo=; b=Of/A+lVYam6wN5OKQ+C7xZ6FkPUqmt9A/7NEW9RznOiCgNOVH1zKFmYmibvLBYCpSsm/08TJn uFA1jQtT3sPAi2a2MJxHQLmaV43zZCufcZWTFu2cKM4wCG7E66jEVjX X-Developer-Key: i=tz2294@columbia.edu; a=ed25519; pk=BIj5KdACscEOyAC0oIkeZqLB3L94fzBnDccEooxeM5Y= X-Proofpoint-GUID: ZUGLKO5UblZcSwW3ojGhKjtNIkRdwUpF X-Proofpoint-Spam-Info: AW1haW4tMjYwOTA2MDI1MiBTYWx0ZWRfX7a6SpEfq/tub iy7eKSYBG2ggxDw/2vDwd3bBOOUWghJWcAZg3zhvWGd2lxEfBuhJetR+A5EW0DNHTlUYPtl1k+F btsbgGN6vmhUs5hi8nryWJQ050ynHh6TXuSGy7QbhuxxlUzF5Uku X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwOTA2MDI1MiBTYWx0ZWRfX1warIOIhJDFL 4tXvmLaX8gzr1uTEVw5rYwzc3Ezk41nm4IHrOCye1uKorFZJG1ohLQWcZway4vFHGu4gIPrjT8J qMiw5rslA8b7y7LJtRvfhKHUfT2jbs43a4mkAhAYGcrFBHqPs0svbonBUvFJSJq8AQOfEDuRzQJ qY1yZys3XiSNE1epjdlPfq0BmnFzsLXYP1AZGC9lcW8U5nLHy4CI7I7tWvigy+4T6LLjwMu05I5 uYBwG7qekK7dQNduf1ARuFZvXnMToimUuy3CGj22Cy6qHBLftdJv9nNjy9N+LTauKfbqeGlkbzR LDXk8eH18cniod+DtcBF2MSr1kwUVCpfrvmCnKt2PJmwXK8N6zo5otwtFXrBoXpCyeSn6bAXl2W yMc/aK9w7xFBO3f1oGvFq81lF80Rsr48r70PgNC+Na8XUtoRCNZIJSjTeN+Vda7uH1C0QqEu/wB Ph0GnIWgokhU9eOaiNw== X-Authority-Analysis: v=2.4 cv=HrJG3UTS c=1 sm=1 tr=0 ts=6a9de968 cx=c_pps a=mPf7EqFMSY9/WdsSgAYMbA==:117 a=aNLBvxxoObQFLnBXsbaGlA==:17 a=IkcTkHD0fZMA:10 a=VdqzKS8jKosA:10 a=x7bEGLp0ZPQA:10 a=A0y_DWxS2BwA:10 a=VkNPw1HP01LnGYTKEx00:22 a=Da8U98TiO7q1upZEImrf:22 a=SsB-OO3BMngHh3ZO9fOt:22 a=CzLnJ1dVjGlFsHvV59sA:9 a=QEXdDO2ut3YA:10 a=dawVfQjAaf238kedN5IG:22 X-Proofpoint-ORIG-GUID: ZUGLKO5UblZcSwW3ojGhKjtNIkRdwUpF X-Proofpoint-Virus-Version: vendor=nai engine=6900 definitions=11898 signatures=596817 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 bulkscore=10 phishscore=0 lowpriorityscore=10 clxscore=1015 malwarescore=0 suspectscore=0 impostorscore=10 priorityscore=1501 adultscore=0 spamscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2609060252 The free space cache inode is a data inode, so the read path enables large folios on its mapping. The v1 cache code assumes one page per folio. With a large folio, consecutive __filemap_get_folio() calls in io_ctl_prepare_pages() would return the same folio and deadlock on the second FGP_LOCK. The v1 on-disk format is PAGE_SIZE granular, so keep the mapping at order 0 rather than teaching the io_ctl code about large folios. Signed-off-by: Tal Zussman --- fs/btrfs/btrfs_inode.h | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/fs/btrfs/btrfs_inode.h b/fs/btrfs/btrfs_inode.h index 89e5e9c0c904..5d85aa69db13 100644 --- a/fs/btrfs/btrfs_inode.h +++ b/fs/btrfs/btrfs_inode.h @@ -502,6 +502,13 @@ static inline void btrfs_set_inode_mapping_order(struc= t btrfs_inode *inode) /* Metadata inode should not reach here. */ ASSERT(is_data_inode(inode)); =20 + /* + * The v1 free space cache operates on PAGE_SIZE chunks and assumes + * one page per folio. Leave it at order 0. + */ + if (btrfs_is_free_space_inode(inode)) + return; + mapping_set_folio_order_range(inode->vfs_inode.i_mapping, inode->root->fs_info->block_min_order, inode->root->fs_info->block_max_order); --=20 2.39.5 From nobody Sat Sep 26 01:05:30 2026 Received: from mx0a-00364e01.pphosted.com (mx0a-00364e01.pphosted.com [148.163.135.74]) (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 8E2D9378833 for ; Sun, 6 Sep 2026 22:30:02 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.163.135.74 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788733816; cv=none; b=YpUPbtW//4A1vCC2i2BisVRZu8q6NtvfFUrS6wUZtq2TTlKuGnhkAYOCV90Y6bVSCxamPlG/PBw3Imyno+8mowvDyt94Vz9bIVIDcIhnBZRJMX7WFUXyRkDWmvar2C4QJuZ6sLFfvDolBeCsb0aRnQsL2CRt6pM7VTRAACBdk2I= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788733816; c=relaxed/simple; bh=/QNffYJDudwhTwgk+7mzWe6L+UZ5Nd56H+OLx6zVp5c=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=c9pNdeRblFPOS7Xxkxw6e3M88QFdL25ZTu0bTQGQ0e+7NrY+pFWzQqVulgc3cI0eFxNA5uuP5rUUA0xR6Byr/+iGDp7cIPT9JJy8Ab8BkgI+b5ZVnZjjdFlxZznPXCy4TeKB6KzaaG3EtWNZkWPMPekS+mH/2bFNDR3btnvlyFU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=columbia.edu; spf=pass smtp.mailfrom=columbia.edu; dkim=pass (2048-bit key) header.d=columbia.edu header.i=@columbia.edu header.b=E25p05j5; dkim=pass (2048-bit key) header.d=columbia.edu header.i=@columbia.edu header.b=arS6eemn; arc=none smtp.client-ip=148.163.135.74 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=columbia.edu Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=columbia.edu Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=columbia.edu header.i=@columbia.edu header.b="E25p05j5"; dkim=pass (2048-bit key) header.d=columbia.edu header.i=@columbia.edu header.b="arS6eemn" Received: from pps.filterd (m0167072.ppops.net [127.0.0.1]) by mx0a-00364e01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 686K0nMi4166001 for ; Sun, 6 Sep 2026 18:30:01 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=columbia.edu; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=pps01; bh=rLUd kDWoIrdKRaPoBtEpyUnm9LoP8PFCLJU5R+QIEZE=; b=E25p05j5vucKLj7hmsEI QL5Btn3/KE+mF3fGUZVCD1AtM37hihw8C06slisHWeBa15kNtt27nhs8njEUjd8f r3vg3etlhGXSJXqggKDiOcmIqUagYsINDr+6OFjWZBwH+Hje56p/swo83pSMlSF3 KuJP4xF2jvoBVafIwfI/m7tJHXiPYoJAnou2HL64Ez2lvOMkkjyoTcmCaitLbmM/ zc4+4q+pLRNfEN1DbFpKCPnjjd+uuzWTuQpHeneF2kg1ijQYx6Z1N+mGsuAMGzJh JQF1QfUe0PJO3AmZf1qp1Vzjy06IbbDMcxUOzUot3G55fL+jl/or+seAhZZCwQYq Tw== Received: from mail-qt1-f198.google.com (mail-qt1-f198.google.com [209.85.160.198]) by mx0a-00364e01.pphosted.com (PPS) with ESMTPS id 4gheub0gcw-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Sun, 06 Sep 2026 18:30:01 -0400 (EDT) Received: by mail-qt1-f198.google.com with SMTP id d75a77b69052e-53062ec5b9bso35344651cf.2 for ; Sun, 06 Sep 2026 15:30:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=columbia.edu; s=lionmail; t=1788733800; x=1789338600; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=rLUdkDWoIrdKRaPoBtEpyUnm9LoP8PFCLJU5R+QIEZE=; b=arS6eemn5LjyWR/NI7fgVee8peurgmPXu0yx6DlI8PkLw1O+RdJTg2n05iCwNl4NlD l8RpUVSs29HhLET14Izt07KQ2JFNd3IrtQKHUh4GZ3mNcenXiOPSdpK60XsbfLa6xhDl ww94G5kSivspCB3yNefk0ANvh2rmeIFWMbPwc65YZJiX5XnETD0RG9YXqZnKCuFTnMpt 0STpRdlP5rws7J41Vekzv53tBxY2x0PHXpGFSkTyKB/HIKwk7gE9MUDNGZLX5F7qTLks AlYY81+pVTGeXHazhKcN5X4KZJFWxG5U4EBOC6GD712R8Kvp5snaHQ8Sb1s17wNcg2pT D98w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788733800; x=1789338600; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=rLUdkDWoIrdKRaPoBtEpyUnm9LoP8PFCLJU5R+QIEZE=; b=O6Bl63QjZdpEX1gW73OSvLRgthPE3wwD3eEf8HboG+xcARKLopdQkFH1VYjRLAWGN0 SxwKgpwcCnxamExMeVowkDuty2KO+au6bV8e+tmuKgW3i5vwyn3Y285Nfvc0N1lB70SR X1r4zLuuV+v56LCD6s1QsfWMI7lZt0beYD3NjbFWH9YpJETCHCe5TNedtHuj1EWwM991 VAl/s4EfhEmLlYdLBQk2mE+4//tdCfvgDh357nIGxRNXcR1avYn/YE89dh9KIJxoJUtU 6GmGSVeahghOfQHXC1h0tit032NJhBagFTvXN7HOhQFaxCyDJdkgnxSYSN++DUzn1NTT 4GAA== X-Forwarded-Encrypted: i=1; AKwUvBxZjvps3T1510ArovdUVvb77FUxRGDNH3sp2lD7INaorzPBGz+kymnxOO894CTZlvfW94IWxExcRotHoIs=@vger.kernel.org X-Gm-Message-State: AFuF++lAGQR9N/FBwvayU+Yr8BGaAxOpzBg6FqudJiFYeQV9BWqmXwY6 VCs0ZrZ8YxPuTXdz2alSdkHHsv+fusYj7jty+BgW/OrsMGVVB9+/6vhqeOSU+yuYIlhwk0X3iTr oKBGfp7eDRY6WLwvk+rWE7SruXVv/qb/Mwe6ytRVAJpV0B6xMLU9Sk3mJGE765g== X-Gm-Gg: AYBFou0oiC0op+3sXnoYXpcOZCoPt6e7X563AtH4DqYm0OkPZY314MhzCT/8EthB9Ty Rq2fRavCylyGDPxipsQb3d0SBjm4ixTbLfgi8G17H9NFH5ydEBycq3SwHT+czSYAs3SyJDDbyLJ Ie6F3Ruh62yNAUDnNiF3Cp0B3CtqDktoBMCpt8w9Miq1KDtl2uUEh5gCvK40QcqeXkFoRxbsGs3 JfSTksXTHRzjEjogtajmWrZX2p05mPlkR44jFPt3LDMYvM5PXBiDx3wL/cIj2cXZMzXl/ovhgvU ggaZgTpZkteyvUldLc13HkdVvqnQicypn2f/N1BfXegl4Z10/jL6IX0T9K47RwRYJDm+oeGqxxI 9V5vpyPTECIJziPitQlvJatpyBPUVh0OyGRRx+VVvs5RUx3s+ X-Received: by 2002:ac8:5d02:0:b0:52e:2d4e:8ef4 with SMTP id d75a77b69052e-530549cf159mr217749011cf.37.1788733800409; Sun, 06 Sep 2026 15:30:00 -0700 (PDT) X-Received: by 2002:ac8:5d02:0:b0:52e:2d4e:8ef4 with SMTP id d75a77b69052e-530549cf159mr217748511cf.37.1788733799826; Sun, 06 Sep 2026 15:29:59 -0700 (PDT) Received: from [127.0.1.1] (nat-128-59-176-104.net.columbia.edu. [128.59.176.104]) by smtp.gmail.com with ESMTPSA id d75a77b69052e-5305402a7b7sm73048541cf.3.2026.09.06.15.29.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 06 Sep 2026 15:29:59 -0700 (PDT) From: Tal Zussman Date: Sun, 06 Sep 2026 18:29:36 -0400 Subject: [PATCH 09/10] btrfs: convert struct btrfs_io_ctl to use folios Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260906-btrfs-folio-conversions-v1-9-834b9d7b06f5@columbia.edu> References: <20260906-btrfs-folio-conversions-v1-0-834b9d7b06f5@columbia.edu> In-Reply-To: <20260906-btrfs-folio-conversions-v1-0-834b9d7b06f5@columbia.edu> To: David Sterba , Chris Mason Cc: "Matthew Wilcox (Oracle)" , linux-btrfs@vger.kernel.org, linux-kernel@vger.kernel.org, Tal Zussman X-Mailer: b4 0.17-dev-db0b7 X-Developer-Signature: v=1; a=ed25519-sha256; t=1788733791; l=8944; i=tz2294@columbia.edu; s=20250528; h=from:subject:message-id; bh=/QNffYJDudwhTwgk+7mzWe6L+UZ5Nd56H+OLx6zVp5c=; b=qrSknlVwZY2gaYpBTn6berUM45Um1O6B0HBCE2uCacR/JWQnSx2jqNfsL6eidcuD1ifOeGSZc bVCoJa2MZElBAL9ASF/01MUWKnixd2VxCAfSbYWJmz30F8QFwktGpwj X-Developer-Key: i=tz2294@columbia.edu; a=ed25519; pk=BIj5KdACscEOyAC0oIkeZqLB3L94fzBnDccEooxeM5Y= X-Proofpoint-GUID: ZaVA_Q37iV43UKhyDIJGHYESJyIfpLeI X-Proofpoint-Spam-Info: AW1haW4tMjYwOTA2MDI1MiBTYWx0ZWRfX2gkgwDUoa3FN Ev8IFkN7FqNLB6g97PHbJ9f0tvELBnMMVvSMZ3crOU4GbDfSM1199BewCXMJ6jPD8Axy9bDx8m2 rfnMmWp9uNxrXOWlVIdep5UZsLujfij/QWvhshRgn62if+N9Kwzi X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwOTA2MDI1MiBTYWx0ZWRfXw4z32UTmYfoH SNzhVVPc93ybMBDvmLbdBsXuxVsSplvKIVjAXPrwiuHssZkEjKXZqr00uwksu2H2k0OWZKIJ7fc yDHW9V/Lf3rV1vk+itdM8+9AtN+1BPNsN313ZJe8Avc1W8RsHBMJuALyV+0Uz5w8N+jbskb/zsb RajCPPRIvWfT9hJkc5kxki8wP0RotQM5Gs41m60cHYTGDgiRrmL/2ax03Zm4j4iU8ESF3ktCAn+ 24J+ZLo/FH2lDx2O1tkoT3Ws4yRf2IXbyfzoZhlsch6JssQI6qdJaGKcCq9Z0kWIff4vHLjTG4k SmYT6OTUSV8v1Y9lIa1OOGHNrzg2J+IzXpIcmhlOcrK7o5saB2gguVY+7UAP6lthSEqdmTj1kla R1jhTNr3lp8XAGQWjFtF2DM9nHjIhpkr2HtRb5zL/aaMGELZufciCbKXuPceKAfdpeWbTQOnDfr shOrXnlD8SxCDHQcBSg== X-Authority-Analysis: v=2.4 cv=HrJG3UTS c=1 sm=1 tr=0 ts=6a9de969 cx=c_pps a=mPf7EqFMSY9/WdsSgAYMbA==:117 a=aNLBvxxoObQFLnBXsbaGlA==:17 a=IkcTkHD0fZMA:10 a=VdqzKS8jKosA:10 a=x7bEGLp0ZPQA:10 a=A0y_DWxS2BwA:10 a=VkNPw1HP01LnGYTKEx00:22 a=Da8U98TiO7q1upZEImrf:22 a=SsB-OO3BMngHh3ZO9fOt:22 a=fqt38Rk-63FNqOG3jyMA:9 a=QEXdDO2ut3YA:10 a=dawVfQjAaf238kedN5IG:22 X-Proofpoint-ORIG-GUID: ZaVA_Q37iV43UKhyDIJGHYESJyIfpLeI X-Proofpoint-Virus-Version: vendor=nai engine=6900 definitions=11898 signatures=596817 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 bulkscore=10 phishscore=0 lowpriorityscore=10 clxscore=1015 malwarescore=0 suspectscore=0 impostorscore=10 priorityscore=1501 adultscore=0 spamscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2609060252 io_ctl_prepare_pages() gets folios from __filemap_get_folio() and immediately converts them to pages. Store folios instead and use the folio APIs throughout. This removes the last btrfs callers of unlock_page() and clear_page_dirty_for_io(), and four calls to compound_head(). Signed-off-by: Tal Zussman --- fs/btrfs/disk-io.c | 2 +- fs/btrfs/free-space-cache.c | 68 ++++++++++++++++++++++-------------------= ---- fs/btrfs/free-space-cache.h | 8 +++--- 3 files changed, 39 insertions(+), 39 deletions(-) diff --git a/fs/btrfs/disk-io.c b/fs/btrfs/disk-io.c index a1d83ad9a4c0..1accc2fd17f5 100644 --- a/fs/btrfs/disk-io.c +++ b/fs/btrfs/disk-io.c @@ -4889,7 +4889,7 @@ static void btrfs_cleanup_bg_io(struct btrfs_block_gr= oup *cache) cache->io_ctl.inode =3D NULL; iput(inode); } - ASSERT(cache->io_ctl.pages =3D=3D NULL); + ASSERT(cache->io_ctl.folios =3D=3D NULL); btrfs_put_block_group(cache); } =20 diff --git a/fs/btrfs/free-space-cache.c b/fs/btrfs/free-space-cache.c index e2af75a205ea..ab933ee6f19c 100644 --- a/fs/btrfs/free-space-cache.c +++ b/fs/btrfs/free-space-cache.c @@ -378,21 +378,21 @@ static void readahead_cache(struct inode *inode) static int io_ctl_init(struct btrfs_io_ctl *io_ctl, struct inode *inode, int write) { - int num_pages; + int num_folios; =20 - num_pages =3D DIV_ROUND_UP(i_size_read(inode), PAGE_SIZE); + num_folios =3D DIV_ROUND_UP(i_size_read(inode), PAGE_SIZE); =20 /* Make sure we can fit our crcs and generation into the first page */ - if (write && (num_pages * sizeof(u32) + sizeof(u64)) > PAGE_SIZE) + if (write && (num_folios * sizeof(u32) + sizeof(u64)) > PAGE_SIZE) return -ENOSPC; =20 memset(io_ctl, 0, sizeof(struct btrfs_io_ctl)); =20 - io_ctl->pages =3D kzalloc_objs(struct page *, num_pages, GFP_NOFS); - if (!io_ctl->pages) + io_ctl->folios =3D kzalloc_objs(struct folio *, num_folios, GFP_NOFS); + if (!io_ctl->folios) return -ENOMEM; =20 - io_ctl->num_pages =3D num_pages; + io_ctl->num_folios =3D num_folios; io_ctl->fs_info =3D inode_to_fs_info(inode); io_ctl->inode =3D inode; =20 @@ -402,8 +402,8 @@ ALLOW_ERROR_INJECTION(io_ctl_init, ERRNO); =20 static void io_ctl_free(struct btrfs_io_ctl *io_ctl) { - kfree(io_ctl->pages); - io_ctl->pages =3D NULL; + kfree(io_ctl->folios); + io_ctl->folios =3D NULL; } =20 static void io_ctl_unmap_page(struct btrfs_io_ctl *io_ctl) @@ -416,9 +416,9 @@ static void io_ctl_unmap_page(struct btrfs_io_ctl *io_c= tl) =20 static void io_ctl_map_page(struct btrfs_io_ctl *io_ctl, int clear) { - ASSERT(io_ctl->index < io_ctl->num_pages); - io_ctl->page =3D io_ctl->pages[io_ctl->index++]; - io_ctl->cur =3D page_address(io_ctl->page); + ASSERT(io_ctl->index < io_ctl->num_folios); + io_ctl->folio =3D io_ctl->folios[io_ctl->index++]; + io_ctl->cur =3D folio_address(io_ctl->folio); io_ctl->orig =3D io_ctl->cur; io_ctl->size =3D PAGE_SIZE; if (clear) @@ -431,10 +431,10 @@ static void io_ctl_drop_pages(struct btrfs_io_ctl *io= _ctl) =20 io_ctl_unmap_page(io_ctl); =20 - for (i =3D 0; i < io_ctl->num_pages; i++) { - if (io_ctl->pages[i]) { - unlock_page(io_ctl->pages[i]); - put_page(io_ctl->pages[i]); + for (i =3D 0; i < io_ctl->num_folios; i++) { + if (io_ctl->folios[i]) { + folio_unlock(io_ctl->folios[i]); + folio_put(io_ctl->folios[i]); } } } @@ -446,7 +446,7 @@ static int io_ctl_prepare_pages(struct btrfs_io_ctl *io= _ctl, bool uptodate) gfp_t mask =3D btrfs_alloc_write_mask(inode->i_mapping); int i; =20 - for (i =3D 0; i < io_ctl->num_pages; i++) { + for (i =3D 0; i < io_ctl->num_folios; i++) { int ret; =20 folio =3D __filemap_get_folio(inode->i_mapping, i, @@ -465,7 +465,7 @@ static int io_ctl_prepare_pages(struct btrfs_io_ctl *io= _ctl, bool uptodate) return ret; } =20 - io_ctl->pages[i] =3D &folio->page; + io_ctl->folios[i] =3D folio; if (uptodate && !folio_test_uptodate(folio)) { btrfs_read_folio(NULL, folio); folio_lock(folio); @@ -484,8 +484,8 @@ static int io_ctl_prepare_pages(struct btrfs_io_ctl *io= _ctl, bool uptodate) } } =20 - for (i =3D 0; i < io_ctl->num_pages; i++) - clear_page_dirty_for_io(io_ctl->pages[i]); + for (i =3D 0; i < io_ctl->num_folios; i++) + folio_clear_dirty_for_io(io_ctl->folios[i]); =20 return 0; } @@ -498,8 +498,8 @@ static void io_ctl_set_generation(struct btrfs_io_ctl *= io_ctl, u64 generation) * Skip the csum areas. If we don't check crcs then we just have a * 64bit chunk at the front of the first page. */ - io_ctl->cur +=3D (sizeof(u32) * io_ctl->num_pages); - io_ctl->size -=3D sizeof(u64) + (sizeof(u32) * io_ctl->num_pages); + io_ctl->cur +=3D (sizeof(u32) * io_ctl->num_folios); + io_ctl->size -=3D sizeof(u64) + (sizeof(u32) * io_ctl->num_folios); =20 put_unaligned_le64(generation, io_ctl->cur); io_ctl->cur +=3D sizeof(u64); @@ -513,8 +513,8 @@ static int io_ctl_check_generation(struct btrfs_io_ctl = *io_ctl, u64 generation) * Skip the crc area. If we don't check crcs then we just have a 64bit * chunk at the front of the first page. */ - io_ctl->cur +=3D sizeof(u32) * io_ctl->num_pages; - io_ctl->size -=3D sizeof(u64) + (sizeof(u32) * io_ctl->num_pages); + io_ctl->cur +=3D sizeof(u32) * io_ctl->num_folios; + io_ctl->size -=3D sizeof(u64) + (sizeof(u32) * io_ctl->num_folios); =20 cache_gen =3D get_unaligned_le64(io_ctl->cur); if (cache_gen !=3D generation) { @@ -535,12 +535,12 @@ static void io_ctl_set_crc(struct btrfs_io_ctl *io_ct= l, int index) unsigned offset =3D 0; =20 if (index =3D=3D 0) - offset =3D sizeof(u32) * io_ctl->num_pages; + offset =3D sizeof(u32) * io_ctl->num_folios; =20 crc =3D crc32c(crc, io_ctl->orig + offset, PAGE_SIZE - offset); btrfs_crc32c_final(crc, (u8 *)&crc); io_ctl_unmap_page(io_ctl); - tmp =3D page_address(io_ctl->pages[0]); + tmp =3D folio_address(io_ctl->folios[0]); tmp +=3D index; *tmp =3D crc; } @@ -551,13 +551,13 @@ static int io_ctl_check_crc(struct btrfs_io_ctl *io_c= tl, int index) u32 crc =3D ~(u32)0; unsigned offset =3D 0; =20 - if (index >=3D io_ctl->num_pages) + if (index >=3D io_ctl->num_folios) return -EIO; =20 if (index =3D=3D 0) - offset =3D sizeof(u32) * io_ctl->num_pages; + offset =3D sizeof(u32) * io_ctl->num_folios; =20 - tmp =3D page_address(io_ctl->pages[0]); + tmp =3D folio_address(io_ctl->folios[0]); tmp +=3D index; val =3D *tmp; =20 @@ -596,7 +596,7 @@ static int io_ctl_add_entry(struct btrfs_io_ctl *io_ctl= , u64 offset, u64 bytes, io_ctl_set_crc(io_ctl, io_ctl->index - 1); =20 /* No more pages to map */ - if (io_ctl->index >=3D io_ctl->num_pages) + if (io_ctl->index >=3D io_ctl->num_folios) return 0; =20 /* map the next page */ @@ -615,14 +615,14 @@ static int io_ctl_add_bitmap(struct btrfs_io_ctl *io_= ctl, void *bitmap) */ if (io_ctl->cur !=3D io_ctl->orig) { io_ctl_set_crc(io_ctl, io_ctl->index - 1); - if (io_ctl->index >=3D io_ctl->num_pages) + if (io_ctl->index >=3D io_ctl->num_folios) return -ENOSPC; io_ctl_map_page(io_ctl, 0); } =20 copy_page(io_ctl->cur, bitmap); io_ctl_set_crc(io_ctl, io_ctl->index - 1); - if (io_ctl->index < io_ctl->num_pages) + if (io_ctl->index < io_ctl->num_folios) io_ctl_map_page(io_ctl, 0); return 0; } @@ -638,7 +638,7 @@ static void io_ctl_zero_remaining_pages(struct btrfs_io= _ctl *io_ctl) else io_ctl_unmap_page(io_ctl); =20 - while (io_ctl->index < io_ctl->num_pages) { + while (io_ctl->index < io_ctl->num_folios) { io_ctl_map_page(io_ctl, 1); io_ctl_set_crc(io_ctl, io_ctl->index - 1); } @@ -1382,7 +1382,7 @@ static int __btrfs_write_out_cache(struct inode *inod= e, if (!i_size_read(inode)) return -EIO; =20 - WARN_ON(io_ctl->pages); + WARN_ON(io_ctl->folios); ret =3D io_ctl_init(io_ctl, inode, 1); if (ret) return ret; @@ -1452,7 +1452,7 @@ static int __btrfs_write_out_cache(struct inode *inod= e, u64 dirty_start =3D i * PAGE_SIZE; u64 dirty_len =3D min_t(u64, dirty_start + PAGE_SIZE, i_size) - dirty_st= art; =20 - ret =3D btrfs_dirty_folio(BTRFS_I(inode), page_folio(io_ctl->pages[i]), + ret =3D btrfs_dirty_folio(BTRFS_I(inode), io_ctl->folios[i], dirty_start, dirty_len, &cached_state, false); if (ret < 0) goto out_nospc; diff --git a/fs/btrfs/free-space-cache.h b/fs/btrfs/free-space-cache.h index 53fe8e293af1..8c9892192af1 100644 --- a/fs/btrfs/free-space-cache.h +++ b/fs/btrfs/free-space-cache.h @@ -14,7 +14,7 @@ #include "fs.h" =20 struct inode; -struct page; +struct folio; struct btrfs_fs_info; struct btrfs_path; struct btrfs_trans_handle; @@ -90,13 +90,13 @@ struct btrfs_free_space_ctl { =20 struct btrfs_io_ctl { void *cur, *orig; - struct page *page; - struct page **pages; + struct folio *folio; + struct folio **folios; struct btrfs_fs_info *fs_info; struct inode *inode; unsigned long size; int index; - int num_pages; + int num_folios; int entries; int bitmaps; }; --=20 2.39.5 From nobody Sat Sep 26 01:05:30 2026 Received: from mx0a-00364e01.pphosted.com (mx0a-00364e01.pphosted.com [148.163.135.74]) (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 8E24A35202A for ; Sun, 6 Sep 2026 22:30:03 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.163.135.74 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788733813; cv=none; b=bfMf5KVqTdeYSh43pXWio/d6i8nwhS5mWYDgIxBjapICk7eSEXL7sD7lppbx5oLrFhEw60BHc9rM1bzm/hlK77pyj/GCdKRndm5PYV7wbEP2038KwDSK5i/ZpL+tv9L3Y1iuN30x02BjaS3OdAUA96mFFWVt/Xu4AF4X01ccKG4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788733813; c=relaxed/simple; bh=IjfzXRwU/hLOaaljSbSrt1lPEak09RokNBTtFG5ySWA=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=ujeBH00IVD4eQ1h0U3mydTozxpM/r0+CqPZLqdHup4y0RHj1J0cMaJtiY1rZN0tUOiOjAUVztTTPZB+6VcOMGkFBCptTfvy2gwVq/bP7uRSe5sSJJUV5pG9862Lo0llOWhctLZasItsoTKXFctWRztNqsxVy30P/Htpa8gSPEks= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=columbia.edu; spf=pass smtp.mailfrom=columbia.edu; dkim=pass (2048-bit key) header.d=columbia.edu header.i=@columbia.edu header.b=MJ214Xj3; dkim=pass (2048-bit key) header.d=columbia.edu header.i=@columbia.edu header.b=PZWcKyAx; arc=none smtp.client-ip=148.163.135.74 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=columbia.edu Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=columbia.edu Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=columbia.edu header.i=@columbia.edu header.b="MJ214Xj3"; dkim=pass (2048-bit key) header.d=columbia.edu header.i=@columbia.edu header.b="PZWcKyAx" Received: from pps.filterd (m0167070.ppops.net [127.0.0.1]) by mx0a-00364e01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 686ItYPK3958436 for ; Sun, 6 Sep 2026 18:30:02 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=columbia.edu; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=pps01; bh=Wd6I wRl9MhkPDhNn3khF2B38jxGMBzWznnvHyyJMLss=; b=MJ214Xj3cft9kaHjwcTX 9IBNdqJn/dxDCeNiv+hn6jqN2vMASScsXisaN+t1g+fnZ+0r2KyHTusJnubxunie KiSSu+aDZZqnWII+Z7cSOWm1HTBz4Rkh8NIbFQs4nVI0xddIYbdrYm1pJxFJ1gNb KM7jvWfdu1wfFnVrxVo8tvE8VJUY8mUtVWCU/+bg8mOQmj7+oTcQhyM8zXrby9Qc qqoQPOOMFAqzHXC10BLaVhpC/XEBaFE+IjUC9qaUZrwPPkDTw4QjxXJT4m/uOELz EL+9BrExI1oOWgef8MfJYCGmJPLeG3PXDeKqANurgUfKSuHKymL2isNRb6txFBdX Vg== Received: from mail-qt1-f199.google.com (mail-qt1-f199.google.com [209.85.160.199]) by mx0a-00364e01.pphosted.com (PPS) with ESMTPS id 4ghdvq0qyb-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Sun, 06 Sep 2026 18:30:02 -0400 (EDT) Received: by mail-qt1-f199.google.com with SMTP id d75a77b69052e-52ce64c41efso76582031cf.3 for ; Sun, 06 Sep 2026 15:30:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=columbia.edu; s=lionmail; t=1788733801; x=1789338601; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=Wd6IwRl9MhkPDhNn3khF2B38jxGMBzWznnvHyyJMLss=; b=PZWcKyAxYmKS8IuvA2fH9oV/+/3JYw11I7SAdnqWwfht+GP+mJndK5pwrfs40QPupe KO+2EL4r7zEYqCdScJ9bgmYunEJxJ1z0cVYSU676oROGxz0QJgdol65ZrU0uWoiA+S4l FVR2EtBKJP0ZauB3c71eM70+B0YpyVQIWkjJHZfitufxCgF57X04uhEo3tQ7WBZ8w6SN C/G4NfPL2x486zr7YS35cP2wUjbcW0ov5n8bf9kYjZr6knRc4ACwtS3NW2SIohUrXaky fYB/gOlyY9oH875ZJixj7ACCBDNKIEcXG99StlMyswBtgBsuQ4RCRHdWuN7+nKXEkb75 xsaQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788733801; x=1789338601; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=Wd6IwRl9MhkPDhNn3khF2B38jxGMBzWznnvHyyJMLss=; b=o9V4vBQPfgdFZ2iuoeAlFpvKakNDmzPMOUZ05vERu4SpYOIIqAFnqTlq26MU5rxn3M Fy1qaT088iKHsLew2IZsKfnnQuXDDIaGKkSNgCGLba62Mi+B66eZKK+lbM5tio8HM/8Z 0XTYAY5c/D0fiFA0/lPzrPkBUXEETXfvMW+Zk0BGTa9/0schFHfs9h1sdaqBxUHFuWbG gQDAxnbh/rs44cfnJya4cPI8lAv6HLito1dbLRe1/s6fyRfeefZlnUn+M/8H9EYD41Ee 7GMLUmwBaz4JS/b+MVF381YX8dKtr5d7w0bj3zhm6Fe4IF0g7TMXakKTvT5lbbz1BsJ9 Qbyw== X-Forwarded-Encrypted: i=1; AKwUvByFu6VDZv5S+y06QIpOUaF2vNLTkPay31uBlgSbQ9SeIX8CIIT4CeQftBAPCv/bAkmQDBocXOjWSjMFWXY=@vger.kernel.org X-Gm-Message-State: AFuF++nylyiBgryClHHST0i7usfCnKH8WPhyI8EI5FYBzF7lcMfDCB8B Y8/7E/5Z7WiM/+IwO6MAkB8W/Q5DcMnjGedTq9kJaIcg5arnVvm2g1+xbTVDtF7t2vnGY0Q9KXK Wg63S3QAsgQiaoKXd1sW32uIK5DOWIun3OawifsuCuZJgM3X+Y+2FjctoEDNh9lx7gMRJDZlL X-Gm-Gg: AYBFou3eG8tolyxbqnOBbkAkG1yLZQ/oaB3gMLWjGwNO0kdpSeqhDFqovzdARFcDo1o 5UYV+Ne9lXLcL/YSCrmA0FISybI4Tk+0+pmVgNNpe05oMNEXRNOjRRsjnDtze2Iag3SgAyRDePP u1LMeKqYrTLspmL+u194cNSQG29FrKGR/9Bbyd9uWQsXdxrzmzWGfE6LzIQCTklt2v0uwM9ngY0 Po3zK+4YheJpqbKSBgJU+PCVRjMs5CCTo0huAAYQOpbxSz4G0AjtkBT7uBsrhlHnP25d3MntyLn Ib24R2XRX1tW/3nXaPWRe0p0zUtwup81JDhNvLRD8HKmGhQ6lj9VH+OSGbUzgXoKdUvN+jdsTcw 6Pv+Akuipov/0IueyfvQZDjYxA2G5plTEgAHQb+FkhrY0OKni X-Received: by 2002:a05:622a:598a:b0:52d:f484:eefe with SMTP id d75a77b69052e-530549cdc4bmr225375421cf.35.1788733801416; Sun, 06 Sep 2026 15:30:01 -0700 (PDT) X-Received: by 2002:a05:622a:598a:b0:52d:f484:eefe with SMTP id d75a77b69052e-530549cdc4bmr225375011cf.35.1788733801008; Sun, 06 Sep 2026 15:30:01 -0700 (PDT) Received: from [127.0.1.1] (nat-128-59-176-104.net.columbia.edu. [128.59.176.104]) by smtp.gmail.com with ESMTPSA id d75a77b69052e-5305402a7b7sm73048541cf.3.2026.09.06.15.30.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 06 Sep 2026 15:30:00 -0700 (PDT) From: Tal Zussman Date: Sun, 06 Sep 2026 18:29:37 -0400 Subject: [PATCH 10/10] btrfs: rename io_ctl page helpers to folio helpers Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260906-btrfs-folio-conversions-v1-10-834b9d7b06f5@columbia.edu> References: <20260906-btrfs-folio-conversions-v1-0-834b9d7b06f5@columbia.edu> In-Reply-To: <20260906-btrfs-folio-conversions-v1-0-834b9d7b06f5@columbia.edu> To: David Sterba , Chris Mason Cc: "Matthew Wilcox (Oracle)" , linux-btrfs@vger.kernel.org, linux-kernel@vger.kernel.org, Tal Zussman X-Mailer: b4 0.17-dev-db0b7 X-Developer-Signature: v=1; a=ed25519-sha256; t=1788733791; l=9947; i=tz2294@columbia.edu; s=20250528; h=from:subject:message-id; bh=IjfzXRwU/hLOaaljSbSrt1lPEak09RokNBTtFG5ySWA=; b=rfix7KIOOcwIcJadr9Zc6TTjpfljPWo2ktLWQWhfJJbfyThkqonOxtvV+wHX+E4Q8MvYcEQAT ZY9ZpTnuMHZCVHPSbsnwD8zikY7lPKC4iy04QrG5RewgWvEyCdWDO9D X-Developer-Key: i=tz2294@columbia.edu; a=ed25519; pk=BIj5KdACscEOyAC0oIkeZqLB3L94fzBnDccEooxeM5Y= X-Proofpoint-Spam-Info: AW1haW4tMjYwOTA2MDI1MyBTYWx0ZWRfX8tpvjyBChFE3 KLl+W15kjEWks9zS0PkKd1g6Jr7cpT6mUD8AjzS8kG6b2iQJTTaC7ZFd4H4EVkhRdR9Qx6uGRgT 7Qsa0GcZMk7YUHWdY8x6doTpc8W2zpLx81SvzRH8ITjYj5JvB5jZ X-Proofpoint-GUID: AcTeULPa9ryuYg1etwbTUFavlqocjvI_ X-Authority-Analysis: v=2.4 cv=f+14wuyM c=1 sm=1 tr=0 ts=6a9de96a cx=c_pps a=WeENfcodrlLV9YRTxbY/uA==:117 a=aNLBvxxoObQFLnBXsbaGlA==:17 a=IkcTkHD0fZMA:10 a=VdqzKS8jKosA:10 a=x7bEGLp0ZPQA:10 a=A0y_DWxS2BwA:10 a=VkNPw1HP01LnGYTKEx00:22 a=Da8U98TiO7q1upZEImrf:22 a=svvvyxlR1OQQkelhaPoB:22 a=BohlxdOq2c65gZUs6TYA:9 a=QEXdDO2ut3YA:10 a=kacYvNCVWA4VmyqE58fU:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwOTA2MDI1MyBTYWx0ZWRfX60AUeaFfV+Pz NXm5Me+i4atzf79ICOsg2h6z/hnkrzcMLxGfdpclLriKJ0ANNM8d+ltHh+Ge29nG3213zxxyhTl J1I/a5ZQeg59zCqjFPmykN3z6NL7PP7ZYInxGfUNoUI90nsteKNxAmRzv6RaNvrxL1nc4rXd1/6 bydyxKID9I8F67f4kIdSKva2V4VARNhpL1H4LW42wu9GMtXT92xssHtiLXcKS2Ir/CDLuXXZSjx qymvaYr+70Tyx/MSVXit2dKS/yXcDRUnAfJLdcVqD8e9x+MVlufVFnnv+NgHF2PsDJFrjbgKgC5 R+yLSPwMqL+mJ5NShOmYYU3jZxlSsfagmcMLEP/FWJFfG1wuP+h15uOUSmrXzUeB9G5QVpNumvd fdxrWQoDu+aEww6RtEgLdS6fgi19boR5jLAj1v4whLmvWlNvLlOyA1m2joOM/HOo1b0fFGvy5yY z21aZ2UBinU/K1Acqnw== X-Proofpoint-ORIG-GUID: AcTeULPa9ryuYg1etwbTUFavlqocjvI_ X-Proofpoint-Virus-Version: vendor=nai engine=6900 definitions=11898 signatures=596817 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 adultscore=0 clxscore=1015 malwarescore=0 phishscore=0 spamscore=0 lowpriorityscore=10 priorityscore=1501 impostorscore=10 bulkscore=10 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2609060253 These functions now operate on folios. Rename them and update comments accordingly. Signed-off-by: Tal Zussman --- fs/btrfs/free-space-cache.c | 78 ++++++++++++++++++++++-------------------= ---- 1 file changed, 39 insertions(+), 39 deletions(-) diff --git a/fs/btrfs/free-space-cache.c b/fs/btrfs/free-space-cache.c index ab933ee6f19c..73cfc1d1a5c1 100644 --- a/fs/btrfs/free-space-cache.c +++ b/fs/btrfs/free-space-cache.c @@ -406,7 +406,7 @@ static void io_ctl_free(struct btrfs_io_ctl *io_ctl) io_ctl->folios =3D NULL; } =20 -static void io_ctl_unmap_page(struct btrfs_io_ctl *io_ctl) +static void io_ctl_unmap_folio(struct btrfs_io_ctl *io_ctl) { if (io_ctl->cur) { io_ctl->cur =3D NULL; @@ -414,7 +414,7 @@ static void io_ctl_unmap_page(struct btrfs_io_ctl *io_c= tl) } } =20 -static void io_ctl_map_page(struct btrfs_io_ctl *io_ctl, int clear) +static void io_ctl_map_folio(struct btrfs_io_ctl *io_ctl, int clear) { ASSERT(io_ctl->index < io_ctl->num_folios); io_ctl->folio =3D io_ctl->folios[io_ctl->index++]; @@ -425,11 +425,11 @@ static void io_ctl_map_page(struct btrfs_io_ctl *io_c= tl, int clear) clear_page(io_ctl->cur); } =20 -static void io_ctl_drop_pages(struct btrfs_io_ctl *io_ctl) +static void io_ctl_drop_folios(struct btrfs_io_ctl *io_ctl) { int i; =20 - io_ctl_unmap_page(io_ctl); + io_ctl_unmap_folio(io_ctl); =20 for (i =3D 0; i < io_ctl->num_folios; i++) { if (io_ctl->folios[i]) { @@ -439,7 +439,7 @@ static void io_ctl_drop_pages(struct btrfs_io_ctl *io_c= tl) } } =20 -static int io_ctl_prepare_pages(struct btrfs_io_ctl *io_ctl, bool uptodate) +static int io_ctl_prepare_folios(struct btrfs_io_ctl *io_ctl, bool uptodat= e) { struct folio *folio; struct inode *inode =3D io_ctl->inode; @@ -453,7 +453,7 @@ static int io_ctl_prepare_pages(struct btrfs_io_ctl *io= _ctl, bool uptodate) FGP_LOCK | FGP_ACCESSED | FGP_CREAT, mask); if (IS_ERR(folio)) { - io_ctl_drop_pages(io_ctl); + io_ctl_drop_folios(io_ctl); return PTR_ERR(folio); } =20 @@ -461,7 +461,7 @@ static int io_ctl_prepare_pages(struct btrfs_io_ctl *io= _ctl, bool uptodate) if (ret < 0) { folio_unlock(folio); folio_put(folio); - io_ctl_drop_pages(io_ctl); + io_ctl_drop_folios(io_ctl); return ret; } =20 @@ -472,13 +472,13 @@ static int io_ctl_prepare_pages(struct btrfs_io_ctl *= io_ctl, bool uptodate) if (folio->mapping !=3D inode->i_mapping) { btrfs_err(BTRFS_I(inode)->root->fs_info, "free space cache page truncated"); - io_ctl_drop_pages(io_ctl); + io_ctl_drop_folios(io_ctl); return -EIO; } if (!folio_test_uptodate(folio)) { btrfs_err(BTRFS_I(inode)->root->fs_info, "error reading free space cache"); - io_ctl_drop_pages(io_ctl); + io_ctl_drop_folios(io_ctl); return -EIO; } } @@ -492,7 +492,7 @@ static int io_ctl_prepare_pages(struct btrfs_io_ctl *io= _ctl, bool uptodate) =20 static void io_ctl_set_generation(struct btrfs_io_ctl *io_ctl, u64 generat= ion) { - io_ctl_map_page(io_ctl, 1); + io_ctl_map_folio(io_ctl, 1); =20 /* * Skip the csum areas. If we don't check crcs then we just have a @@ -521,7 +521,7 @@ static int io_ctl_check_generation(struct btrfs_io_ctl = *io_ctl, u64 generation) btrfs_err_rl(io_ctl->fs_info, "space cache generation (%llu) does not match inode (%llu)", cache_gen, generation); - io_ctl_unmap_page(io_ctl); + io_ctl_unmap_folio(io_ctl); return -EIO; } io_ctl->cur +=3D sizeof(u64); @@ -539,7 +539,7 @@ static void io_ctl_set_crc(struct btrfs_io_ctl *io_ctl,= int index) =20 crc =3D crc32c(crc, io_ctl->orig + offset, PAGE_SIZE - offset); btrfs_crc32c_final(crc, (u8 *)&crc); - io_ctl_unmap_page(io_ctl); + io_ctl_unmap_folio(io_ctl); tmp =3D folio_address(io_ctl->folios[0]); tmp +=3D index; *tmp =3D crc; @@ -561,13 +561,13 @@ static int io_ctl_check_crc(struct btrfs_io_ctl *io_c= tl, int index) tmp +=3D index; val =3D *tmp; =20 - io_ctl_map_page(io_ctl, 0); + io_ctl_map_folio(io_ctl, 0); crc =3D crc32c(crc, io_ctl->orig + offset, PAGE_SIZE - offset); btrfs_crc32c_final(crc, (u8 *)&crc); if (val !=3D crc) { btrfs_err_rl(io_ctl->fs_info, "csum mismatch on free space cache"); - io_ctl_unmap_page(io_ctl); + io_ctl_unmap_folio(io_ctl); return -EIO; } =20 @@ -595,12 +595,12 @@ static int io_ctl_add_entry(struct btrfs_io_ctl *io_c= tl, u64 offset, u64 bytes, =20 io_ctl_set_crc(io_ctl, io_ctl->index - 1); =20 - /* No more pages to map */ + /* No more folios to map */ if (io_ctl->index >=3D io_ctl->num_folios) return 0; =20 - /* map the next page */ - io_ctl_map_page(io_ctl, 1); + /* map the next folio */ + io_ctl_map_folio(io_ctl, 1); return 0; } =20 @@ -610,24 +610,24 @@ static int io_ctl_add_bitmap(struct btrfs_io_ctl *io_= ctl, void *bitmap) return -ENOSPC; =20 /* - * If we aren't at the start of the current page, unmap this one and + * If we aren't at the start of the current folio, unmap this one and * map the next one if there is any left. */ if (io_ctl->cur !=3D io_ctl->orig) { io_ctl_set_crc(io_ctl, io_ctl->index - 1); if (io_ctl->index >=3D io_ctl->num_folios) return -ENOSPC; - io_ctl_map_page(io_ctl, 0); + io_ctl_map_folio(io_ctl, 0); } =20 copy_page(io_ctl->cur, bitmap); io_ctl_set_crc(io_ctl, io_ctl->index - 1); if (io_ctl->index < io_ctl->num_folios) - io_ctl_map_page(io_ctl, 0); + io_ctl_map_folio(io_ctl, 0); return 0; } =20 -static void io_ctl_zero_remaining_pages(struct btrfs_io_ctl *io_ctl) +static void io_ctl_zero_remaining_folios(struct btrfs_io_ctl *io_ctl) { /* * If we're not on the boundary we know we've modified the page and we @@ -636,10 +636,10 @@ static void io_ctl_zero_remaining_pages(struct btrfs_= io_ctl *io_ctl) if (io_ctl->cur !=3D io_ctl->orig) io_ctl_set_crc(io_ctl, io_ctl->index - 1); else - io_ctl_unmap_page(io_ctl); + io_ctl_unmap_folio(io_ctl); =20 while (io_ctl->index < io_ctl->num_folios) { - io_ctl_map_page(io_ctl, 1); + io_ctl_map_folio(io_ctl, 1); io_ctl_set_crc(io_ctl, io_ctl->index - 1); } } @@ -666,7 +666,7 @@ static int io_ctl_read_entry(struct btrfs_io_ctl *io_ct= l, if (io_ctl->size >=3D sizeof(struct btrfs_free_space_entry)) return 0; =20 - io_ctl_unmap_page(io_ctl); + io_ctl_unmap_folio(io_ctl); =20 return 0; } @@ -681,7 +681,7 @@ static int io_ctl_read_bitmap(struct btrfs_io_ctl *io_c= tl, return ret; =20 copy_page(entry->bitmap, io_ctl->cur); - io_ctl_unmap_page(io_ctl); + io_ctl_unmap_folio(io_ctl); =20 return 0; } @@ -797,7 +797,7 @@ static int __load_free_space_cache(struct btrfs_root *r= oot, struct inode *inode, =20 readahead_cache(inode); =20 - ret =3D io_ctl_prepare_pages(&io_ctl, true); + ret =3D io_ctl_prepare_folios(&io_ctl, true); if (ret) goto out; =20 @@ -869,7 +869,7 @@ static int __load_free_space_cache(struct btrfs_root *r= oot, struct inode *inode, num_entries--; } =20 - io_ctl_unmap_page(&io_ctl); + io_ctl_unmap_folio(&io_ctl); =20 /* * We add the bitmaps at the end of the entries in order that @@ -882,13 +882,13 @@ static int __load_free_space_cache(struct btrfs_root = *root, struct inode *inode, goto free_cache; } =20 - io_ctl_drop_pages(&io_ctl); + io_ctl_drop_folios(&io_ctl); ret =3D 1; out: io_ctl_free(&io_ctl); return ret; free_cache: - io_ctl_drop_pages(&io_ctl); + io_ctl_drop_folios(&io_ctl); =20 spin_lock(&ctl->tree_lock); __btrfs_remove_free_space_cache(ctl); @@ -1280,7 +1280,7 @@ cleanup_write_cache_enospc(struct inode *inode, struct btrfs_io_ctl *io_ctl, struct extent_state **cached_state) { - io_ctl_drop_pages(io_ctl); + io_ctl_drop_folios(io_ctl); btrfs_unlock_extent(&BTRFS_I(inode)->io_tree, 0, i_size_read(inode) - 1, cached_state); } @@ -1297,7 +1297,7 @@ static int __btrfs_wait_cache_io(struct btrfs_root *r= oot, if (!inode) return 0; =20 - /* Flush the dirty pages in the cache file. */ + /* Flush the dirty folios in the cache file. */ ret =3D flush_dirty_cache(inode); if (ret) goto out; @@ -1402,8 +1402,8 @@ static int __btrfs_write_out_cache(struct inode *inod= e, spin_unlock(&block_group->lock); } =20 - /* Lock all pages first so we can lock the extent safely. */ - ret =3D io_ctl_prepare_pages(io_ctl, false); + /* Lock all folios first so we can lock the extent safely. */ + ret =3D io_ctl_prepare_folios(io_ctl, false); if (ret) goto out_unlock; =20 @@ -1443,10 +1443,10 @@ static int __btrfs_write_out_cache(struct inode *in= ode, if (ret) goto out_nospc; =20 - /* Zero out the rest of the pages just to make sure */ - io_ctl_zero_remaining_pages(io_ctl); + /* Zero out the rest of the folios just to make sure */ + io_ctl_zero_remaining_folios(io_ctl); =20 - /* Everything is written out, now we dirty the pages in the file. */ + /* Everything is written out, now we dirty the folios in the file. */ i_size =3D i_size_read(inode); for (int i =3D 0; i < round_up(i_size, PAGE_SIZE) / PAGE_SIZE; i++) { u64 dirty_start =3D i * PAGE_SIZE; @@ -1461,17 +1461,17 @@ static int __btrfs_write_out_cache(struct inode *in= ode, if (block_group->flags & BTRFS_BLOCK_GROUP_DATA) up_write(&block_group->data_rwsem); /* - * Release the pages and unlock the extent, we will flush + * Release the folios and unlock the extent, we will flush * them out later */ - io_ctl_drop_pages(io_ctl); + io_ctl_drop_folios(io_ctl); io_ctl_free(io_ctl); =20 btrfs_unlock_extent(&BTRFS_I(inode)->io_tree, 0, i_size_read(inode) - 1, &cached_state); =20 /* - * at this point the pages are under IO and we're happy, + * at this point the folios are under IO and we're happy, * The caller is responsible for waiting on them and updating * the cache and the inode */ --=20 2.39.5