From nobody Sat Sep 26 09:21:25 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 4012C4ACC7D for ; Wed, 2 Sep 2026 16:35:43 +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=1788366945; cv=none; b=OhP4mOpVaJqyPvPCZjzGzd7rNXS8xU9bGze9uExSRPh/yE86ZVEifyvtkLSZ0W8QZ2lNc4EDkthxZk/TFcGCKnFiqLj72b2DFkHUmqeTifz9GlrwUrZcu6jaeyrExBVeMevtG5v5dEBcPanm6fu8gLk5u3kDsgh8jrX6GRbXX4w= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788366945; c=relaxed/simple; bh=YdiGCRpQjCWzo2cMclgu7t5u4t6xpOWcqmE9OMihhuY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=MCO3JJllsNH/UiN4oQ+oG9972W+9O3OVjZY5oGTkjhoMcnHtxOihISsBB4B6yXg5jU9Tr5ctqnH3bGKn1L4SI1FURW8FEwfhm+dUMfvBf1ntUnOIMuwltKJbWDLBIQBzRtQu5RgAbKqi6NFxixID527+MAZwUwBQc6BitHYCwxM= 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=uKLdfK+f; dkim=pass (2048-bit key) header.d=columbia.edu header.i=@columbia.edu header.b=btFjwIiP; 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="uKLdfK+f"; dkim=pass (2048-bit key) header.d=columbia.edu header.i=@columbia.edu header.b="btFjwIiP" Received: from pps.filterd (m0499198.ppops.net [127.0.0.1]) by mx0b-00364e01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 682GYuTn1055209 for ; Wed, 2 Sep 2026 12:35:42 -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=YHN1 7pp/W44dKH+wY/7x1N+HJAhV2v9M+ycLDIQQfM0=; b=uKLdfK+fFvzpz4czc7Df QFm7FRvb2ZQs3OZdLbOC70gHvYfzFv4M3r5Q4OQjAB4+2wb3Gia5E8udYRN5wcuP MZ0icg1/LerjhALhi4xhyGq8Pi4uLnPxo/txtxykqVkGh1QFQn3zBCU02gsvehbM 8eHjE1uGWSEgK3lM4t6jFmfATShPmwE8hyiLEfv5IXMVidVeiSRxfm4SlIToKU5U OmWmN+2O6Sj5uHugyS7c9x2TOMoTbDuvWNrMBmltOTXcfayGLaJwTXlI2FEk+iqz sivpUFkfKSXw4FkmEHtlk175v8xHp3Egnc6MtloX5nly1PYtQ8UpQcRPS8ZEzQIN fQ== Received: from mail-qv1-f71.google.com (mail-qv1-f71.google.com [209.85.219.71]) by mx0b-00364e01.pphosted.com (PPS) with ESMTPS id 4gegv7u705-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Wed, 02 Sep 2026 12:35:41 -0400 (EDT) Received: by mail-qv1-f71.google.com with SMTP id 6a1803df08f44-90cd16a0bc1so36003466d6.0 for ; Wed, 02 Sep 2026 09:35:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=columbia.edu; s=lionmail; t=1788366941; x=1788971741; 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=YHN17pp/W44dKH+wY/7x1N+HJAhV2v9M+ycLDIQQfM0=; b=btFjwIiPibZ851UPm4geoCVRxDJXyXeYAYarirsxarXgWkvTOH/wlqlDRtGPQO2Yv3 eb4XbA9IV9nuZhahVbncNhd6sgiAGTTGeYH0M683XwUIgOqwqLsz7fugkgoP/bDg/C/g xDNnGaB9riKXDLHo7J0VoI9z214gkmAa33h0gyxf0ZaaaZaqj4dDJb9PFBHTLPIKENkt 4N1DzAH5f9qLIssCNfkUikSzb4r1Tqm6YvpVf5bfJe22BXb2i4JrvNPIrVD8lk+yiyF2 7QvdYjn32aUm52POb2Kx4Ru1XiR0hqx29YAPkSicOXwrX4jSWTzE0LrkDH3iEGxVUiS1 VoMg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788366941; x=1788971741; 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=YHN17pp/W44dKH+wY/7x1N+HJAhV2v9M+ycLDIQQfM0=; b=It/xnNTRq4xsD9b5MoeyBUqfnE+4Ztz2nfCKJ2Da/1G1iNqiEaVywjbOk3EZDVdH5B m0z92JrMyXltw8OHJskQ+yhuQsSpbMd+WmXXR6wfuJ++jWN+0s0lze3kO2Wv9kINltfe CcLDEuHn4SREt9+00qZ15/ENPNnHaKAeUuN1PU09DilRz7G6GOXgyI0m+3rtJRMrcoFL 4rjp0aYdLW5uWzSAU6DToDx0dHwFECyXZn8+X5Yi0pqy7yrb/qrFPYDNoc9rdCp+BTX3 daS8Tf8VDnECaQ14Y+spZrvy8BFM9B2FebfQVKvXaAel9H6+oYQZnP8/v6tnWm70oBp3 n9ww== X-Forwarded-Encrypted: i=1; AKwUvByKOiLVsVKJxqL6C280PRGdBY2i+yMEDMZJn9zQLeQcV5JDqZNiSy+Nw3DxzJqYyHm+wuzuyyIwGO4yXA4=@vger.kernel.org X-Gm-Message-State: AFuF++limm7KzQhCZg9WNgwuS19y49fnYyc4q/HK76F4t6rqu6BcMfmw lzBoh07zxdIg4zrVEZyHerc/Mzf15XGZ0PiKe465DbSvP/XCI7hsHjfWZ4yBSNz3QKvLIT5BZoy VWAwcwGeH+FUPjyPzrA2/+al7NStWRaOr33EcuSHTP4fiquIAqQYGyxGK1YCxsA== X-Gm-Gg: AYBFou396QkmhnMg56cahDmDziD7LLMv2mZch1kXIjN/nQUJdWaXnpcOL5CgUyIhDwr C7oIX0mDHR4f5icJUC4PQI0I81H7qmGTNPzk4dcUpYug5d96rPbftTsfe63jhNrGcj5kStjUvf7 LwvFvVarke/jPP7YCGFUDZ0EtYrlMPUUd2IAhFU1rkgSF2BkNzvMIWpXfhEmrPHJ922V5yGmVkl Z5cukz64kLkEtwephOzggL8WYlWXyjW8hQkCgh5pY4S5PtEB2Ntmd7C4THDDhefvq05TadLLT3O WeAH9NJhFVbhDgq3C1EuTwV/fnXz7HZHXSKZ2LqtdZA/EALuHVOyD1O0URPdtEvSXqS9L1UAACh kyabd0DxY6XGlS/+tvn4kY4BLH67tMJtcxIvujKiBU6vYks4u3oRPKw== X-Received: by 2002:a05:6214:e42:b0:8e5:d7d1:7bf with SMTP id 6a1803df08f44-90ebafc405fmr87716126d6.4.1788366936207; Wed, 02 Sep 2026 09:35:36 -0700 (PDT) X-Received: by 2002:a05:6214:e42:b0:8e5:d7d1:7bf with SMTP id 6a1803df08f44-90ebafc405fmr87709226d6.4.1788366931111; Wed, 02 Sep 2026 09:35:31 -0700 (PDT) Received: from [127.0.1.1] (nat-128-59-178-193.net.columbia.edu. [128.59.178.193]) by smtp.gmail.com with ESMTPSA id 6a1803df08f44-90e9eef5067sm21805726d6.34.2026.09.02.09.35.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 02 Sep 2026 09:35:30 -0700 (PDT) From: Tal Zussman Date: Wed, 02 Sep 2026 12:35:07 -0400 Subject: [PATCH v2 1/5] ceph: use a folio in ceph_get_caps() 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: <20260902-ceph-inline-folio-v2-1-6c9098112352@columbia.edu> References: <20260902-ceph-inline-folio-v2-0-6c9098112352@columbia.edu> In-Reply-To: <20260902-ceph-inline-folio-v2-0-6c9098112352@columbia.edu> To: Ilya Dryomov , Alex Markuze , Viacheslav Dubeyko , Xiubo Li Cc: "Matthew Wilcox (Oracle)" , ceph-devel@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=1788366929; l=1061; i=tz2294@columbia.edu; s=20250528; h=from:subject:message-id; bh=YdiGCRpQjCWzo2cMclgu7t5u4t6xpOWcqmE9OMihhuY=; b=xXUo6K6vjQmwvcVP9oNSV3jgm9ylsc5ppGYvIc1vfHdt/9uPtM90FKGEyH3bGm8KAyHqdGab/ 7M2KHVwUmmUBybzEVuskqnFCzYRH03yNoV7n3MItgTahshJHbmiA1S3 X-Developer-Key: i=tz2294@columbia.edu; a=ed25519; pk=BIj5KdACscEOyAC0oIkeZqLB3L94fzBnDccEooxeM5Y= X-Proofpoint-ORIG-GUID: yQFsL4krGIrEpl9tmqbsmquyZJBj4Dt5 X-Proofpoint-GUID: yQFsL4krGIrEpl9tmqbsmquyZJBj4Dt5 X-Proofpoint-Spam-Info: AW1haW4tMjYwOTAyMDE0NSBTYWx0ZWRfX9b0NAHTvyqUy AsE8wFMo3aXbpKfNWF3r+bRKqt90sZgPuOXtjyNTUP2H3zsooYmCk/vRwodvlurqP8erOr2+2ie i51ZvHP0OnZHAolwWAlbd9KE0Vc7BqnRoEnqQ1p0EdW83XuF837m X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwOTAyMDE0NSBTYWx0ZWRfX0Z7nDl17sMCy kx2Yb1N4mrJWNfEwXOQ7ndNfGFY1IopkY4XhWxkkZvUMKi68xdvJAPCHb9ovlC6liG8CrdU9vQY /+LI+ykol3ZyM3KudZ0rWvtyPvtem5NjVKBHNd1ZXua7/xIVXBmYJVPv5sOY6WG5GHPdfz0EjD8 3qBK+ZIV35Pm8FVLwUpisJmr3v8ZyUIktiucxBA6z3ANW19zwEoushIKEXuO83QVZiKhoOYTJCO JL6moJXWyWlRxzpKYDT937tlztq2ZIYCRxQ139mPh/rPPINZKsKlDaPPEPRGRzygPu8Mbh9Yr0Y +WSg8ieWWBkwt9s4CgYmFrRMyyKnMF6n1kch/CgqIqaGTiB/ppWgmHmhspgK3/v8a4Z3uUHbQAC uIZ743gOJx46YOmHAYB/2E9LZsqzTif7M7zYHrU+rM6L2m4Km3xJz6v4iGIXR45NpLauosrp3GN sf0n1SCDK0eG9KbM6AA== X-Authority-Analysis: v=2.4 cv=JcCMa0KV c=1 sm=1 tr=0 ts=6a98505d cx=c_pps a=UgVkIMxJMSkC9lv97toC5g==:117 a=XwBYxoxBwSosfWEfMcqm5A==:17 a=IkcTkHD0fZMA:10 a=VdqzKS8jKosA:10 a=x7bEGLp0ZPQA:10 a=A0y_DWxS2BwA:10 a=VkNPw1HP01LnGYTKEx00:22 a=Da8U98TiO7q1upZEImrf:22 a=BpGzv1V74M3SfeTrGa8v:22 a=nQxxII3xdzKgKN-BukEA:9 a=QEXdDO2ut3YA:10 a=1HOtulTD9v-eNWfpl4qZ:22 X-Proofpoint-Virus-Version: vendor=nai engine=6900 definitions=11894 signatures=596817 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=10 spamscore=0 suspectscore=0 adultscore=0 bulkscore=10 malwarescore=0 clxscore=1015 phishscore=0 lowpriorityscore=10 priorityscore=1501 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2609020145 Convert the inline data page cache check to filemap_get_folio(), which returns an ERR_PTR instead of NULL when no folio is present. Saves two calls to compound_head(). Signed-off-by: Tal Zussman --- fs/ceph/caps.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/fs/ceph/caps.c b/fs/ceph/caps.c index 1847badddd87..5be858df0a4d 100644 --- a/fs/ceph/caps.c +++ b/fs/ceph/caps.c @@ -3202,12 +3202,12 @@ int __ceph_get_caps(struct inode *inode, struct cep= h_file_info *fi, int need, ceph_has_inline_data(ci) && (_got & (CEPH_CAP_FILE_CACHE|CEPH_CAP_FILE_LAZYIO)) && i_size_read(inode) > 0) { - struct page *page =3D - find_get_page(inode->i_mapping, 0); - if (page) { - bool uptodate =3D PageUptodate(page); + struct folio *folio =3D + filemap_get_folio(inode->i_mapping, 0); + if (!IS_ERR(folio)) { + bool uptodate =3D folio_test_uptodate(folio); =20 - put_page(page); + folio_put(folio); if (uptodate) break; } --=20 2.39.5 From nobody Sat Sep 26 09:21:25 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 35C0D4AC16A for ; Wed, 2 Sep 2026 16:35:38 +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=1788366941; cv=none; b=kX5OFlOUJrLnzE4ZeUS0vxK0XirUcy48GajyIgbvTuKIui3uAvzxPDkEBeOTpu02jQUcFEhPO3+M+IDOcMv5SV0iJptx5tViV2wKEq/K/Q3fYK351u9AFeUIRNBW0zPJ/aTUTeCK7lNqLi0bCYC9lxlRLCnOSR/1KrHu552PkG8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788366941; c=relaxed/simple; bh=hmGBWo2Ja+1DmxMvk/ECCTpEyX+z1ZO+8x9wdCH+pIA=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=b8YOqp0MyqSw3NmRkRhLX0/wmiWCaYix4fS/sMIDpL8tNLa0CYVV+r+rQfbywXTLl8MV2DgUPSxq0MUtIE5b/s7z2xBWJXS6qRApxeoLYlLNp9Zerwt9x13MH7fABRXSxWM3drkKlYMANSozc9cEI+f2HxfgBAryViUqx2dzV2M= 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=NYkDS3BN; dkim=pass (2048-bit key) header.d=columbia.edu header.i=@columbia.edu header.b=PJ0kT9QX; 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="NYkDS3BN"; dkim=pass (2048-bit key) header.d=columbia.edu header.i=@columbia.edu header.b="PJ0kT9QX" 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 682GWYSs673668 for ; Wed, 2 Sep 2026 12:35:38 -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=hlDz w90ku8YTgCq315wh1d+QvwDRl1pfx6TsW0Gdp+c=; b=NYkDS3BND4COhPp7LeDx +wVebx2RPxEBF0tdMLSSGhymNAZ9g1gX7q8ScoJ25ynUFHhWs+P/pHTkJ2ttaWJN ttRL9hveEPjjdTAkbpmPLKGEp4zXDml5A88c4ZSFh3zh1Kj6Ml1j0SaQTiiBdM44 TQiIKUrf6imZMs6NccjtdJOvAJImZrGIH7k2YUwcacuwWDSDi/N88VisucEhOG6z n4PzwpGcIqchaYzPLEs9xQZ+RJAWASRIrj0F1shZQ18PT6PXxsT1uEAlFEp7Cykd H5vxTUIwbr/ECvmfYfgqDm/DhP5d5erQJpg9mBfn02on9QYatStnt8VS1yb5n02i Ew== Received: from mail-qv1-f70.google.com (mail-qv1-f70.google.com [209.85.219.70]) by mx0b-00364e01.pphosted.com (PPS) with ESMTPS id 4ge835n729-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Wed, 02 Sep 2026 12:35:37 -0400 (EDT) Received: by mail-qv1-f70.google.com with SMTP id 6a1803df08f44-90ce9ff466fso26780876d6.3 for ; Wed, 02 Sep 2026 09:35:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=columbia.edu; s=lionmail; t=1788366937; x=1788971737; 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=hlDzw90ku8YTgCq315wh1d+QvwDRl1pfx6TsW0Gdp+c=; b=PJ0kT9QXD2Yxs5o/icqBWSZ/D8Bazk+rYmPdk0nZIfHlSOIzNO/c17F50iB1eNQ1Uw u2AaKvTnQtIG5SJm4zHUces1M0MXk8w6ZuoXWNAQYDHBM0SESIcqdtfD7Frva075P9mF 7UuKdNMXiBcYrVEinJtBN50l2QaAZTuwG8IJZW08mjzbxGy0NNFfnT7UqweE2dvpSf8w pcXZB6RWlzgrxDRlGt1wynmk6CqdS9YQpfNdpMdoW9ezKaRfKPr9xcDaSr3XruFHCYdW wnJB0WoeQrhqBSaL+4kluDkPvD1ylGAGKAqz7lJULVulV+487kHNq57MYJR5ypH1x3m9 pJxg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788366937; x=1788971737; 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=hlDzw90ku8YTgCq315wh1d+QvwDRl1pfx6TsW0Gdp+c=; b=Z5mCX0uch/47y7mdxwtapPqZfryDoN5DersxXJXkfuCuKfMgh82Re/wOif8I5k8Xs2 oICyUPJ1H3tT3HjCPqFvCOgZX4rHeT9/o64jFMTgt9F+w0Qe/dLOMMjX+I8p+mhLv+93 2h6GOOziryiDcrcXpZ2n67yxRfWQrQWFI7vU9PwT1u+iOcPEaw2v0dpfVrrjxFfjWM4G oGk2XNuwZ0SrhjG0ud8pPTr+R7fafmk2wDRl6Ssp35CuRiTNy4z5JoX13yhYL4jDWo9R ff3x4sDN712AwnyqbO22xQJFgu1B1T7XeqNDaNAugEYa7VtQQ9qNZaK75a9rzOzvXcAw kwKg== X-Forwarded-Encrypted: i=1; AKwUvByaawefJamLOeERxJd7l+chYxslgXHh5hIozeOcNckD8rRuZT4oSAPChOLEghLxwAimxRjXelsaAUruznU=@vger.kernel.org X-Gm-Message-State: AFuF++mehcpxHf7wR8uMVZy3wxfA52gEOzO5Rky938FwgYWsWDnRKcdG YDo+YRF23agpmrzDdyhax7HiOgVWNu8hZ5QtZUmldMrjaHBkueToR07W2E6NO+nXgPwlhLWTKJt 6Bwc/QdbVslb5l64ta9WXTfh6lFA3Bp7TZwtnsxQz5uRFd4Yt/4s5TTJyvOA0Bw== X-Gm-Gg: AYBFou1EX2YQz0vsJnHdl6E8jEyQVyDWt4XQ6bJcQZM/3FcXxhMie3HkfFNMYXflAP5 l/kdcQicrAGQITT/hNYy6RvN/qyOBK4lrREqP4AHK0XYCTRaIzjCNsn3hDPX32lWL7gM1Wj/Y+Q ha6wzqLZ5KKjCU0Q+sGmbbiHfGiRRoZYMJVMqF5It/ehiKvjQZIkA+4dolSCQltnuqm7VpmzQjT DRlFkUFl2slCOufTut1VhlcrkbkhWDtwZTrisF5gM29WM6N3O/nsCjIKupMRSQ4B23DSYr17Cok iIFes89NgZMMcNq2DMaDnOnPIi6IDcb6ZYipa2pPmadm76ePoVWk5MMelKuFif1CDQhiO9UOYOu vWXQRa2JJtMAxuBCyNiizdb2ODQd6QDsNuj38Qqb8RaOmRdM9pguUXg== X-Received: by 2002:a05:6214:622:b0:90c:e89f:14b7 with SMTP id 6a1803df08f44-90eca405209mr77459566d6.20.1788366932303; Wed, 02 Sep 2026 09:35:32 -0700 (PDT) X-Received: by 2002:a05:6214:622:b0:90c:e89f:14b7 with SMTP id 6a1803df08f44-90eca405209mr77458956d6.20.1788366931709; Wed, 02 Sep 2026 09:35:31 -0700 (PDT) Received: from [127.0.1.1] (nat-128-59-178-193.net.columbia.edu. [128.59.178.193]) by smtp.gmail.com with ESMTPSA id 6a1803df08f44-90e9eef5067sm21805726d6.34.2026.09.02.09.35.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 02 Sep 2026 09:35:31 -0700 (PDT) From: Tal Zussman Date: Wed, 02 Sep 2026 12:35:08 -0400 Subject: [PATCH v2 2/5] ceph: use a folio in the inline read branch of ceph_filemap_fault() 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: <20260902-ceph-inline-folio-v2-2-6c9098112352@columbia.edu> References: <20260902-ceph-inline-folio-v2-0-6c9098112352@columbia.edu> In-Reply-To: <20260902-ceph-inline-folio-v2-0-6c9098112352@columbia.edu> To: Ilya Dryomov , Alex Markuze , Viacheslav Dubeyko , Xiubo Li Cc: "Matthew Wilcox (Oracle)" , ceph-devel@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=1788366929; l=1873; i=tz2294@columbia.edu; s=20250528; h=from:subject:message-id; bh=hmGBWo2Ja+1DmxMvk/ECCTpEyX+z1ZO+8x9wdCH+pIA=; b=5NOyPbPoxQuFMeFnDAhslokb5nNj3iLIswNGDamjAWF4PPEuAudhp1mlVAuLENAKMOSj4KUQy qHWWVgO48RbCIP8iii0LAVmhrmo+44w1vfT6Hl7FufNVZ/mMqgR0wM6 X-Developer-Key: i=tz2294@columbia.edu; a=ed25519; pk=BIj5KdACscEOyAC0oIkeZqLB3L94fzBnDccEooxeM5Y= X-Proofpoint-Spam-Info: AW1haW4tMjYwOTAyMDE0NSBTYWx0ZWRfX6gSRkoSiNn7H zsDyzfrehDtW3idKnQHFRi/1IIlny/93mZyBdaautwEPSH1droEEmA0vWg4Tf9BeblENwV7/xX7 5LHxAzUG35kpc43jmcqE8aHQN9msIZ9lrN5VC1DAnz/MOkGe0VKP X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwOTAyMDE0NSBTYWx0ZWRfXx4lSyrI15A4P E/2G3SY5y9QqVl/t1rWkxXh0rDSzB/jtaT9HH0R2sO3WUK5L9t736c34XIn/uu2NoDk9SA2LmQq WgatHg/Xh3QQa6pNqZhYkbfPFrKs/FABbC/lrdPNfCFHqEU5Ku+cpsKay6tRZIWpuzblRLpjgzU 2zKBpF/+fJvPa4uiOgx2z/rVf2HOoSzJPI+WhjRMnrs5ejdtw2z3NPZSU+8ZdiIQavIBv+wMOU1 c+VcA1J5Y+JUkuGwCHUW2zmupvIhGujYL0blToBYidR2OXds0+6xZCB1/lO99pJXerxxzQ3ZrCJ bqfXwo9g71Gd++sU4CecHlWvJENFQ/AAVq+I7dgzjOUDvP1Xb5LKtls+Z1q32V8mGrQnwIb3B5x g1W4MLeuo0Cm8SqZpldgwiDerNoW3TC1O4SIMDi/1VazfNrGV0hlIi4R5G7H5Sj5HWZ3rGF+MQ/ LJXpJeEaw/ik5WhcLwg== X-Authority-Analysis: v=2.4 cv=H+LrBeYi c=1 sm=1 tr=0 ts=6a985059 cx=c_pps a=oc9J++0uMp73DTRD5QyR2A==:117 a=XwBYxoxBwSosfWEfMcqm5A==:17 a=IkcTkHD0fZMA:10 a=VdqzKS8jKosA:10 a=x7bEGLp0ZPQA:10 a=A0y_DWxS2BwA:10 a=VkNPw1HP01LnGYTKEx00:22 a=Da8U98TiO7q1upZEImrf:22 a=Qm0qsxP7aFY2tkT6R2MF:22 a=Z6_CKfthfhLzab0EPLcA:9 a=QEXdDO2ut3YA:10 a=iYH6xdkBrDN1Jqds4HTS:22 X-Proofpoint-ORIG-GUID: grLmzc5iF_rX552ZGg-8ehyDNWKVlRbC X-Proofpoint-GUID: grLmzc5iF_rX552ZGg-8ehyDNWKVlRbC X-Proofpoint-Virus-Version: vendor=nai engine=6900 definitions=11894 signatures=596817 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 lowpriorityscore=10 suspectscore=0 adultscore=0 phishscore=0 impostorscore=10 bulkscore=10 spamscore=0 clxscore=1015 priorityscore=1501 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2609020145 Convert find_or_create_page() to __filemap_get_folio(), keeping the existing GFP constraint. Saves three calls to compound_head(). The __ceph_do_getattr() locked page plumbing is converted separately, so pass &folio->page for now. Signed-off-by: Tal Zussman --- fs/ceph/addr.c | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/fs/ceph/addr.c b/fs/ceph/addr.c index f8844390f88d..16681133cf17 100644 --- a/fs/ceph/addr.c +++ b/fs/ceph/addr.c @@ -2047,29 +2047,30 @@ static vm_fault_t ceph_filemap_fault(struct vm_faul= t *vmf) ret =3D VM_FAULT_SIGBUS; } else { struct address_space *mapping =3D inode->i_mapping; - struct page *page; + struct folio *folio; =20 filemap_invalidate_lock_shared(mapping); - page =3D find_or_create_page(mapping, 0, + folio =3D __filemap_get_folio(mapping, 0, + FGP_LOCK | FGP_ACCESSED | FGP_CREAT, mapping_gfp_constraint(mapping, ~__GFP_FS)); - if (!page) { + if (IS_ERR(folio)) { ret =3D VM_FAULT_OOM; goto out_inline; } - err =3D __ceph_do_getattr(inode, page, + err =3D __ceph_do_getattr(inode, &folio->page, CEPH_STAT_CAP_INLINE_DATA, true); if (err < 0 || off >=3D i_size_read(inode)) { - unlock_page(page); - put_page(page); + folio_unlock(folio); + folio_put(folio); ret =3D vmf_error(err); goto out_inline; } - if (err < PAGE_SIZE) - zero_user_segment(page, err, PAGE_SIZE); + if (err < folio_size(folio)) + folio_zero_segment(folio, err, folio_size(folio)); else - flush_dcache_page(page); - SetPageUptodate(page); - vmf->page =3D page; + flush_dcache_folio(folio); + folio_mark_uptodate(folio); + vmf->page =3D folio_page(folio, 0); ret =3D VM_FAULT_MAJOR | VM_FAULT_LOCKED; out_inline: filemap_invalidate_unlock_shared(mapping); --=20 2.39.5 From nobody Sat Sep 26 09:21:25 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 1A3204A64F3 for ; Wed, 2 Sep 2026 16:35:34 +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=1788366937; cv=none; b=KZ67ZUQblEovaW2onZSLzgXUlAjmVxUXuXDotXasINLuRn8BLYn108H8yeM/d1wY2lGvoCmjz4eborSw+I26li/cwUq0Ohnh08mjppT9pZAxGhgB4jMe717dNJYG0OhlOxByCtzeynuG5KdAuULFYwLlyQfdcNv2ocJg6klJboM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788366937; c=relaxed/simple; bh=b+4cr//KTHdtH9y3belFVKy6m9NQe1/PbGrSu+2Fbo4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=mvocEroc1lRbWe7P1iJym1h/aQXaE6bvpVQHDXbjaUqYUd8QfU16WLcT3+Isz5wjzuC4MSbQKDN0/PhQfOYIsrmU1qOVZsErEqw0S2O6XsjzUhXUJqNoK8CvL7GhVBUFxtX8hqROpFYsgouRlzTY6cVw+kwIeVLIPWdx+OXQSuc= 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=WHiV+VVb; dkim=pass (2048-bit key) header.d=columbia.edu header.i=@columbia.edu header.b=o3mrWc5Q; 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="WHiV+VVb"; dkim=pass (2048-bit key) header.d=columbia.edu header.i=@columbia.edu header.b="o3mrWc5Q" Received: from pps.filterd (m0499198.ppops.net [127.0.0.1]) by mx0b-00364e01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 682GZIJR1056961 for ; Wed, 2 Sep 2026 12:35:34 -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=rGQy tyu+hfKlnP9ENWv2ki4cFbW5IycOKsm9AkBuG18=; b=WHiV+VVbMsaN1sFM3prF 2Lfipm/ZvQgVmA26ooifoRsLAKxxBYY64gqpilEERsPGsFx3Q1jEsaTcuUCPaVOp PLXz+dp0RqaVw2xFkam2QXYVJKZn+hmP5ZYiybJqlvBvPC/O/SCePvdiz0zQZvDo FK3Mix6m2C2zgJPt+p2ZrXAb2jKf1g2SPvOCXrS1zeuGdJwO1VUVf3Nr1eIn6bZK x+h0dRBWuW7hobOQz73pTJLtykCtxf/AQbb2w7jQEOKsdlvhfe2ZVDSiCH+hzF2e S9Vm8hZp+3fFBCUMIx0sSPgoMsGogf1WjgSuY79SaL95XW7B9ByX5WY4A6ypqTvy hw== Received: from mail-qv1-f71.google.com (mail-qv1-f71.google.com [209.85.219.71]) by mx0b-00364e01.pphosted.com (PPS) with ESMTPS id 4gegv7u6xs-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Wed, 02 Sep 2026 12:35:33 -0400 (EDT) Received: by mail-qv1-f71.google.com with SMTP id 6a1803df08f44-90c8da50f4fso17941356d6.0 for ; Wed, 02 Sep 2026 09:35:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=columbia.edu; s=lionmail; t=1788366933; x=1788971733; 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=rGQytyu+hfKlnP9ENWv2ki4cFbW5IycOKsm9AkBuG18=; b=o3mrWc5QS8uCQHneWoN3KQDU/PWOSp3HuD7Nk+l9A6cOFAyAeiHZ+4px4LtIPavMsE i05009V+7ysuMZdy3lmeVvySMU7NGhkLTO4m45lSU01qlUxnJ7MoHhcKkFPeqggrhoRn SPkNCCz/CByQxdYNwAE/l8CHNu7Ugro8nkv3sVph+NDh4sSVbcAvB3z3rEqjcqeVbIT8 6A7dK0So23f3aXVlRwKBXKMrfyMkG0nIJFjIU4nDp0sQqzYjrvlyyoazoUNLIorn6x0i y0+cqxW+T8RGyU67CTMtkAqhBJQv6j6mG+oHrp4aHvuqT4f2FHyOQIbnYSQsw78FMEMS GCNA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788366933; x=1788971733; 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=rGQytyu+hfKlnP9ENWv2ki4cFbW5IycOKsm9AkBuG18=; b=fdq9RsvzwI6zYmUJCs14gEUA0yVLpFDlsJeftCTZK3YvwGAnOZ8Q4gICn1ZE4WPlOk hS+6CVgQ4RnULkv93vJghYByZWSWPJFUWfrXWfI2RsEM9Nps1Jfd0jldZcjVKRf3Vh3F BxjONisQX4KfwneDXbugaTdjkO7jOONbxc2tTYLe7mWMIXuIE5sEkwXFTLAetfwwGoOx M/37fkzNkRb11ESKprG9GIFo0Be8Y3gEEM/nCffntVxHduxix7DbA+zwWX8Hy/O9Cfa7 w1bGK9vpEtQf44+OduAHzxx0e+TE8cp1EcH8aLd1PICPRawZorXA84VkfuNtmaCjWVtG v+UQ== X-Forwarded-Encrypted: i=1; AHgh+RpbmYvJLIrrij5RoxoadmuMQ30W1eXZnY2hShpbinQ3t+BpZqqXphbwqhiR006/jgLM2jI/IU2DsNcF/k8=@vger.kernel.org X-Gm-Message-State: AFuF++kgrKxS2kJtVBIs/u1vUz4CKt1qeJwVZMLpAwnV9K5z3yWLLqHD RvoGE/3KbPsNX5xXLr41dQXEYAXixqAXx2wIJV4KQEy374CwLIBy4wQdjTmJee/g0bfydeYcRC+ YrmgfJpzF95qFCx9OQwEBQkaWzIKh9SVLTbXpQaQ9UrZmsy1sNYWRRf2iBlvodA== X-Gm-Gg: AR+sD13ktJ1HGT3efNj42J+se5CaG9Zjf5hS6hCJSFEgopy2FAeL6+cIJglZkqY/Y2L lIME5QB5hFqfuamQQLR4JZG448riKxuWdDbd/WOLII+fItPHEABEnKCpmzeBWLjFVvyTAbqPnBM aCJsAlzeMJVtySZlcxcQ7Svoz8ZJHA9DGYeB0GJD/OIejx+JF5Cbap/5WDAjhrJIlHcMqJzAVwU bItmYVlOlk0XF8QVxuf83rrnuaXGcYj9QgfRuWiISWgQY4XrmA9VGgMDLnbNCO1+HQ05PqOC+ef G1OfIrScPRk6LAGw+LLR5r/VABvhwPA8pk2k6PIjqwXUckJDFuAoF0EdF8n1fFtfg3+tpZRItmS Yfcp6vH0k1wjDoGY0ne2+dGgE8sGbyXV7ghF48ybyyfpj3e3iTcEbmA== X-Received: by 2002:a05:620a:450f:b0:939:13a7:70f0 with SMTP id af79cd13be357-93960ccf33dmr685801785a.5.1788366933269; Wed, 02 Sep 2026 09:35:33 -0700 (PDT) X-Received: by 2002:a05:620a:450f:b0:939:13a7:70f0 with SMTP id af79cd13be357-93960ccf33dmr685796985a.5.1788366932798; Wed, 02 Sep 2026 09:35:32 -0700 (PDT) Received: from [127.0.1.1] (nat-128-59-178-193.net.columbia.edu. [128.59.178.193]) by smtp.gmail.com with ESMTPSA id 6a1803df08f44-90e9eef5067sm21805726d6.34.2026.09.02.09.35.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 02 Sep 2026 09:35:32 -0700 (PDT) From: Tal Zussman Date: Wed, 02 Sep 2026 12:35:09 -0400 Subject: [PATCH v2 3/5] ceph: use a folio in the READ_INLINE path of ceph_read_iter() 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: <20260902-ceph-inline-folio-v2-3-6c9098112352@columbia.edu> References: <20260902-ceph-inline-folio-v2-0-6c9098112352@columbia.edu> In-Reply-To: <20260902-ceph-inline-folio-v2-0-6c9098112352@columbia.edu> To: Ilya Dryomov , Alex Markuze , Viacheslav Dubeyko , Xiubo Li Cc: "Matthew Wilcox (Oracle)" , ceph-devel@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=1788366929; l=2358; i=tz2294@columbia.edu; s=20250528; h=from:subject:message-id; bh=b+4cr//KTHdtH9y3belFVKy6m9NQe1/PbGrSu+2Fbo4=; b=Da4oX/LTHkK/aaEoVeFCIuUv6xwKj0ErZkO66RR5jrhwVLBo76PSFr8Nt+lRCyVKoSunh5Zbc flwmJOJQx1nCHwdg1mH7hy6hbdsSxTFXhNTaACXoSFU6CufxJYJTZAc X-Developer-Key: i=tz2294@columbia.edu; a=ed25519; pk=BIj5KdACscEOyAC0oIkeZqLB3L94fzBnDccEooxeM5Y= X-Proofpoint-ORIG-GUID: FYUeoXPryjLsdgC-PL7P-C9-qgXfIS8r X-Proofpoint-GUID: FYUeoXPryjLsdgC-PL7P-C9-qgXfIS8r X-Proofpoint-Spam-Info: AW1haW4tMjYwOTAyMDE0NSBTYWx0ZWRfX190HoImZ+//R 0+kAHRfyGYdNu2On584daCxG6TIwPptRR0Bd4cVzO75LOeDD5nmatg6L2JGEpW3dlv9BELD7sfD u4yAcwJ2zNPbBjpMzi5Nv5AJlhpKsYOKsU9wPJwMrcT83ec4PiDm X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwOTAyMDE0NSBTYWx0ZWRfXwpMsbaIWnsbw xdADwW8jWpDFqtGUt4+t/wAbM4nk7ylD5AiGFrrtVjphf0pE0K45lusdYKfbLAV/usTHJVyvXue 26myuNoaMW40DJujPV16s8TmpC7toJBJR1p/udz307STT0SSLy128GfFrJtcCvcYZx3dIGL9KAy fB+weRQvpLFVEiWtnyEik3L4UFA1W/PuNG/zm33tlcqjpF8AsK7NXzIOjFOch2wMgHLbcFqtxrt 9hIzf5hHt+Fei5dkFat+QtBYQhp7syEBQMor+PjoqV2g1lDWBde1EkFLNMmNT68g2FXRHeZzt8N JGjhvxsufR9pfyKVYhSP3G5PJGdxL5SJku7MTXUhGtrrfYSq/8Uz8LGPzWcrkQS88jxRxkhM+fl mwHeEluo+gjKck30wrJojrCBlNqkNRxE/zIOc5ODql7eih0Umhx/R6fh3wg4KmgymBFsjSvOxIb 2jjodZW8ym+w1j+ymzA== X-Authority-Analysis: v=2.4 cv=JcCMa0KV c=1 sm=1 tr=0 ts=6a985055 cx=c_pps a=UgVkIMxJMSkC9lv97toC5g==:117 a=XwBYxoxBwSosfWEfMcqm5A==:17 a=lYjiPEibtFqA77pR:21 a=IkcTkHD0fZMA:10 a=VdqzKS8jKosA:10 a=x7bEGLp0ZPQA:10 a=A0y_DWxS2BwA:10 a=VkNPw1HP01LnGYTKEx00:22 a=Da8U98TiO7q1upZEImrf:22 a=BpGzv1V74M3SfeTrGa8v:22 a=lJkK8zq6xVIZ8jstRnwA:9 a=+jEqtf1s3R9VXZ0wqowq2kgwd+I=:19 a=QEXdDO2ut3YA:10 a=1HOtulTD9v-eNWfpl4qZ:22 X-Proofpoint-Virus-Version: vendor=nai engine=6900 definitions=11894 signatures=596817 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=10 spamscore=0 suspectscore=0 adultscore=0 bulkscore=10 malwarescore=0 clxscore=1015 phishscore=0 lowpriorityscore=10 priorityscore=1501 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2609020145 The inline data is read into a scratch buffer that never enters the page cache, so allocate it with folio_alloc() instead of __page_cache_alloc(). This drops the cpuset page spreading that __page_cache_alloc() applies on NUMA systems, which only makes sense for page cache pages. The temporary buffer here is better off node local. The mismatched __free_page()/__free_pages() pair both become folio_put(). The __ceph_do_getattr() locked page plumbing will be converted in a later patch, so pass &folio->page for now. Signed-off-by: Tal Zussman --- fs/ceph/file.c | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/fs/ceph/file.c b/fs/ceph/file.c index d5606456dbd5..f0e77a1ab4d1 100644 --- a/fs/ceph/file.c +++ b/fs/ceph/file.c @@ -2247,21 +2247,22 @@ static ssize_t ceph_read_iter(struct kiocb *iocb, s= truct iov_iter *to) =20 if (retry_op > HAVE_RETRIED && ret >=3D 0) { int statret; - struct page *page =3D NULL; + struct folio *folio =3D NULL; loff_t i_size; int mask =3D CEPH_STAT_CAP_SIZE; if (retry_op =3D=3D READ_INLINE) { - page =3D __page_cache_alloc(GFP_KERNEL); - if (!page) + folio =3D folio_alloc(GFP_KERNEL, 0); + if (!folio) return -ENOMEM; =20 mask =3D CEPH_STAT_CAP_INLINE_DATA; } =20 - statret =3D __ceph_do_getattr(inode, page, mask, !!page); + statret =3D __ceph_do_getattr(inode, folio ? &folio->page : NULL, + mask, !!folio); if (statret < 0) { - if (page) - __free_page(page); + if (folio) + folio_put(folio); if (statret =3D=3D -ENODATA) { BUG_ON(retry_op !=3D READ_INLINE); goto again; @@ -2278,8 +2279,8 @@ static ssize_t ceph_read_iter(struct kiocb *iocb, str= uct iov_iter *to) iocb->ki_pos + len); end =3D min_t(loff_t, end, PAGE_SIZE); if (statret < end) - zero_user_segment(page, statret, end); - ret =3D copy_page_to_iter(page, + folio_zero_segment(folio, statret, end); + ret =3D copy_folio_to_iter(folio, iocb->ki_pos & ~PAGE_MASK, end - iocb->ki_pos, to); iocb->ki_pos +=3D ret; @@ -2292,7 +2293,7 @@ static ssize_t ceph_read_iter(struct kiocb *iocb, str= uct iov_iter *to) iocb->ki_pos +=3D ret; read +=3D ret; } - __free_pages(page, 0); + folio_put(folio); return read; } =20 --=20 2.39.5 From nobody Sat Sep 26 09:21:25 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 8E2DD4AA40F for ; Wed, 2 Sep 2026 16:35:36 +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=1788366938; cv=none; b=tCqFuhq9mU7qrqPwBLhu5JFiOnu8fWTKtxnLOaD+oHTw5ajX4l372UflsVIzJYzJweYNE4enVlkd00xj1MDvAfU/V3uhXTjCGPCwM23g16qTeOj5DvEaexkcXEwvAPElYQOmeVqPFDEjBcz0CrGTvw8kGJFg4O2vtWWyYT2LFMs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788366938; c=relaxed/simple; bh=FKNO/gpmAVt+VDw7el0xjVHLO1MIiNJKgMXIKJGAeK0=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=ZLftCVpBYvxx0YBp8sk9RKBWwqXGw4irdpDNSSAE6fe7YwZVE9em9axHGNh/31zK7a43BUITDWlouCZvQ8wMqJMYhgjRKw4kBHO6gOiOyHQhNekihoLRE1GIfBKY3BH5boxONNovRhc8JOfpcvzVBxnNSMYNBwdaVc6xStkeR8k= 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=G5/2Wf4s; dkim=pass (2048-bit key) header.d=columbia.edu header.i=@columbia.edu header.b=qb7LErgT; 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="G5/2Wf4s"; dkim=pass (2048-bit key) header.d=columbia.edu header.i=@columbia.edu header.b="qb7LErgT" 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 682GZ5id621520 for ; Wed, 2 Sep 2026 12:35:35 -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=GTwc o3hmUZRwt41gI95cTAhbEEbMLzY1+oJYH554KZY=; b=G5/2Wf4sfp+nLTaNfhyM eBhy3vvGhz0z/aOeesEV+cXgTaYY/dPfKNC5976Fv/yCx9tBoPkSGMQkL3okQRjL YpNdGmhtdcRuRJIDUxVbVmxv7LRebB+RnpSvecGQQ1W4ovsfT1s+X/bNb1r0gQS7 LaQn2KtYb/4YgT7pPhdTNOrkjsIqs7BSMfrohCjjBmnHKMtlQR+Pc3xPupHOSK7Z DuL/TcRiUo2N1Doid8IeSiTd54xbCQ6u8tetgtX3G0cLpy6eMJVQNGrU4UGrKrrl sq5Ak44RosC3uOZNR9Veo+4YlE6AmfBDjbX1XVzaK4MCShJcLRREoRA7q3qzN2qB Vw== Received: from mail-qv1-f71.google.com (mail-qv1-f71.google.com [209.85.219.71]) by mx0b-00364e01.pphosted.com (PPS) with ESMTPS id 4ge833w64d-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Wed, 02 Sep 2026 12:35:35 -0400 (EDT) Received: by mail-qv1-f71.google.com with SMTP id 6a1803df08f44-90ceabcd64aso27020976d6.3 for ; Wed, 02 Sep 2026 09:35:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=columbia.edu; s=lionmail; t=1788366934; x=1788971734; 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=GTwco3hmUZRwt41gI95cTAhbEEbMLzY1+oJYH554KZY=; b=qb7LErgTIcfjnQpOt4yLwju3QOP6e8f/XVxjAvvKGuDbhvweGUbO0chLdh9FK8jK2z 5wBdS0+DPzrCrKziBAl72b/9XqEf7Xpl86u4VVx9aPQCj6nOXL/XVu753Vf9AtRVTUBO thzjLLCogQu/CbZtJue09ypGp5HpDY+bMNLXXEdVcO0Vvpqn06nkvWK+j0t6GdAjRYqm SmQ+bFpywsN2y64DIHFZh4dR2Q/E4ga2ozFAhxUQJMO5DwcEk/y3nHDM+Jxby12gaBYt Rv+VANZ3RHCvGCf5NIW2vk1xrKCqM5pgSQ7lHXDhJhpb7zQgxwi8xXkfvGzuWrMpaV+t rdkg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788366934; x=1788971734; 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=GTwco3hmUZRwt41gI95cTAhbEEbMLzY1+oJYH554KZY=; b=dCHYXyKC37c3sZjL2fNV00kyqjs6sLMz0mUShK1dsKrUnDzrkOV+CAeOXpT+gIMumr hEtT3E5pLadUk1yVmU516n/LetbCky3wvedJi/9g3F2XNgWjD5IDqqs1uXsdgn+u9xnm xmscqfiFG9MKSLBGrYwbSYaa+HBF9r0sydFWmH5adFiIEUyCz9wlU2+K7wbbUhkhOdUm ysvmIMdXz78CbIUr1hW0+hNwAlgbErXuJkyvKcCRfg5hN7uyNUTdJIBy5KfPk3Cytxt8 vJL+aV8G54pDW7Dh66n5dPV1B3+qzmQ3ql/jCCRxhjOVwbLDl/2zgspc77jkE/xoZEdt Rn4A== X-Forwarded-Encrypted: i=1; AKwUvBy0c+Vz2S/N41dJ63eeesdiZlB4ftDMVGdCqA4Dfj86Ch7lymQTD+x0EjKcqKsnAFj0r/nzhJ8a0zhHVUI=@vger.kernel.org X-Gm-Message-State: AFuF++ln4I7fNf/HEITl/Wph3FQ0vHn8avUP2GafGlnGgUjDSf7kW5gb 5Z/w21UvfBpc/Uq1UyWsLj9s418Qiy0BDlD56Umb3pidJplAm2Ey7E3xLFUQ9Xir5qApyIZocY7 K+lqdoX33bINXnz7QdLK8vI+2XQBc77F4GNvoK6SJglNOLpoKKNM8BCPYurAQrwE0YAvbUV5Q X-Gm-Gg: AYBFou0ld6R9yqxk4JS1mtgEXZTMsUiSSt5DvWdI8NIhsjAhsiPPVjDXzqOnlcKkBbE lF9ANzg45J1pid02pnxgHrNuRmyIgw5TKeDDsFimgGRPu8hwg7ll6qzMDo8gwMfYcZVwSvW4Gsg 4LLix+e40No6UKVh/XQ8wvfNKtdg65wk20+fk36A9HMlKLlsvCAS/Dp+hOEsun6y0nOF5Didz0u A5kp3qdwVpx416LP/K7zddiyMbVUA/eRyIjvUgSkGg/9WHDX5z9afXmTbDPYzO2ltBCEzHw6i5L WTuOmEe+NChMZmgHyYn3mDevMRkTtuWdjvgo/stuxoQHuTz6OC13xCkCrf8KAabJZc9R6mJs+Qz 9FOF7MELzCzMJq9kj6jh7q94cftUubgaeBoSd+XGuVIrAkzg+uxpsaA== X-Received: by 2002:a05:6214:3d9b:b0:90e:98b2:f594 with SMTP id 6a1803df08f44-90eca37a1eamr95960456d6.17.1788366934275; Wed, 02 Sep 2026 09:35:34 -0700 (PDT) X-Received: by 2002:a05:6214:3d9b:b0:90e:98b2:f594 with SMTP id 6a1803df08f44-90eca37a1eamr95959726d6.17.1788366933830; Wed, 02 Sep 2026 09:35:33 -0700 (PDT) Received: from [127.0.1.1] (nat-128-59-178-193.net.columbia.edu. [128.59.178.193]) by smtp.gmail.com with ESMTPSA id 6a1803df08f44-90e9eef5067sm21805726d6.34.2026.09.02.09.35.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 02 Sep 2026 09:35:33 -0700 (PDT) From: Tal Zussman Date: Wed, 02 Sep 2026 12:35:10 -0400 Subject: [PATCH v2 4/5] ceph: convert ceph_fill_inline_data() to take a folio 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: <20260902-ceph-inline-folio-v2-4-6c9098112352@columbia.edu> References: <20260902-ceph-inline-folio-v2-0-6c9098112352@columbia.edu> In-Reply-To: <20260902-ceph-inline-folio-v2-0-6c9098112352@columbia.edu> To: Ilya Dryomov , Alex Markuze , Viacheslav Dubeyko , Xiubo Li Cc: "Matthew Wilcox (Oracle)" , ceph-devel@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=1788366929; l=4383; i=tz2294@columbia.edu; s=20250528; h=from:subject:message-id; bh=FKNO/gpmAVt+VDw7el0xjVHLO1MIiNJKgMXIKJGAeK0=; b=UhYWP6M6sORULWDfmLlyNcydClno0w8htjUfHIgnBlxtwz0xplWEFIk0Y1dWAVmjsUVMtbFvZ 96nylYeIw1EALKDWJaQjsfNrU+p1lYZioTT4n8xbMfbsBVSuGzGzXdE X-Developer-Key: i=tz2294@columbia.edu; a=ed25519; pk=BIj5KdACscEOyAC0oIkeZqLB3L94fzBnDccEooxeM5Y= X-Proofpoint-GUID: A23x3grOhycpUQF_2LmAtOBxHmT9W3dj X-Proofpoint-Spam-Info: AW1haW4tMjYwOTAyMDE0NSBTYWx0ZWRfXzwuR4ptZPXOy Vbk79wcn3OtDbdPP/AAqcIpEIHdfKkZVUMBfhNEOJ7CK0qRp3I1O1tded587YcfiWzdyk26SZ9w XJ9WtQwG/so80wsQCSJTpse2wn2RZy6M22VOxLxIJYS5JYIpA9m8 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwOTAyMDE0NSBTYWx0ZWRfX0DJWvBsORygU PZtnbjMVQGk0tU5kY4CITS+jHr2Jjon5/TETHV+b1oelpt6N6tGMbOW4gB5AFUCXL/LfakfwSr4 CH3oLIvg/0DBUvJw0wuA2RTtRTdIBUJIedIxFr9YzNcB4zRu5zXZmEQmBDflw6ka+uAQLhCJGmD bLr1864bq0l521SpDobA7kUFqtpn6AOmT9DWb4CK6yjcJOZrW23S6aJHLQPGHPBsfdcRqB/aLUB XCmlXbjAU2KvWsD2TWs3FelOiVsDAz1menp015Ly80NTgna5K94Tz8whnVtfj/Myv/4a4Lq2sWj MJKsZHGkfjYzZjs03ACoUKkz9BmoFkYtCJo00onUPik+J5DYvcOQYwpzJyhLFxjA41dzeyttumX o/pZzEGfee/lyakf3jf3CkGcjFzGYGg9Xs2RDPs4T0X2NoZhZhhZziM75Dy/UyHGUFdJONpeg5f h3xGT5p6hAgplTWoFEQ== X-Authority-Analysis: v=2.4 cv=ZpPd7d7G c=1 sm=1 tr=0 ts=6a985057 cx=c_pps a=UgVkIMxJMSkC9lv97toC5g==:117 a=XwBYxoxBwSosfWEfMcqm5A==: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=WbdBKpkgloUaICT7gCgA:9 a=QEXdDO2ut3YA:10 a=1HOtulTD9v-eNWfpl4qZ:22 X-Proofpoint-ORIG-GUID: A23x3grOhycpUQF_2LmAtOBxHmT9W3dj X-Proofpoint-Virus-Version: vendor=nai engine=6900 definitions=11894 signatures=596817 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 lowpriorityscore=10 suspectscore=0 adultscore=0 clxscore=1015 spamscore=0 phishscore=0 impostorscore=10 priorityscore=1501 bulkscore=10 malwarescore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2609020145 Convert the internals to folio APIs and pass a folio in from ceph_fill_inode(). The kmap_atomic()/memcpy() pair becomes memcpy_to_folio(), which also flushes the dcache, so drop the explicit flush from the folio creation path. When a locked folio is passed in, the callers flush after filling it, so the flush in memcpy_to_folio() is redundant there, but harmless. This removes the last caller of find_or_create_page() in ceph and saves six calls to compound_head(). The page_folio() call added in ceph_fill_inode() goes away once the locked page plumbing is converted. Remove extern from the function declaration while at it. Signed-off-by: Tal Zussman --- fs/ceph/addr.c | 47 +++++++++++++++++++++-------------------------- fs/ceph/inode.c | 3 ++- fs/ceph/super.h | 6 +++--- 3 files changed, 26 insertions(+), 30 deletions(-) diff --git a/fs/ceph/addr.c b/fs/ceph/addr.c index 16681133cf17..71d9f7bdb0c6 100644 --- a/fs/ceph/addr.c +++ b/fs/ceph/addr.c @@ -2190,50 +2190,45 @@ static vm_fault_t ceph_page_mkwrite(struct vm_fault= *vmf) } =20 #ifdef CONFIG_CEPH_FS_INLINE_DATA -void ceph_fill_inline_data(struct inode *inode, struct page *locked_page, +void ceph_fill_inline_data(struct inode *inode, struct folio *locked_folio, char *data, size_t len) { struct ceph_client *cl =3D ceph_inode_to_client(inode); struct address_space *mapping =3D inode->i_mapping; - struct page *page; + struct folio *folio; =20 - if (locked_page) { - page =3D locked_page; + if (locked_folio) { + folio =3D locked_folio; } else { if (i_size_read(inode) =3D=3D 0) return; - page =3D find_or_create_page(mapping, 0, - mapping_gfp_constraint(mapping, - ~__GFP_FS)); - if (!page) + folio =3D __filemap_get_folio(mapping, 0, + FGP_LOCK | FGP_ACCESSED | FGP_CREAT, + mapping_gfp_constraint(mapping, ~__GFP_FS)); + if (IS_ERR(folio)) return; - if (PageUptodate(page)) { - unlock_page(page); - put_page(page); + if (folio_test_uptodate(folio)) { + folio_unlock(folio); + folio_put(folio); return; } } =20 - doutc(cl, "%p %llx.%llx len %zu locked_page %p\n", inode, - ceph_vinop(inode), len, locked_page); + doutc(cl, "%p %llx.%llx len %zu locked_folio %p\n", inode, + ceph_vinop(inode), len, locked_folio); =20 - if (len > 0) { - void *kaddr =3D kmap_atomic(page); - memcpy(kaddr, data, len); - kunmap_atomic(kaddr); - } + if (len > 0) + memcpy_to_folio(folio, 0, data, len); =20 - if (page !=3D locked_page) { - if (len < PAGE_SIZE) - zero_user_segment(page, len, PAGE_SIZE); - else - flush_dcache_page(page); + if (folio !=3D locked_folio) { + if (len < folio_size(folio)) + folio_zero_segment(folio, len, folio_size(folio)); =20 if (len > 0) - SetPageUptodate(page); + folio_mark_uptodate(folio); =20 - unlock_page(page); - put_page(page); + folio_unlock(folio); + folio_put(folio); } } =20 diff --git a/fs/ceph/inode.c b/fs/ceph/inode.c index 209e8972287d..21d72b7667bc 100644 --- a/fs/ceph/inode.c +++ b/fs/ceph/inode.c @@ -1454,7 +1454,8 @@ int ceph_fill_inode(struct inode *inode, struct page = *locked_page, ceph_fscache_register_inode_cookie(inode); =20 if (fill_inline) - ceph_fill_inline_data(inode, locked_page, + ceph_fill_inline_data(inode, + locked_page ? page_folio(locked_page) : NULL, iinfo->inline_data, iinfo->inline_len); =20 if (wake) diff --git a/fs/ceph/super.h b/fs/ceph/super.h index f3d99027e193..ed750ea73d85 100644 --- a/fs/ceph/super.h +++ b/fs/ceph/super.h @@ -1434,8 +1434,8 @@ int ceph_purge_inode_cap(struct inode *inode, struct = ceph_cap *cap, bool *invali =20 #ifdef CONFIG_CEPH_FS_INLINE_DATA extern int ceph_uninline_data(struct file *file); -extern void ceph_fill_inline_data(struct inode *inode, struct page *locked= _page, - char *data, size_t len); +void ceph_fill_inline_data(struct inode *inode, struct folio *locked_folio, + char *data, size_t len); =20 static inline u64 ceph_inline_version(const struct ceph_inode_info *ci) { @@ -1459,7 +1459,7 @@ static inline int ceph_uninline_data(struct file *fil= e) } =20 static inline void ceph_fill_inline_data(struct inode *inode, - struct page *locked_page, + struct folio *locked_folio, char *data, size_t len) { } --=20 2.39.5 From nobody Sat Sep 26 09:21:25 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 AE7584AA59B for ; Wed, 2 Sep 2026 16:35:37 +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=1788366939; cv=none; b=h2pVLjKWi8lToRwra+Yt1dHGRIrX5MFQcFXEAnFYLzUeryyiMSEqfkbiHbgaCjO/fH4VzBjNQvQUO/oYX3N0z72Xu9nH16ehqyf7xQ3mRdNF2uk8aXv3bNJIAqPQzIsdAyeUO5ptvmnvY/l8eI44tV5gIfuytLDW3kMZlBaeGnw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788366939; c=relaxed/simple; bh=WEHlyr4Efxhk5teTrx1ZhLj53CZbT4uxkhVjxj4C5YA=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=AX4Pf4CoTI3VdkUTGaghpjMGWBhGPXrHrXNer5hc0jkNXlH8puQaBumM5yNnEsYvLmgLPJJazZH3jSndAiLzFxeeiHrQkMjgh8IAI3HCIlVAaXGB0somHEg8wgfxfeUr2PzKL2irNQzoEGSUWtv4KMlutROEtmw75EHb65zFMz0= 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=nvGJgtg1; dkim=pass (2048-bit key) header.d=columbia.edu header.i=@columbia.edu header.b=C+oQV6jF; 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="nvGJgtg1"; dkim=pass (2048-bit key) header.d=columbia.edu header.i=@columbia.edu header.b="C+oQV6jF" 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 682GZ4Ok506205 for ; Wed, 2 Sep 2026 12:35:36 -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=UFiN X9OJ9AlNvX71DGEWb4R21Djm99DB5fOLNXEMpJo=; b=nvGJgtg185Lja6OGb+3d QsAPKWRCWlum3i9LwVvviIXOCgWYq08/nk8EsF+5Frd3nYwJ7h3PpCO6n9JNXpxt 8M1J6lpfBa4kGa+SwmHDzIffg2YmhAQb+r5hL2bXyrZRuLtwYM0UvtRO7RD4QUpY OFC65akkVQAcMX11BL8WPrVycGxaPHOAD+1CfzsSn3KnL81QpaCGgQ9iBwYNlPWj Ube8wrwJnRkOwyOxvc7+hgfT7fGtmBW/Py6osniuWJ5FLK1lJeJKDBwkSJHR7ue0 NXqgr/UB716iPhjkIOtWBwHu/1f5IqleMS+YZxBL6V7L53sNo/8ovNes3KNktFWs +w== Received: from mail-qv1-f70.google.com (mail-qv1-f70.google.com [209.85.219.70]) by mx0b-00364e01.pphosted.com (PPS) with ESMTPS id 4ge835d59n-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Wed, 02 Sep 2026 12:35:36 -0400 (EDT) Received: by mail-qv1-f70.google.com with SMTP id 6a1803df08f44-90e87478402so35948836d6.1 for ; Wed, 02 Sep 2026 09:35:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=columbia.edu; s=lionmail; t=1788366935; x=1788971735; 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=UFiNX9OJ9AlNvX71DGEWb4R21Djm99DB5fOLNXEMpJo=; b=C+oQV6jFnu6DT1cZ52VpmDJTqhpXF0pTGKDdZuQIto4FvjWHQsJijKA0FubuYQeLhc nkpWTfVOQuaf5xpq1Jfjq9oQAZZZXaYZgbuP6YDWOfOUCZEIv6mqtmxzGpJL9BZ7EHnQ kK6CZLPo+tI8PGhzZxFnaJKthx9G5I0iU0pPMgW+zctUBO3D2+K5AVwjFkE9D0rl4vQw QVLdEFNnoTCfCmkoWi/Z/wivrSKgLcWhwBc7GPU6+8VY46cAFWaLQquuddsUW5v34Vic o618pt1ZnhZjZ4nnW+NH7UZzyvm5TQekf/CEtlNaB0oKDtPtp1b4B9UYyidknnbM9yr7 csog== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788366935; x=1788971735; 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=UFiNX9OJ9AlNvX71DGEWb4R21Djm99DB5fOLNXEMpJo=; b=OC8GfhkPq/Vy5CDH1on1wPgt48RU/IpSQWBt37F4ndEofZGbEItgRq7eRcURWwXskA IYvDYlj+tVIUs+wBNn9hKKyKG8V3fnBk1ub2rCP1Cod5oIANhuWF8/sdgYWB+TeCco60 Yh6bm/PT+QbnyBPoXmzFGttisC/V5DewOV6OtZQAKs7D8zP6PPXV1bNxe5qP+P5xAmT8 O5erRvfp21PFWfl5yWHhPQ/QbJuU5LahoRgYnluHuKvd7VPp4B/MLQGTw7q58e5dO26O WSzDzMiGAr7bnEQt0Cz7c74KXb995TRu2q6x6fgWDuRqPvTs5PVwzJgxwYP5D1yEvI8Y n4ZA== X-Forwarded-Encrypted: i=1; AKwUvBx+Rf4ozoS7B3keWtcd0DLRRaDEnZNajci2o/VjwFhvq2aG4JzxfNluuOAJ355nwP8lmkhVtPZwzi07hH4=@vger.kernel.org X-Gm-Message-State: AFuF++kC03/wyxeudCs3U6ArOVlzR3TDTJG6QxQaZ4bwAzlPuXlU1+Ve KwsaXJR86A4IqKgv3bcv5yALG0QrtUiQ6v/iwk9iiOoHTWjblzDCJARt5obEBEMm5JVh8Iwq1J3 hvKT9/D7efL3nmGpzgNw16g3DIYTihdG8mA6cMgmSub8xpsfIFRo/WUJoys4/Yg== X-Gm-Gg: AYBFou2g2Ta1zSNk4Gpf6ZscYcV2PJB+kaDMEx6yWBsEICrevrV5vy5O3kMMVMhR1/g BXZ75PEQmPssspUJZX+1ytr5DfygNyj8dTBf3qAJ/ksrlQmtMJewYEEj9/yhHfk4tQRD1+lG9Eh 6xaTpiCAy8SOUKGNsmvwbIT7YKWbM6Y1d1P/UAtMxkMxkubFOFEB/xzch/bXu1qshdXRV1k9Zq+ lDfxS7lgrVKlu6YfCv83xkaVIP9YOSwremg9jffdeq0NOR3KifgkL9NHPbILBQlNenezk5c9jel w4eGYmo5UCc49YeCTL/aWdcgjHxK2cmHXivqa0goUae3YPF6DJrk9A5GrHx2i2rW8j6as2F8tuW N69TUSMEDnUQuqi8sIhjdwUXXXdDynYoXcvTtHotBs3EqLE3gUezZow== X-Received: by 2002:ad4:5d69:0:b0:90d:3322:4e1a with SMTP id 6a1803df08f44-90ebafc70a3mr80095146d6.4.1788366935337; Wed, 02 Sep 2026 09:35:35 -0700 (PDT) X-Received: by 2002:ad4:5d69:0:b0:90d:3322:4e1a with SMTP id 6a1803df08f44-90ebafc70a3mr80094466d6.4.1788366934737; Wed, 02 Sep 2026 09:35:34 -0700 (PDT) Received: from [127.0.1.1] (nat-128-59-178-193.net.columbia.edu. [128.59.178.193]) by smtp.gmail.com with ESMTPSA id 6a1803df08f44-90e9eef5067sm21805726d6.34.2026.09.02.09.35.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 02 Sep 2026 09:35:34 -0700 (PDT) From: Tal Zussman Date: Wed, 02 Sep 2026 12:35:11 -0400 Subject: [PATCH v2 5/5] ceph: convert r_locked_page to r_locked_folio 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: <20260902-ceph-inline-folio-v2-5-6c9098112352@columbia.edu> References: <20260902-ceph-inline-folio-v2-0-6c9098112352@columbia.edu> In-Reply-To: <20260902-ceph-inline-folio-v2-0-6c9098112352@columbia.edu> To: Ilya Dryomov , Alex Markuze , Viacheslav Dubeyko , Xiubo Li Cc: "Matthew Wilcox (Oracle)" , ceph-devel@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=1788366929; l=5916; i=tz2294@columbia.edu; s=20250528; h=from:subject:message-id; bh=WEHlyr4Efxhk5teTrx1ZhLj53CZbT4uxkhVjxj4C5YA=; b=XauyQTbxlRlgKNE1mh+cat/5ZOb1R+XGfML7xNzgZnPcv1Z7ktxRH7oWHbX5e0FkZX/v+vmOZ Mu1Q1HJRdpdD8yZyuZtMyvNUZvtL5c/Ty6mFO0TUQtLG8YCQUJ56fHG X-Developer-Key: i=tz2294@columbia.edu; a=ed25519; pk=BIj5KdACscEOyAC0oIkeZqLB3L94fzBnDccEooxeM5Y= X-Proofpoint-Spam-Info: AW1haW4tMjYwOTAyMDE0NiBTYWx0ZWRfXxa3Z0YR4e+SG 48buU6RZx7BCeiviLdSnVIRn24ni1XmDuQPVdXPxT0oySNH3nWpCjM+znUGnecUfQ89fwMKbTRW CsMwcWiSCayuX66Bmvst9B89pTY3IPEctE8j6sW9a2GfLVxpABC2 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwOTAyMDE0NiBTYWx0ZWRfXygAMBCBt27SM YK1mdZdqpD/WUQzpvwT5ibyNbXDPY16/3MNHE5zeLjmOXznJp8/Cq8gLULbxGns42I6gu9lLNEa gAtNG8p9e7Sy6S6HdtIn7z4d6hM8Zmc5rh8u9jWMpb/wurPAXB3ovc2M55xlCIWqVbubDxVeNBO jhePmqQl/Gxd+IXMGqUCMG90AiUJiduakfXL04V8vl7E+SFfVLcw98OI7F5BgVq6kWeONgoCeRe 7RQfKgde0QdFAoacmfHVrCW/W4d8r5xP1hCIxkoRQnMUqUuYT5nfFBUHP0zI9/yoP+VZDVTd6TS 77f4wenzqc6Qna679ifD65sj9RTQS/aJg+Mt51ogVCx07WfmQiH7Qur5O0r/gWwgka0KQ3YRaMS zX+bPlCTX0StqOmq1XYERNaacwvfq8B1hLFhczRXS18dqwppD7mmFgy8Zh0rJQ5DdTMzhS6WCg6 /G5xvdyhxSXs5IYLUnQ== X-Authority-Analysis: v=2.4 cv=XY+5Co55 c=1 sm=1 tr=0 ts=6a985058 cx=c_pps a=oc9J++0uMp73DTRD5QyR2A==:117 a=XwBYxoxBwSosfWEfMcqm5A==:17 a=IkcTkHD0fZMA:10 a=VdqzKS8jKosA:10 a=x7bEGLp0ZPQA:10 a=A0y_DWxS2BwA:10 a=VkNPw1HP01LnGYTKEx00:22 a=Da8U98TiO7q1upZEImrf:22 a=QOCMdifcju39GKoXhKua:22 a=945u1j8887UpmP1-4VoA:9 a=QEXdDO2ut3YA:10 a=iYH6xdkBrDN1Jqds4HTS:22 X-Proofpoint-ORIG-GUID: yJtLIxwxzzGhIuGvngYh5UW0c53rPDdq X-Proofpoint-GUID: yJtLIxwxzzGhIuGvngYh5UW0c53rPDdq X-Proofpoint-Virus-Version: vendor=nai engine=6900 definitions=11894 signatures=596817 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 bulkscore=10 priorityscore=1501 malwarescore=0 phishscore=0 impostorscore=10 lowpriorityscore=10 adultscore=0 clxscore=1015 spamscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2609020146 Pass a folio through the inline data plumbing: __ceph_do_getattr(), struct ceph_mds_request, and ceph_fill_inode(). No callers pass a page anymore, so this removes the &folio->page conversions in the fault and READ_INLINE paths and the page_folio() call in ceph_fill_inode(). Remove externs from function declarations while at it. Signed-off-by: Tal Zussman --- fs/ceph/addr.c | 2 +- fs/ceph/file.c | 3 +-- fs/ceph/inode.c | 15 +++++++-------- fs/ceph/mds_client.h | 2 +- fs/ceph/super.h | 6 +++--- 5 files changed, 13 insertions(+), 15 deletions(-) diff --git a/fs/ceph/addr.c b/fs/ceph/addr.c index 71d9f7bdb0c6..9ea44ae8dd6a 100644 --- a/fs/ceph/addr.c +++ b/fs/ceph/addr.c @@ -2057,7 +2057,7 @@ static vm_fault_t ceph_filemap_fault(struct vm_fault = *vmf) ret =3D VM_FAULT_OOM; goto out_inline; } - err =3D __ceph_do_getattr(inode, &folio->page, + err =3D __ceph_do_getattr(inode, folio, CEPH_STAT_CAP_INLINE_DATA, true); if (err < 0 || off >=3D i_size_read(inode)) { folio_unlock(folio); diff --git a/fs/ceph/file.c b/fs/ceph/file.c index f0e77a1ab4d1..7ec5d3192974 100644 --- a/fs/ceph/file.c +++ b/fs/ceph/file.c @@ -2258,8 +2258,7 @@ static ssize_t ceph_read_iter(struct kiocb *iocb, str= uct iov_iter *to) mask =3D CEPH_STAT_CAP_INLINE_DATA; } =20 - statret =3D __ceph_do_getattr(inode, folio ? &folio->page : NULL, - mask, !!folio); + statret =3D __ceph_do_getattr(inode, folio, mask, !!folio); if (statret < 0) { if (folio) folio_put(folio); diff --git a/fs/ceph/inode.c b/fs/ceph/inode.c index 21d72b7667bc..149a82f0b3c8 100644 --- a/fs/ceph/inode.c +++ b/fs/ceph/inode.c @@ -1081,7 +1081,7 @@ static int decode_encrypted_symlink(struct ceph_mds_c= lient *mdsc, * Populate an inode based on info from mds. May be called on new or * existing inodes. */ -int ceph_fill_inode(struct inode *inode, struct page *locked_page, +int ceph_fill_inode(struct inode *inode, struct folio *locked_folio, struct ceph_mds_reply_info_in *iinfo, struct ceph_mds_reply_dirfrag *dirinfo, struct ceph_mds_session *session, int cap_fmode, @@ -1438,7 +1438,7 @@ int ceph_fill_inode(struct inode *inode, struct page = *locked_page, int cache_caps =3D CEPH_CAP_FILE_CACHE | CEPH_CAP_FILE_LAZYIO; ceph_set_inline_version(ci, iinfo->inline_version); if (ceph_has_inline_data(ci) && - (locked_page || (info_caps & cache_caps))) + (locked_folio || (info_caps & cache_caps))) fill_inline =3D true; } =20 @@ -1454,8 +1454,7 @@ int ceph_fill_inode(struct inode *inode, struct page = *locked_page, ceph_fscache_register_inode_cookie(inode); =20 if (fill_inline) - ceph_fill_inline_data(inode, - locked_page ? page_folio(locked_page) : NULL, + ceph_fill_inline_data(inode, locked_folio, iinfo->inline_data, iinfo->inline_len); =20 if (wake) @@ -1785,7 +1784,7 @@ int ceph_fill_trace(struct super_block *sb, struct ce= ph_mds_request *req) =20 in =3D req->r_target_inode; ceph_inode_set_subvolume(in, rinfo->targeti.subvolume_id); - err =3D ceph_fill_inode(in, req->r_locked_page, &rinfo->targeti, + err =3D ceph_fill_inode(in, req->r_locked_folio, &rinfo->targeti, NULL, session, (!test_bit(CEPH_MDS_R_ABORTED, &req->r_req_flags) && !test_bit(CEPH_MDS_R_ASYNC, &req->r_req_flags) && @@ -3064,7 +3063,7 @@ int ceph_try_to_choose_auth_mds(struct inode *inode, = int mask) * Verify that we have a lease on the given mask. If not, * do a getattr against an mds. */ -int __ceph_do_getattr(struct inode *inode, struct page *locked_page, +int __ceph_do_getattr(struct inode *inode, struct folio *locked_folio, int mask, bool force) { struct ceph_fs_client *fsc =3D ceph_sb_to_fs_client(inode->i_sb); @@ -3093,9 +3092,9 @@ int __ceph_do_getattr(struct inode *inode, struct pag= e *locked_page, ihold(inode); req->r_num_caps =3D 1; req->r_args.getattr.mask =3D cpu_to_le32(mask); - req->r_locked_page =3D locked_page; + req->r_locked_folio =3D locked_folio; err =3D ceph_mdsc_do_request(mdsc, NULL, req); - if (locked_page && err =3D=3D 0) { + if (locked_folio && err =3D=3D 0) { u64 inline_version =3D req->r_reply_info.targeti.inline_version; if (inline_version =3D=3D 0) { /* the reply is supposed to contain inline data */ diff --git a/fs/ceph/mds_client.h b/fs/ceph/mds_client.h index e7a262c9c2ab..d4d620fb8417 100644 --- a/fs/ceph/mds_client.h +++ b/fs/ceph/mds_client.h @@ -398,7 +398,7 @@ struct ceph_mds_request { int r_err; u32 r_readdir_offset; =20 - struct page *r_locked_page; + struct folio *r_locked_folio; int r_dir_caps; int r_num_caps; =20 diff --git a/fs/ceph/super.h b/fs/ceph/super.h index ed750ea73d85..d3dad07470ba 100644 --- a/fs/ceph/super.h +++ b/fs/ceph/super.h @@ -1172,7 +1172,7 @@ extern void ceph_fill_file_time(struct inode *inode, = int issued, u32 time_warp_seq, struct timespec64 *ctime, struct timespec64 *mtime, struct timespec64 *atime); -extern int ceph_fill_inode(struct inode *inode, struct page *locked_page, +int ceph_fill_inode(struct inode *inode, struct folio *locked_folio, struct ceph_mds_reply_info_in *iinfo, struct ceph_mds_reply_dirfrag *dirinfo, struct ceph_mds_session *session, int cap_fmode, @@ -1213,8 +1213,8 @@ static inline void ceph_queue_flush_snaps(struct inod= e *inode) } =20 extern int ceph_try_to_choose_auth_mds(struct inode *inode, int mask); -extern int __ceph_do_getattr(struct inode *inode, struct page *locked_page, - int mask, bool force); +int __ceph_do_getattr(struct inode *inode, struct folio *locked_folio, + int mask, bool force); static inline int ceph_do_getattr(struct inode *inode, int mask, bool forc= e) { return __ceph_do_getattr(inode, NULL, mask, force); --=20 2.39.5