From nobody Mon Sep 28 05:50:15 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 B16A748D899 for ; Tue, 25 Aug 2026 21:48:40 +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=1787694528; cv=none; b=f7sBJwZJm266dLLax+YnzVX0/Hf/FG/NCOBN6DqaFWDKkKsSXlJlgIQqaDMQ4aGrfkAE5YHRPm8JwTw19VSpL6u18+a8k1XxgmsuS3R62LbdVT2dWmNLSB87xi1DGvEnVgq/qZgPPI0LEfp7DNZQKnd3ixu7e6JyOTd1maWO7X4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787694528; c=relaxed/simple; bh=vSoZyum0Vsl+GDr1/T/T4zqiTYAYOmc8D6bvEAuPl5Y=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=dkCseTUnWmdsAeRiSD0TofTlAIc0b7HIQp/dtE5RkC6NSDSxTACbt44lQ5TvOffmvdFxS1Bkuz/E1RZD7QXHoqgePJBf/OiwfxxfTgCLusNrrgwZuRtcdi61gUfITJkUJBWFrNdiNtTroDDe5bYyrKSO2v+nhxmBBHH6SdXzVC0= 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=KwQ/wre4; dkim=pass (2048-bit key) header.d=columbia.edu header.i=@columbia.edu header.b=cO6Ecm9F; 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="KwQ/wre4"; dkim=pass (2048-bit key) header.d=columbia.edu header.i=@columbia.edu header.b="cO6Ecm9F" 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 67PKYhC42387099 for ; Tue, 25 Aug 2026 17:48: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=BQo6 Kz3Eb++WJRZK//AEA3mbrkw8KHTwKx/5vIMt89E=; b=KwQ/wre4pdl9bSY99P2R Da7fuxj1N7teLB81U/hhtcsSPygaSXzHXbgy5vA1Ubwp+dLsNWzZH5WcFa/KB2qF vlSEocrqsMmgciQHDMpRWhnP9cVv5ojYfLl0+Ra7pHWICRPski3amWgWegeMEw4B AH2VNHy0yDOhLPc2C0kgGGVGQI3Hkjzsj7rNoJbdOGYgZMaSQBmwAqiBCZ8cOqrh 47oZvG04iWJ1ZitllGKv5QWciD2YdN750LopovVQ/u7yiK7OjFl3iRsso6/IpbfE vPl1x+Baf9XsDI16ScTndi1lWxGAvwG+sQ9JomqdfR05PR2oLmuzhz+GfQVgFL8A kg== 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 4g9c503j55-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Tue, 25 Aug 2026 17:48:33 -0400 (EDT) Received: by mail-qt1-f200.google.com with SMTP id d75a77b69052e-52d33c89a29so4171321cf.1 for ; Tue, 25 Aug 2026 14:48:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=columbia.edu; s=lionmail; t=1787694513; x=1788299313; 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=BQo6Kz3Eb++WJRZK//AEA3mbrkw8KHTwKx/5vIMt89E=; b=cO6Ecm9FsVcdH9ZvhBoj2WU1XxJddt+lxYgKgiiYDJpZ7wKYh5dZyNRWosQLjjQkG/ C9xpvok/nGsLr0k2na/6o14L3nquxXr9BU9o3g5mpDjMKYtxSuVmJEOlcRSWvfBbz3gq kp2ytuofEa+V5j/HDQVCCU0UAaiLi59Y/cL/quFG5/5hlq5YCh42jrtzmlRPjWRA0R+z 2/BIsm9e4Y3vTvlwmRX1N1u6aeCzb3QZrpWpj0ChDDuPmYAT+atwfn+rf1SWKL8u0yWZ qMOXfdhGtfL/APp8Akz+AZI361Av6B4DAsK8KMVnkLDgoo1r0GiyPLYGWt0JlpscAZWr 4L/A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787694513; x=1788299313; 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=BQo6Kz3Eb++WJRZK//AEA3mbrkw8KHTwKx/5vIMt89E=; b=TItbwBCUc29o9wHHo433PcMkX07cEc1aos8UDKrW6OO4/B114IgWuHVAzJ8q4ICt8p gQV8Hh3O56kox4SSJzIavg1FK5u7O2DoACzQYPevZDtkhVKYIwIdgIfyfZ3iV9eX+J7K 5mV60sbdPQ8PU/MGUM/XXZq0wiD0wgm7FiHmO/HM0R6BdEIeW8ITeMmvBuRfKXjGWq7K ZKuR+dNXT7HFrWdXAUyPrIi7u/dxs6kMwKdVg9MrF/yJyvDwjIG4SqMSa6Ibek0OeQij dGDYg0FfkF0PS+QHwEhGvqgcCR3dT53h3Dwc3MHxwneGshdyqnxj/YY9gyrhz4CJI9Om Rr8Q== X-Forwarded-Encrypted: i=1; AHgh+RpnLXrLCSdBSvYDux6Ci0bwXPPuS9phQjyTnM3+whE6hfp4jiUm49q8WRcZi8kWu0Fsrlg9Y++LJOL2lTc=@vger.kernel.org X-Gm-Message-State: AFuF++n32OGV0DYK3QLU607daQTAQh5nMx/kZ2nns41zapiD7ydgwJOy Gmm+woRvN+H/QSb8sur7fdK1nReO7kCE/IGchVi2vZaSkVICX7kAxWmZQdUe5iYsDHYDflSFj0h /ttrmm04aJ08egbt4x572wkiltIoYe3cfZHSQAZXNRoZY8Lb0bXXB/3ZOQ8kv3A== X-Gm-Gg: AR+sD11zBV5LbF6k0Uwmb1pr0+QKAIFrPp+SsCCG4+qnZ1pjNFmESL5/n7CMwHn46iM BdbB+7GvoY46yhL+GzpLBCjsvkLpDXSQSjs7xkq/WbAzsk/ATEMIAudkg0AK31SRMDOC+daN1LV MvMfZ9yIErPd39SkhOpQ/Z6stAqhJl5W3+/QeuWhVIyBX5JoZ/XBrtRuP893RFbWnC2WBHPpfEj lYQQyajlsn5Cv5Z0urDH82AYodNu508XDh9f4LD+dIIr3AFstteThipC+2zbXhJYnPBmjeqQoMk 9PdVdZmozw75SalbKczCUxqxHpXAvu3sLLW9mCqI93Sk83FQQ3/qBjwixXcNZ/CC29a9/F8HeyQ YwpdYqAGqEg== X-Received: by 2002:a05:622a:1249:b0:51c:c6c:9d65 with SMTP id d75a77b69052e-52e42234b3amr24874051cf.1.1787694513378; Tue, 25 Aug 2026 14:48:33 -0700 (PDT) X-Received: by 2002:a05:622a:1249:b0:51c:c6c:9d65 with SMTP id d75a77b69052e-52e42234b3amr24873551cf.1.1787694512881; Tue, 25 Aug 2026 14:48:32 -0700 (PDT) Received: from [127.0.1.1] ([37.142.157.200]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-c250a9ef8ffsm139207566b.60.2026.08.25.14.48.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 25 Aug 2026 14:48:31 -0700 (PDT) From: Tal Zussman Date: Tue, 25 Aug 2026 17:48:08 -0400 Subject: [PATCH 1/6] 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: <20260825-ceph-inline-folio-v1-1-d2366fade152@columbia.edu> References: <20260825-ceph-inline-folio-v1-0-d2366fade152@columbia.edu> In-Reply-To: <20260825-ceph-inline-folio-v1-0-d2366fade152@columbia.edu> To: Ilya Dryomov , Alex Markuze , Viacheslav Dubeyko Cc: "Matthew Wilcox (Oracle)" , ceph-devel@vger.kernel.org, linux-kernel@vger.kernel.org, Tal Zussman X-Mailer: b4 0.14.3-dev-d7477 X-Developer-Signature: v=1; a=ed25519-sha256; t=1787694507; l=1061; i=tz2294@columbia.edu; s=20250528; h=from:subject:message-id; bh=vSoZyum0Vsl+GDr1/T/T4zqiTYAYOmc8D6bvEAuPl5Y=; b=nT71pPd8lX66WApDAi3QJ0bVlpSv6RbgGtplYwXLDHq+cJVq8kS4ZDC85+PSm+LQ+2sIHVaHm Nzieqfx0ybYCDgESOH3TpqHSiH1AbppnRZelHpKgMhzJBHe3M/h/RYr X-Developer-Key: i=tz2294@columbia.edu; a=ed25519; pk=BIj5KdACscEOyAC0oIkeZqLB3L94fzBnDccEooxeM5Y= X-Proofpoint-GUID: vQ1iekmR_A-l6BAXrU1ixQn52hbI98T9 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwODI1MDE4NSBTYWx0ZWRfXx7aX4FjNj5fQ XXWypUnE80UOW2lf7HyCnx3H7bPGB3oumHTkK33rGUa9KjFhSNrM+ewhJ+HjUttXoHaOkEhXJKq xm6Nfa268Nv8xbjH2mNdyUsk4XZcxEnbttec/OfUPL4UJ1gwM1av2x9w4y7jmpHRYxzZAnI4m4j 7fLzPsThHcpgOjCqPbhDRQnYYbjU13DgFbXzUWpiGIxo9bN65gfM/sRkFLK2mFAkUw5gbLiJVBi tWX5Izw/GY218fRVM7PQMX4c9a+kU3iRSxdXkmkthZrlZDGwYf49Dy0MVKyA+zO2lP7j0mXIzBO ZqqhmjAqtnXY9LUv1ijTsZJ4MLCcINTUGPJe/Tqga/kfRpoULkQxVEmePqMgsg7Yb+gEf3InZEI BW7YfIYACKLWIrKN79tTSgDZrA8NNhfTDD85ieOw4/pxnZR1ec347mx5KzPSL1SBjjM27tSdJJJ uJpSTbpb/A99Cb7K/pA== X-Proofpoint-ORIG-GUID: vQ1iekmR_A-l6BAXrU1ixQn52hbI98T9 X-Proofpoint-Spam-Info: AW1haW4tMjYwODI1MDE4NSBTYWx0ZWRfX8hLHOHzmMIUf LJqS/d7s9rgQTlO2PqduOFd3k5MdWQqI9fh3FWDg5YT3wUQdzoe56yH8klPVyQv0qKdNtTRRmY8 wufANajHH9sXQ+OGSOS3d4evHc5VClD+pFmAC+LI4S0LmW46jFqb X-Authority-Analysis: v=2.4 cv=DshmPm/+ c=1 sm=1 tr=0 ts=6a8e0db1 cx=c_pps a=JbAStetqSzwMeJznSMzCyw==:117 a=VsYqNs1x6zyujO4rtox2PQ==:17 a=IkcTkHD0fZMA:10 a=Sv0fKeRqtYgA:10 a=x7bEGLp0ZPQA:10 a=A0y_DWxS2BwA:10 a=VkNPw1HP01LnGYTKEx00:22 a=Da8U98TiO7q1upZEImrf:22 a=HpS3TJQ9O3Ob1ozEcmik:22 a=7pwb4K0tqOTcqFA6WXsA:9 a=QEXdDO2ut3YA:10 a=uxP6HrT_eTzRwkO_Te1X:22 X-Proofpoint-Virus-Version: vendor=nai engine=6900 definitions=11886 signatures=596817 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 phishscore=0 lowpriorityscore=10 spamscore=0 suspectscore=0 malwarescore=0 impostorscore=10 adultscore=0 clxscore=1015 bulkscore=10 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2608250185 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 6466e11ca783..af2aa098f553 100644 --- a/fs/ceph/caps.c +++ b/fs/ceph/caps.c @@ -3250,12 +3250,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 Mon Sep 28 05:50:15 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 DE70F3438B2 for ; Tue, 25 Aug 2026 21:48:40 +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=1787694529; cv=none; b=oRoSPWxmjY0hlsgMDDpVn8aoq5LpUg/Vrbcy9FKWy6Y6/1pnPz04DMO6MQqNRDtKx2AiXPyZAckQCFAwL07HcXvGt7JEQSY+fvYjbGEeJBCtnQNJVdE20B95Od3sRYXSFRlzdYTlhgX3gkAvPUC7Yx2nNvsekkwiJbnVxlelG3s= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787694529; c=relaxed/simple; bh=5mnQ59Kt0OIYMokksvMAZ1FVhKteWG3EBgc1Bwca4CA=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=ohwqKEm6uGugu61asT+evQH2uMlCaix3Vpoxr90p9UXzscrp6WB+fY324wMzQONRi0gNuDYcz35ts5xKJPuNTIEgnYH3SgANbFoFq+cXtB97hNjZRnw7LRgzC81r59XezD0lBdKzE2aDunhGCrD8PPP7LPRukizvwDmk3WYDNvQ= 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=V2taz5+v; dkim=pass (2048-bit key) header.d=columbia.edu header.i=@columbia.edu header.b=162Keqac; 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="V2taz5+v"; dkim=pass (2048-bit key) header.d=columbia.edu header.i=@columbia.edu header.b="162Keqac" 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 67PKYMUT2488930 for ; Tue, 25 Aug 2026 17:48:37 -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=wiE5 KpVe6SLleEh488piHvHxNFFf1zRPmpQZ8l06A4Q=; b=V2taz5+v8yTkcXYxAmkQ qNktuLyd3ULqgHsDVgkxpU3QTFEmhQXPTPFXV4ifjEOnir+uzXbZ1qMXb08VNPDs E4n2d5XAFxVkzgoa9IW7c4E8xXn5EFwFJAqdN3tdUpGmsFKhmW2eLyz8lszOtQY4 FLLroBiTAhzmxO93CKlrupAodIHmt9s12Z9jGrvYE04idMyBFXoS6UA9Lu6VMx34 JiehlGK1BE9YGaUw63hW7ySdBf8j0oS0yEPLPSP8It9JrnzHiL/rctYn9s70Woeg TmbibEfTDDkvU/6yWclxRX1m+oHe5Oibaqc+o2Z+3Em3Vgbkd/n6L2VRaOGBevoG KA== Received: from mail-qt1-f197.google.com (mail-qt1-f197.google.com [209.85.160.197]) by mx0b-00364e01.pphosted.com (PPS) with ESMTPS id 4g9ck1kbjf-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Tue, 25 Aug 2026 17:48:37 -0400 (EDT) Received: by mail-qt1-f197.google.com with SMTP id d75a77b69052e-51bfe3fa93bso269561cf.2 for ; Tue, 25 Aug 2026 14:48:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=columbia.edu; s=lionmail; t=1787694516; x=1788299316; 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=wiE5KpVe6SLleEh488piHvHxNFFf1zRPmpQZ8l06A4Q=; b=162Keqac3p3crmursBZzuWA5f6X/2j97BLERXHWR7WSvwVHKG/v4Tcao8I0YlY+Cpq Ied3CtquCo9WRzLBjQwrvMVqe9IfTfF3qAlTpPBYfIP+VtfrY/Ia1p4gDkgWlo2Pl8xZ DE87LaYwKY6DmDZ2JKFwFNXsn/YlTQWlgxGD1u5bFRHIPnP9dPFeJmE/gOx3M92HRH+4 oieids6l2iv0r6ipDfrbv/GFH+YTuesSfDtpP9jak+3Xjq9/CycoTWWyBshIjGNDZ9N9 Fm97JEdyUuwfVCZZRgF2ApB88gfldUlLyFI+o4Ng/Ll8Eszlzm5f51+DndWD9f/HzULT 8Rug== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787694516; x=1788299316; 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=wiE5KpVe6SLleEh488piHvHxNFFf1zRPmpQZ8l06A4Q=; b=c+8ol7j6Sa8aa9qshTjZJdjAVTQDZW5q73XVSrXSAWo1XRLyggILZk6vkj48MZ8Xr1 YubSFkNJ3l03fR7YqTbg+hEUDBnA0+xTtqSMuiHT5rKl+vJ+s9T4NXJFL8G6zgNAlwTc O//IrdSg5/xKZ/tMn3lHCH+pH8QIkyUzsn0lird2y7HS/QrBNDa2CGhKh5cZ14Ct6JdS BW+Kvfd8lM5lihUqPtQmgyMcI6W7/Je+aJ4grOPhsvwP8oGhp6wunhjf3sp84sGc+iuV DpHP4VBGSJ5YIV7GJfhDUWsI3pWRbL45/2b51gnAF/DA44T0KOLnqkz3HO0P2iDnhXn0 2wRQ== X-Forwarded-Encrypted: i=1; AHgh+RpD/kLGX3h4Jh97wvcyHKTgeMSTHOAfpV51pUHt7Fi9O5fxZu2HwBf9abaUdPzklMUVv82NR43tL9QkD44=@vger.kernel.org X-Gm-Message-State: AFuF++mYB0SKNvem0vGFCao7OAZd54+FK2D1BEmqZ4XrMvO4+noyr/cN QH+Dp9Vsq6QO5KHbaK6Pjuq3uuzbZG5k8YQdgeURCdVpBlhIFxbkfxWxuWzX85oKsZPSdq6ARxN Tv3ckFPFeFK3WBJmCC77GIdL1CX5kaUf+S7JH2PpgHq0nh7DjWosCMzwabp/x5g== X-Gm-Gg: AR+sD12Hz28MOAsIGWhm9vXoyJVkO957AaUtYwlPSpOh5oDaOErTHpaOcS47PuBEmtH SOHWDzXEBJ+C+P9a3dTCRxNtPSJ+opH6MaxGQGKFHb95jsyQFqPUsydUBKRuno5UwaeNjdvAwar HLurIACFn/AueuCrhJxjYElx9eqXzYJ8h7PHKsfx4Em8P9E+c730rSyVZoo4C2GXZ6eb/Y+hGT7 8nSxLVVjIB9RguqprwAdmoNtcwJbcq8B2aH8Ga06gw6rLJZaFY3Ii4PYG/oxUAq0qTI7OP0OcNK k7eZMldun7OyWaORzJ48p6WOCHu+hOkzxkMZxtgc33ymTlif7mihe+ywG3BP3VplsBdclJPpP+7 EFZ9Nct45Gg== X-Received: by 2002:a05:622a:1108:b0:52d:f12c:59ba with SMTP id d75a77b69052e-52e4235cbe2mr22967231cf.33.1787694516495; Tue, 25 Aug 2026 14:48:36 -0700 (PDT) X-Received: by 2002:a05:622a:1108:b0:52d:f12c:59ba with SMTP id d75a77b69052e-52e4235cbe2mr22965901cf.33.1787694515107; Tue, 25 Aug 2026 14:48:35 -0700 (PDT) Received: from [127.0.1.1] ([37.142.157.200]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-c250a9ef8ffsm139207566b.60.2026.08.25.14.48.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 25 Aug 2026 14:48:34 -0700 (PDT) From: Tal Zussman Date: Tue, 25 Aug 2026 17:48:09 -0400 Subject: [PATCH 2/6] 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: <20260825-ceph-inline-folio-v1-2-d2366fade152@columbia.edu> References: <20260825-ceph-inline-folio-v1-0-d2366fade152@columbia.edu> In-Reply-To: <20260825-ceph-inline-folio-v1-0-d2366fade152@columbia.edu> To: Ilya Dryomov , Alex Markuze , Viacheslav Dubeyko Cc: "Matthew Wilcox (Oracle)" , ceph-devel@vger.kernel.org, linux-kernel@vger.kernel.org, Tal Zussman X-Mailer: b4 0.14.3-dev-d7477 X-Developer-Signature: v=1; a=ed25519-sha256; t=1787694507; l=1873; i=tz2294@columbia.edu; s=20250528; h=from:subject:message-id; bh=5mnQ59Kt0OIYMokksvMAZ1FVhKteWG3EBgc1Bwca4CA=; b=gCFx5lEJtfe6hYbmYfodfCAOA02Oob2rOClr3tv18NzhTBaUb8Iy/j7IPfZzY52SS9J4tgbDY Qy3lH1mCZ8HBwezkk64qGkoqZSkRUiHqrnjfb+ifUlL8ThJ3T5RZKKq X-Developer-Key: i=tz2294@columbia.edu; a=ed25519; pk=BIj5KdACscEOyAC0oIkeZqLB3L94fzBnDccEooxeM5Y= X-Proofpoint-Spam-Info: AW1haW4tMjYwODI1MDE4NSBTYWx0ZWRfX1Gv09WlrEIBI g2Uso7AMhpJ5LrTRYOfK3t4nExdxvDRz5fXl1ZA9igUHGS7+qWWWQbnr6xowiLv3TndUNM/gLOF MCNVoE9XXsMs/ayC7ScR6+mGXkPeZD71Y/3DB4/MmH+iAUpNKs2a X-Proofpoint-GUID: VZmjKYbNYrMZgtWdOp9B98dIXvxx5rWJ X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwODI1MDE4NSBTYWx0ZWRfX3BHqo8YmW1iH L6SIUMxW0/MfDHAY2850HiFZI0IpYJ9Ui3Vdu6eKCBiGG6xs51rNAffS4af6BthRFBrE7S1QfTN runwY0meSPKlcC8RcDl6o6lbneWsuejzYFVbB+egoOWWqpyVeE9ou9Xjxoympd4049xNYYaeKV1 mUq0JJ35DyJGmT6tFGNXEFJDboKqJIqbA/xedkvSoREbZshaqHfayG9hRAFD297o8Tf+Dt3GxNx gNtCzgsZusZ4yprmVHkkOEwl/Fu1vfBZjOT4Fj54PKP3OeeT56djCxRlvvCE4V8ZhqUYz/PzTre D6hFj8OOjHd5lg3o1KrwBrtShMF5d1NkSSm2tiTVsvWAQZG3hIeNBSW1CxWgfRfDXwEMCJZOvbF Lz0Jt3Z+u/SQ5NVh+zTifiCxpeM/kpDTHotPbWuQq3A5emzdcarJDOf0KJxOoIcD+iiv9A9eFW4 IvnWphMDiQY58PJVfNw== X-Proofpoint-ORIG-GUID: VZmjKYbNYrMZgtWdOp9B98dIXvxx5rWJ X-Authority-Analysis: v=2.4 cv=Cd44Irrl c=1 sm=1 tr=0 ts=6a8e0db5 cx=c_pps a=EVbN6Ke/fEF3bsl7X48z0g==:117 a=VsYqNs1x6zyujO4rtox2PQ==:17 a=IkcTkHD0fZMA:10 a=Sv0fKeRqtYgA:10 a=x7bEGLp0ZPQA:10 a=A0y_DWxS2BwA:10 a=VkNPw1HP01LnGYTKEx00:22 a=Da8U98TiO7q1upZEImrf:22 a=jHxIr1HyPKZ_Q5_91PL3:22 a=Z6_CKfthfhLzab0EPLcA:9 a=QEXdDO2ut3YA:10 a=a_PwQJl-kcHnX1M80qC6:22 X-Proofpoint-Virus-Version: vendor=nai engine=6900 definitions=11886 signatures=596817 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 lowpriorityscore=10 phishscore=0 impostorscore=10 spamscore=0 malwarescore=0 adultscore=0 bulkscore=10 clxscore=1015 suspectscore=0 priorityscore=1501 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2608250185 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 c05bdf5d7273..988ead716991 100644 --- a/fs/ceph/addr.c +++ b/fs/ceph/addr.c @@ -2054,29 +2054,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 Mon Sep 28 05:50:15 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 5185448822F for ; Tue, 25 Aug 2026 21:48:44 +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=1787694529; cv=none; b=Bd4xE6+42jazbZ5DAP+U7kbsGhbx+wGu9HuVpdARcDKDScHlMaRoc8u33tAqtodV0Q7F7KnX7G+nbH3tIFOwAQZn0MMK0vJEj9S7/ucEBzyj14l+AsoP1FYWvpLeORivWrPXSbbtJ5ChpQNjJ3OiNruU/RifCtcWrTOaQUdlfLc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787694529; c=relaxed/simple; bh=eVi4hVfQOAmdT74LZh4G12m8a0ZZPIXZgkqKLZit6L4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=jX/MLr4OzZ1rce8rsw6CgnJhfSNy4Q4TNK737PvDTaZGRFy+Wp5HBfc5zhXqVEeN1kO5ZHXm6pbykAY/zLUGYn7Kny2aIwy4vpRh76RaPyBB64rTlN9BKHNySQes9zR/9x1Gvxyz/pscEyJQk7eFfhTaIg2V6nhePuOmGyFy3aA= 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=KOtjxM6s; dkim=pass (2048-bit key) header.d=columbia.edu header.i=@columbia.edu header.b=UAHNcFaD; 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="KOtjxM6s"; dkim=pass (2048-bit key) header.d=columbia.edu header.i=@columbia.edu header.b="UAHNcFaD" Received: from pps.filterd (m0499199.ppops.net [127.0.0.1]) by mx0a-00364e01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 67PKYMcY2276918 for ; Tue, 25 Aug 2026 17:48:39 -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=W/4j oU22hrNn1ds0RKe5hAHiyMQzpcjM+eQV9U4XQPI=; b=KOtjxM6ssPTO1zepe6W+ ZNV7Zr+ciSzk2il9qw6xgf1+Mux4NLjBCDMfyR6pGvMITCtpPRQTYRU5Lqh6NnrC 1ZQo7Lqxa+A/sdIBohJdbpL5E5eK47aAWx4rVGyvL5DVy7CiC1wyzdQVaMbtUEaO coTFmAwi3yuERKhdUMTunoOOhF+SLkLgYPxDcB8rTMWbQ3/CknxdOLwLSqRmS7mU /DfOSQSYVNCJzz89x5kzJoiP8f9hg6uQM9UMDsqyplSgnDXgUWe2bSoiQH6lE9PA Sz1UetxRQmx2GBKe4QWlOr00fFAaFYwpLcZFdDgnLSIhHWPcRxxMtJh4ThFZXoIY ww== Received: from mail-qk1-f199.google.com (mail-qk1-f199.google.com [209.85.222.199]) by mx0a-00364e01.pphosted.com (PPS) with ESMTPS id 4g9hea0qw8-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Tue, 25 Aug 2026 17:48:38 -0400 (EDT) Received: by mail-qk1-f199.google.com with SMTP id af79cd13be357-92e5e38fbc5so23514385a.2 for ; Tue, 25 Aug 2026 14:48:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=columbia.edu; s=lionmail; t=1787694518; x=1788299318; 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=W/4joU22hrNn1ds0RKe5hAHiyMQzpcjM+eQV9U4XQPI=; b=UAHNcFaDotu7y+9oE1u/7+WpR/Zfd1t88tRT999bDe4DzdL0CtjAqqu7iaOBSoolQS FoWc1uQo2NpV1kuUBotNIwtxRkbG17xgQoiaFrsJkeTbsLq7NwKgya92nARB1dVancQR MfCcwrODSEtC+JPmBexTGUPPpsSUdB9E5OJuc7JEPXhaKoM0zlHk1WJAoPnfsaard+KP H4OjmWmTsL8F9qp7Nj/xcq8170msfER09cPr84fhm7dDu2iw1gsOj+n168VkyrizS0F4 JsUNbyO23a8i7DYCdUUKYaeMoGM7OcV86ns21YNKifkmSWHOnVTAG33NrPT8dgGWnrGY C1nw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787694518; x=1788299318; 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=W/4joU22hrNn1ds0RKe5hAHiyMQzpcjM+eQV9U4XQPI=; b=sJkNyPPx1+ABi4wb7gMyQPwSTO34kx0ogPx1NggZNaxgjMrAoMCCQiCg4PswwAlckU 1M3VrbGgOIUbiwrpxK4IVjSFM4Jn1L9EjHmh6x99VPM3xtp+cT/EGMR5Iijmy/vzeKTL v9MMTqJwAuARzvPh33D9YOOfLdRMBRIrb4bp9XTGE+AV0IsKuyJkh9he9pdjCJCKdJsV 6k31ZFl+cNNcHfyOGO8GC+eW/GoutjvhcARS1co6MeJKE9qVnJgDzkg7GEjm202tAvHW yaVxli34UXdiyuFRN/Bu2dUVEe8IAiQnQUp6nsO1qsRPObHyXeSUFWILC1CrkCBm2v2B unFg== X-Forwarded-Encrypted: i=1; AHgh+RqHTkLYNoZYrdmAhSiZ/T3ZoVe/S57s85uqSClafLY4uobtqtvslPQqatzhqA6t/FRacIE06HzF+RYKyOQ=@vger.kernel.org X-Gm-Message-State: AFuF++mR67YeFspPBCKJcUJOrac/JiKc+JUu7C98foGlRIKDOxMviFCL UffZQowNXzssHSUqby019jTE1p409M4lYP0gB0Gdpmuksb0NRUy27TeWv3hOTsyqJc4QJ4JPAQZ dmQ8yorcPQR/HY9TmUXpvmAwgEXnczg4Neh6+fCaCSFupuvbMGT6Ol8ahrell9nadxZ86qX0u X-Gm-Gg: AR+sD10YdvXZDRljdkqjjGDeZYT8bpPbvZuEMH3SmCwna9X9HXho1E6ew8eKeGPbX5H 8ObYFKJF8DXMplsxMoLPeporYekKfpq0rjCeuAfCSh8pOx6hVN69j3NoImiG/hycHVLtFyb+3EN pg9cHFMVx0I33O7yKPaxqicGNjXyQflmlRy5Quk9qwZnajGmmNb2SoApbLtZktJ4EjHF52a5DQ+ v41VN3l5U0Oa4EMX55kERMED7J4yLX9VlE3uIHv1AQal4YBM167tw6bJVVnr61fqnkOEVwFl8pb mo7FpTG+A9eRwniH5IqhzJEVYZ0lWg5Bk1cATdXnzreaX7uCEmk1GoD/IXEIOZOY2v98uwinRAT ZZnpJls1dLA== X-Received: by 2002:ac8:570e:0:b0:51c:2135:b00a with SMTP id d75a77b69052e-52e423da755mr21373991cf.40.1787694517684; Tue, 25 Aug 2026 14:48:37 -0700 (PDT) X-Received: by 2002:ac8:570e:0:b0:51c:2135:b00a with SMTP id d75a77b69052e-52e423da755mr21373571cf.40.1787694517187; Tue, 25 Aug 2026 14:48:37 -0700 (PDT) Received: from [127.0.1.1] ([37.142.157.200]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-c250a9ef8ffsm139207566b.60.2026.08.25.14.48.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 25 Aug 2026 14:48:36 -0700 (PDT) From: Tal Zussman Date: Tue, 25 Aug 2026 17:48:10 -0400 Subject: [PATCH 3/6] 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: <20260825-ceph-inline-folio-v1-3-d2366fade152@columbia.edu> References: <20260825-ceph-inline-folio-v1-0-d2366fade152@columbia.edu> In-Reply-To: <20260825-ceph-inline-folio-v1-0-d2366fade152@columbia.edu> To: Ilya Dryomov , Alex Markuze , Viacheslav Dubeyko Cc: "Matthew Wilcox (Oracle)" , ceph-devel@vger.kernel.org, linux-kernel@vger.kernel.org, Tal Zussman X-Mailer: b4 0.14.3-dev-d7477 X-Developer-Signature: v=1; a=ed25519-sha256; t=1787694507; l=2358; i=tz2294@columbia.edu; s=20250528; h=from:subject:message-id; bh=eVi4hVfQOAmdT74LZh4G12m8a0ZZPIXZgkqKLZit6L4=; b=mJU4OqkZVbuShezNNtqXVicPOJAUMeKRW06/6nCZHulPzAfk9vSO2uieNrxKNJjn9txMEO67m u4MSzskO/xpDIuHNDMMs3S9Har811xgOI1mcZTujPG92Mf6hwfD7J6A X-Developer-Key: i=tz2294@columbia.edu; a=ed25519; pk=BIj5KdACscEOyAC0oIkeZqLB3L94fzBnDccEooxeM5Y= X-Proofpoint-GUID: kn-6UECOjkBKcmuppFU-ZDodnHPLuV8l X-Authority-Analysis: v=2.4 cv=HoZG3UTS c=1 sm=1 tr=0 ts=6a8e0db6 cx=c_pps a=HLyN3IcIa5EE8TELMZ618Q==:117 a=VsYqNs1x6zyujO4rtox2PQ==:17 a=lYjiPEibtFqA77pR:21 a=IkcTkHD0fZMA:10 a=Sv0fKeRqtYgA:10 a=x7bEGLp0ZPQA:10 a=A0y_DWxS2BwA:10 a=VkNPw1HP01LnGYTKEx00:22 a=Da8U98TiO7q1upZEImrf:22 a=G--0XuH5328wxK7v7Suf:22 a=lJkK8zq6xVIZ8jstRnwA:9 a=+jEqtf1s3R9VXZ0wqowq2kgwd+I=:19 a=QEXdDO2ut3YA:10 a=bTQJ7kPSJx9SKPbeHEYW:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwODI1MDE4NSBTYWx0ZWRfX11Pb6bWZwq0+ 6Vposbwhuc3TreBasxQgs2dFhyHVRL8YbGnXrlcopnLgv6a82vUlHRsWZ56HLanCKU7aBoyVIKh oJWPob4B6dN1CJcUae/yvBbky1d97FOswJYQ29koawCN51bjbGR4HtrH5kFJq80lcLPudnX/+Fw JW/bLGWBSSQ+h+uBjYzIzy+Ucb07iHe7h+fhOsUnbOLLu2fmoGmVlVklvqxh3qjqgK7bImyV6sQ LVUNZSQ1gQjVuzagNL08EQniNuwCFLlc/lYmlkGJY9XMalHeoFhoYwlV45VZ5D1u4tLnOkhQ42G /gJh7441QgDgvLTEK8M5asVCJH26m8iIUc9iyNVOJS2Ym2qZKDgeXMEU9f3n+9AG47mIMQHQp/8 Bm1CT73qAnxkH10+yRfVVSRxZovAXszUTgfRvRAid0yaFeKUHB1invDJdCSH0MvHeao9RagZurs 5Z0+L7YgHrkl4XH5jzw== X-Proofpoint-ORIG-GUID: kn-6UECOjkBKcmuppFU-ZDodnHPLuV8l X-Proofpoint-Spam-Info: AW1haW4tMjYwODI1MDE4NSBTYWx0ZWRfX60yp3jUfCu8g 3rBGhwLfypgrk5d/3jPVugzwCbkrG5vdfPP3oSGLVqCs/8GBGXuAjD1hoAwlvm5eZoweb2UK3QX xv/XIArGVrT1pl9fI1N5TZ9dLi/HLaF3bdwPEDmmmPafqcX+DVf/ X-Proofpoint-Virus-Version: vendor=nai engine=6900 definitions=11886 signatures=596817 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=10 bulkscore=10 phishscore=0 spamscore=0 adultscore=0 lowpriorityscore=10 priorityscore=1501 suspectscore=0 clxscore=1015 malwarescore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2608250185 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 f322ba42102d..592e32d1e2d4 100644 --- a/fs/ceph/file.c +++ b/fs/ceph/file.c @@ -2264,21 +2264,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; @@ -2295,8 +2296,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; @@ -2309,7 +2310,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 Mon Sep 28 05:50:15 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 F184E48F840 for ; Tue, 25 Aug 2026 21:48:48 +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=1787694532; cv=none; b=WRKUkAh1zujRXhY0aRT9YOJThh3wufBkgqL2gRM3F7TmACQKCOugvxVQ8T5yjVK6uQXGReDEzNKjpgUbHwm56EnUh51Hac33fsnze9BjBbCh9v8Weur9rvHo21KkMukWrhmX/W5oCWkYDboQzFaNq6mglPKQFr8nMGvmUV80l1c= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787694532; c=relaxed/simple; bh=T/nmhI05mk+3FWUSunjzUrt2sVFvP2vBeVx2J/cc+Lw=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=lKVsq1FuNu1tpYkygsecaIXvX5wbWI/IeM2f4uYh78IoBkmPyldztQIA0RoGKk1O+66ztrB+b6Ak6HH6Hlflnss75e3YFq8XzxcA7vjBPwsf8f2tIM0y4oOqvmCSbLkD8RvDcNcFs4mC+0ob5KvOr5lien6HaCSUyn8nQOyUPgg= 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=huccdhiw; dkim=pass (2048-bit key) header.d=columbia.edu header.i=@columbia.edu header.b=fLRZy7Sm; 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="huccdhiw"; dkim=pass (2048-bit key) header.d=columbia.edu header.i=@columbia.edu header.b="fLRZy7Sm" Received: from pps.filterd (m0167068.ppops.net [127.0.0.1]) by mx0a-00364e01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 67PKYaLk2698073 for ; Tue, 25 Aug 2026 17:48:45 -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=4YvB 1LKcHhBpg/oJay1WbU3LLj6nD01O5clYhNyL6+M=; b=huccdhiwF863OFhp2+Ob FmzJQNJASjcWpZtyVUC0qq4+5vWtXS+W/L5RKVveZi65C5BytlXuL8E0KTHGrMvH lVXtqK42vGiiIUEbAwLXwWp2MeFuYQQQMk1nKaO/YBoVBgLemNhnxM4L2dgaZUP6 bt2R8bjO6hLpsxRESAFe7aV68sSypRx+JXriF02hKI8fcr4BRHNzNoZu3I53dRNn 0qcZhotOj/8VCZX+WTTtBk0Mg7h1ryteeoGMpptUOaZLmh/Lj8fAXOc/AJsVrj4o nmOD5dyOmYyUbn6K3MOmI2RGjddOeRTKVS/vxlmit1kdWU03Yfz2Oz3XL8if1qDh MA== 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 4g9e15jfkb-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Tue, 25 Aug 2026 17:48:45 -0400 (EDT) Received: by mail-qt1-f198.google.com with SMTP id d75a77b69052e-51bf321d786so2509231cf.1 for ; Tue, 25 Aug 2026 14:48:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=columbia.edu; s=lionmail; t=1787694524; x=1788299324; 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=4YvB1LKcHhBpg/oJay1WbU3LLj6nD01O5clYhNyL6+M=; b=fLRZy7SmDClE1O1DoVX0f0yNBfIfFiH08P3nPJd4AwvYKtrCaxOahvLwuz7IVgjgZ6 qTbLYFZ7/q+xpBCyb8YqQ4PzpxD1Kf3HgNW/s4WtpvnObSZGJbewRS3iVefQXRs+O2fE ubOudDnaF0bTyQjsipFa66YJVsRC1rAappoCleUG8zSKUOitCPUE2foXtxGnPSHyVYBW 1KM4VD7a7LamXIDFH4stArLIfv7fknzkrCswhD7f+tZhnsZBOeqOeGK2Hz4osEMsY9Se XgJT6Mun2gTu0+xrTjUMfi33gXxmdoPfS4pc0okvX/Qr+roM9D6GSkx4193eR6Wbmot3 gbcw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787694524; x=1788299324; 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=4YvB1LKcHhBpg/oJay1WbU3LLj6nD01O5clYhNyL6+M=; b=hlq2aKgP7aC4oavzAPtyruZtvEJz6nmu9/DMLUWy4t6RbGMgacPYr+YBtFJnflmKpr NVQeJb4TEfXz04lL8Mp6CS2dGPCYZ4ds5hIpKTBVKEIyn/IWnPTG4adGEb6Vu6mq7dL8 wFknmI5uMEmhriyI3dHXPNaEri5BDIpMyGSlaM6Bl5lRYxI+i3vMbmi1bDJCCJenN92I JtaBoLXk4Qtrl8WdwzJj4XFZPyfY66B6Pj4Zfxc069Fg3vo7awgKnwvN58bzFhvJYUrB YFLMaeERLkCVG2qFibSRGoAodqVEqs3qT28rFGpso9CPRUMgRaMevikAsjCFCdO6ol4M 2bBQ== X-Forwarded-Encrypted: i=1; AHgh+Rou1lrDN3Ks7Tr+9NAf/wiT94uLfHiAIrYM4A8ERd8pp0h7vAK8beVTtTUS7vcuFuZqIIYCinYBPTsyZRg=@vger.kernel.org X-Gm-Message-State: AFuF++kcHPQfez/Ox34lSERw9OyMTpY66j4TRLJqseTev8DzmuwVi1V+ DsAD9212puErpFsQ+m4dwGkswdp5GlLW04mXIhKnn0Gnjddwpw2A4osZ/EM2iey/HekQHJpsak/ zCDuxOxPLI37LGrNdug5KGoZMUq3iZiI3s9ShwLKX7Jt8/Siold07ceKPju5kwQ== X-Gm-Gg: AR+sD10Y4VivpcmhPh+dp32ZRdrVuoQC2EqkzaPAnRhbO9ZUIsnTmVgu5k3hznYkoS1 zSyN0zpOtYSj1MgxXeyxd4cuUR/7W728xM7nl/AuDN1tllTWNG8PscUAlGEJUFEERlWwcV1l8aU umofSk3L/3/S5v86VFXzOLjatgMrJzpxjUXzLoRKp7Y5s0eNBdC5875maz/kjf6v66BJ0Ng4doe 8hm8gRS6LljoMw04LIUCcuREbJwcik0sN73G0BzO6EBjYIOfmeqWd4W2s8XoL9Ra3hjumkXQvKO N+Cm/bCQMOQ8VCTfy2JzIQFfRGbD1uCiJ+QCPOjOoyuMn8KvXHwNCNaCqD7efcY2XWFvJunwfLL A0HMNMp+8Sw== X-Received: by 2002:ac8:7c4f:0:b0:528:583:a6ca with SMTP id d75a77b69052e-52e42283b15mr22006421cf.14.1787694519719; Tue, 25 Aug 2026 14:48:39 -0700 (PDT) X-Received: by 2002:ac8:7c4f:0:b0:528:583:a6ca with SMTP id d75a77b69052e-52e42283b15mr22005951cf.14.1787694519142; Tue, 25 Aug 2026 14:48:39 -0700 (PDT) Received: from [127.0.1.1] ([37.142.157.200]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-c250a9ef8ffsm139207566b.60.2026.08.25.14.48.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 25 Aug 2026 14:48:38 -0700 (PDT) From: Tal Zussman Date: Tue, 25 Aug 2026 17:48:11 -0400 Subject: [PATCH 4/6] 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: <20260825-ceph-inline-folio-v1-4-d2366fade152@columbia.edu> References: <20260825-ceph-inline-folio-v1-0-d2366fade152@columbia.edu> In-Reply-To: <20260825-ceph-inline-folio-v1-0-d2366fade152@columbia.edu> To: Ilya Dryomov , Alex Markuze , Viacheslav Dubeyko Cc: "Matthew Wilcox (Oracle)" , ceph-devel@vger.kernel.org, linux-kernel@vger.kernel.org, Tal Zussman X-Mailer: b4 0.14.3-dev-d7477 X-Developer-Signature: v=1; a=ed25519-sha256; t=1787694507; l=4120; i=tz2294@columbia.edu; s=20250528; h=from:subject:message-id; bh=T/nmhI05mk+3FWUSunjzUrt2sVFvP2vBeVx2J/cc+Lw=; b=0moRzChkHC+B2jBVBCTJb2n2UY+hWA7pfQHC7ab2XjxbMxV5iuj8Ab5krB2M+ivTqsqAzXIYS mBUCcIPmcM7D3YH5JCfwARcmxyYowoX3ayUW4yNmpw07VaMgoUx4+2K X-Developer-Key: i=tz2294@columbia.edu; a=ed25519; pk=BIj5KdACscEOyAC0oIkeZqLB3L94fzBnDccEooxeM5Y= X-Authority-Analysis: v=2.4 cv=EtriaycA c=1 sm=1 tr=0 ts=6a8e0dbd cx=c_pps a=mPf7EqFMSY9/WdsSgAYMbA==:117 a=VsYqNs1x6zyujO4rtox2PQ==:17 a=IkcTkHD0fZMA:10 a=Sv0fKeRqtYgA:10 a=x7bEGLp0ZPQA:10 a=A0y_DWxS2BwA:10 a=VkNPw1HP01LnGYTKEx00:22 a=Da8U98TiO7q1upZEImrf:22 a=usPcmh10W0ubT8QP8_c3:22 a=5ne0shk8uSHvIOEplNAA:9 a=QEXdDO2ut3YA:10 a=dawVfQjAaf238kedN5IG:22 X-Proofpoint-ORIG-GUID: 1OL5hBYcH8Ru7nMUjKxBVScHfMwfKnC8 X-Proofpoint-Spam-Info: AW1haW4tMjYwODI1MDE4NSBTYWx0ZWRfXxeHL9B/FlX8a Vj0rTXg3q309FM2uynsCqWpOoZy/8LVz0rdxyDB4jhevY0765anbdtkEW8UAiKk2tKxriXUf/bM swPJ4N6ae8xtPpcXeIwe/HvBeY15B+d2WiAGFvp7jm0SLJ7kR97A X-Proofpoint-GUID: 1OL5hBYcH8Ru7nMUjKxBVScHfMwfKnC8 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwODI1MDE4NSBTYWx0ZWRfXxjlhHCA61w95 D+xhPYHC6TWtej8ZKRD9Xyli7kOagHpVhB3g9z8XUhYMZgs7annBrhkwJQ27i1Jjk1CEbf2cBKh Z9laws2QNgVJtH3VMaYymSGpl7obIVD1e/kVRf31aSgeFXc6bvE8fRZa1j594KRtk/tDGmxQrur oLm/yx5aYpT4KyOTvSZsP377u2UDHhCD08pzgMVz7lpMpHQ91rowTSpEdPBJ+NMLaCzBb0svjq6 LNHvEnx0Tok+aoXaMxSZ8lQgzd8Sml4uPrxLbrXrnCozQpVpZuC82Ua2+24SOEdO6ZVYvatMuVJ LfqIDynn31AAA1zfghqvyuOxf1but/0Hhhb5irXE/dnaD5RtPuJWqQJ4wp/dJ+lb9szKbaL7a2k UD/S/rxzKFug6NuWdVjFtvuDdckjjabAOzr/wlfy2jRC9Hnzc9duwVunzC+ZqBXuAtDvWxVoY1R 5LJsS8cRPjMvRQNCWRg== X-Proofpoint-Virus-Version: vendor=nai engine=6900 definitions=11886 signatures=596817 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 impostorscore=10 suspectscore=0 malwarescore=0 lowpriorityscore=10 spamscore=0 adultscore=0 phishscore=0 bulkscore=10 priorityscore=1501 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2608250185 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 | 4 ++-- 3 files changed, 25 insertions(+), 29 deletions(-) diff --git a/fs/ceph/addr.c b/fs/ceph/addr.c index 988ead716991..2ff90b891fc9 100644 --- a/fs/ceph/addr.c +++ b/fs/ceph/addr.c @@ -2196,50 +2196,45 @@ static vm_fault_t ceph_page_mkwrite(struct vm_fault= *vmf) return ret; } =20 -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 d52e2b389e0b..b91125567cf0 100644 --- a/fs/ceph/inode.c +++ b/fs/ceph/inode.c @@ -1383,7 +1383,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 0a779cdc8392..30e625e02398 100644 --- a/fs/ceph/super.h +++ b/fs/ceph/super.h @@ -1400,8 +1400,8 @@ extern ssize_t __ceph_sync_read(struct inode *inode, = loff_t *ki_pos, struct iov_iter *to, int *retry_op, u64 *last_objver); extern int ceph_release(struct inode *inode, struct file *filp); -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 /* dir.c */ extern const struct file_operations ceph_dir_fops; --=20 2.39.5 From nobody Mon Sep 28 05:50:15 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 18E6E4908AF for ; Tue, 25 Aug 2026 21:48:49 +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=1787694537; cv=none; b=lw2b0bhA+znfalpc+E50n/cdXZDOJIdye41Vumi+SkqKXL4Ywy0/Eur51WAkgl42lvWmsA51twZqSbhGV2IDw/DJoFV/TjIvaGPPn90LEcOqkOfU3BAkuI6OrX/RLQo2s/GqTg7YzdU97QlUetIOTkzZMOoB2P+pin/AqzRqE/U= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787694537; c=relaxed/simple; bh=o8yPRAgB+O6vycgAKR5Qjn0SvBVNLIHTB35zWJ9VYOE=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=oyyGPqGvuFsBHsTlM3DCvdtv1z3pGM/pYdhWqoWewTHC9QyqA274DhdARc2urgpZnbRntZgeqZfSiHYLRO6ITI3U+I2+hl+pavGaI69w7pdW25GhXtwNzLBNNuGvLRSKLe3Mi1S0TK6rSTY9wzTEN9Sr6uas/w2wWLRTfYwRUBA= 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=TrXmDkcI; dkim=pass (2048-bit key) header.d=columbia.edu header.i=@columbia.edu header.b=xPYPSNK1; 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="TrXmDkcI"; dkim=pass (2048-bit key) header.d=columbia.edu header.i=@columbia.edu header.b="xPYPSNK1" Received: from pps.filterd (m0167068.ppops.net [127.0.0.1]) by mx0a-00364e01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 67PKYMTH2697505 for ; Tue, 25 Aug 2026 17:48:48 -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=CIBu m0R8f6BY9lRRhGuW3Okr6prk5O1cGQ58Yp0bXnc=; b=TrXmDkcIPCZhUyxs0vLB 6Pr6XvdoWeIOf5uf1W0OYFjufLtC/Z0iTzn7OCz5VxtlU/+UmSZsSLCcilHSTzlP 5GjVErq2VRRGqB7pSEEIocBQb2fv1Ca6RgU709ww3oYzZCokz6Yd3Q8RZZ4jI/l3 xKJVZnrAJPxMY8Fjz5ypH82EMn0z48yhnQ8SMPhtf8x6gVa38Vh1hoZSXkvgQkOh ns4qRKf0BbokyCiebeiTFrlIqvW4gawyhSdkJj+QykLpzggRhMvhyL7qun/orocE JeYJAx9w+7YHIr8zTfCTwXDKrm5REKhrHa5/HaqoDwoDfLjRe2urJMOLGNjEXdlX Dg== 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 4g9e15jfkq-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Tue, 25 Aug 2026 17:48:47 -0400 (EDT) Received: by mail-qt1-f198.google.com with SMTP id d75a77b69052e-51c21c01cf3so5056361cf.2 for ; Tue, 25 Aug 2026 14:48:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=columbia.edu; s=lionmail; t=1787694527; x=1788299327; 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=CIBum0R8f6BY9lRRhGuW3Okr6prk5O1cGQ58Yp0bXnc=; b=xPYPSNK1PtFdxTSmzR55q15a9Dak8X0I3AwhsAHVtbk05S1LvzJVhEPMNenvrw31pt s6LlftT3w2K+JmzD90FibcxF8MGtJnxX36h/rcsFiO/bgdkTpFlwGTlXJ/l5uS6gZvZI SGweIY/I+yFCC+YNdxnVrWPkkY6DlPwvazA2m+OjqMCrIKe1fORB5tvW0IJJJkbXdjwu MIc0RQelAYJwItODFhgamHP25sfCJVJRLLwpAoiyeBUBHpGuy2N7aXLl4/f0Kyhmu+5V uTRZHq83xNHFkCE1uHm7QIjdZt70JMCMhlzSGrxA6iPAtll4GHYE8riMViOimoYuHM/8 k1Fw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787694527; x=1788299327; 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=CIBum0R8f6BY9lRRhGuW3Okr6prk5O1cGQ58Yp0bXnc=; b=Aa8tRKCFNCB0tqnTNdiZHqbvqZ+7AKjj2sRrzgjmAzIn99i5CVNV2tBIISyQk7Vxzy jqd/FT6tNrqjQL4afTzT4dobuPQKMqjs12aA11gQ+QEQWKT/A/wMboL4bSHgfDq3He/X 61JMWqc2GraJSYq1kqxNtIN3bYXiTiZtpVHbab4RndUHw4x77iky4G8r/DcaCX7rqFDI LOSS4tcDK7plLFaQIBL8LGa5QA/ZzE87/qO5P3hJ7NA4aTS+aslQ0XC+zFXzHqB3ud1K 4JpUfpQGJ2PLTw2JAq0C0jLzjOP1FWWRFQwI4bKE+8LbUfmYGMmN+ZyU13up9CDVCoZ5 auNA== X-Forwarded-Encrypted: i=1; AHgh+RqPZre1Tqxq7Dm/IdOKaSxxVv6zz/ENSEWA1joi0fS+d23vUUKlOVUyikPRzgQf88yw8IeBQKVYXGdOPkA=@vger.kernel.org X-Gm-Message-State: AFuF++k+CydyH+RfnMgYyYC6RBfPyIcHw7JZpni6tBBlKhW+9MZ0umHK SwAERF7+2JWfXezvuOv3jTBxRaVuAyJBnEnp/a0DcWy6FN5Jm58MxAlD/IQTUKL6LaE+9ArmFc/ lXJh+ovV3SvASZzAoGfsS2PhYrh4PVMjYSLx5SEJwBB+M2jnatWeYXf3xNfJj7A== X-Gm-Gg: AR+sD11GJTrJKTo1X4h5mxZHx3K2pY46wyVvqTo6/+4hOTne6RR+xe7TtLOLZWPl1Gw Psh6OZUqCBT959/1qdwD35K/KTN8bALaoBH6z4MXFrNt1+8bge0h6itMw0i64lEOHbh8ttY/+AP flFvCrYYluAQ7QT8XOFG0rHxWskMV6PA3snxYaLeuh8dWbDNuVH7xwl5Tga0WRxVrW5L3ldotly i8p+0EdQ4bFbnbRnO00IMLjFh3swWgd8rdmE7UiDu0plBdC6fdYA+csoI5L7y6gLowE1uYloomW 2PNSujwNl9bf/o6Wk+vA24oekhvKtu96vADEMZyEhA2vphOwqm/HYDcBgDnz0UuL2cs00RRIlE/ WjFWcgJb91g== X-Received: by 2002:a05:622a:1ccf:b0:527:7027:cc1b with SMTP id d75a77b69052e-52e423d17d5mr24384591cf.32.1787694526739; Tue, 25 Aug 2026 14:48:46 -0700 (PDT) X-Received: by 2002:a05:622a:1ccf:b0:527:7027:cc1b with SMTP id d75a77b69052e-52e423d17d5mr24379441cf.32.1787694521631; Tue, 25 Aug 2026 14:48:41 -0700 (PDT) Received: from [127.0.1.1] ([37.142.157.200]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-c250a9ef8ffsm139207566b.60.2026.08.25.14.48.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 25 Aug 2026 14:48:40 -0700 (PDT) From: Tal Zussman Date: Tue, 25 Aug 2026 17:48:12 -0400 Subject: [PATCH 5/6] 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: <20260825-ceph-inline-folio-v1-5-d2366fade152@columbia.edu> References: <20260825-ceph-inline-folio-v1-0-d2366fade152@columbia.edu> In-Reply-To: <20260825-ceph-inline-folio-v1-0-d2366fade152@columbia.edu> To: Ilya Dryomov , Alex Markuze , Viacheslav Dubeyko Cc: "Matthew Wilcox (Oracle)" , ceph-devel@vger.kernel.org, linux-kernel@vger.kernel.org, Tal Zussman X-Mailer: b4 0.14.3-dev-d7477 X-Developer-Signature: v=1; a=ed25519-sha256; t=1787694507; l=5910; i=tz2294@columbia.edu; s=20250528; h=from:subject:message-id; bh=o8yPRAgB+O6vycgAKR5Qjn0SvBVNLIHTB35zWJ9VYOE=; b=jYrBgSpKI/QpctdxBAdaw2dg9d5vedmDv/ahTQ8bOgL53TCG19VC14YVBMvY/DSXDTLcJpVWn RcH0PSiE1NhA9fw0cLS32Gm97qGUYwl8VEMFK8i2oU87cJxWe/6rM+0 X-Developer-Key: i=tz2294@columbia.edu; a=ed25519; pk=BIj5KdACscEOyAC0oIkeZqLB3L94fzBnDccEooxeM5Y= X-Authority-Analysis: v=2.4 cv=EtriaycA c=1 sm=1 tr=0 ts=6a8e0dbf cx=c_pps a=mPf7EqFMSY9/WdsSgAYMbA==:117 a=VsYqNs1x6zyujO4rtox2PQ==:17 a=IkcTkHD0fZMA:10 a=Sv0fKeRqtYgA:10 a=x7bEGLp0ZPQA:10 a=A0y_DWxS2BwA:10 a=VkNPw1HP01LnGYTKEx00:22 a=Da8U98TiO7q1upZEImrf:22 a=usPcmh10W0ubT8QP8_c3:22 a=945u1j8887UpmP1-4VoA:9 a=QEXdDO2ut3YA:10 a=dawVfQjAaf238kedN5IG:22 X-Proofpoint-ORIG-GUID: YABEW8lcZQ57seCNGaE6I14IsO_E1kE8 X-Proofpoint-Spam-Info: AW1haW4tMjYwODI1MDE4NSBTYWx0ZWRfXzp6Jf0XqiLMI SHw7VGxn/ALYyMMM8F6ttRgLqOo5BtPPFlfSuX00D6Rxp/Jfd05WYXJuIt6C+g7m4ltvMJsUz3n FvSUJPjuFe1UoTC773V+9bL2RLASYEEdaOHDjJP3wSfhIm3ozvx5 X-Proofpoint-GUID: YABEW8lcZQ57seCNGaE6I14IsO_E1kE8 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwODI1MDE4NSBTYWx0ZWRfX4tgivgdaydmu b60HjjEybYpDAcsJy8QAg7/dhOLsNTjxxYxoGNfoXKFZcuCn5NCVL4blwG5GpbmoRoTi0I13n7C r3xDMuru0CMXAX6JsMmvYzYt3E9L48RzpyZ6l3VSxa+hvASq0X02pat02L952cTMzWkf9yn+QyV UPL7VEdUlbxQr+HlVj0MHV3+ZFKFC7dtUqMAMR+UtAt7e5t/Wyla7GqZ7XG06Mn8KoCduhJ6Kcw GHRvna9p1auN78nCdI6RizuCX4CfjPKVXCWonjRzhhfVYaOl+Hc6wlwYzqZmHMvae75hZ9jnaZo 0bhpuO5ZD6qWlJzhumOQ2og4XPJun4nX1m0R1EfzlGt1WYvlYEs9CCJ4l6mW+UB4eQn+Q6/d5d8 FpfiPgTz0JHgdMMR43HTRwbWEdl5q3aSCfW1dp9x6PQFLI5K3OTMRmj6zyXeRT5v7Fnp2g3gFbC 29/PpxWsC9UwymKvkIg== X-Proofpoint-Virus-Version: vendor=nai engine=6900 definitions=11886 signatures=596817 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 impostorscore=10 suspectscore=0 malwarescore=0 lowpriorityscore=10 spamscore=0 adultscore=0 phishscore=0 bulkscore=10 priorityscore=1501 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2608250185 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 2ff90b891fc9..95e889020db7 100644 --- a/fs/ceph/addr.c +++ b/fs/ceph/addr.c @@ -2064,7 +2064,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 592e32d1e2d4..0b6921293f27 100644 --- a/fs/ceph/file.c +++ b/fs/ceph/file.c @@ -2275,8 +2275,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 b91125567cf0..0876752c90dd 100644 --- a/fs/ceph/inode.c +++ b/fs/ceph/inode.c @@ -1010,7 +1010,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, @@ -1367,7 +1367,7 @@ int ceph_fill_inode(struct inode *inode, struct page = *locked_page, int cache_caps =3D CEPH_CAP_FILE_CACHE | CEPH_CAP_FILE_LAZYIO; ci->i_inline_version =3D 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 @@ -1383,8 +1383,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) @@ -1714,7 +1713,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) && @@ -2993,7 +2992,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); @@ -3022,9 +3021,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 3c62e3c3530b..c0c72a41ef46 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 30e625e02398..6df62b51a6a4 100644 --- a/fs/ceph/super.h +++ b/fs/ceph/super.h @@ -1120,7 +1120,7 @@ extern void ceph_fill_file_time(struct inode *inode, = int issued, u64 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, @@ -1161,8 +1161,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 From nobody Mon Sep 28 05:50:15 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 795D0488757 for ; Tue, 25 Aug 2026 21:48:48 +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=1787694539; cv=none; b=mD3yRfRb4Ci4QXcpu29Yxwc1GNMCo8P95zwRix1Q+TJU1cuzvIP2iAnJMBb5BYSbKfFeH6c40lJFupubq5UWr9zX6/xK9Fr6rLyhKICf+fnZpzSaQ5wQ39Dh9xoX77JXP8YHYnMkqnOf3aSaOPerxA/taLFzN8CFGvtaij9AUpc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787694539; c=relaxed/simple; bh=wCXx6gySSVQtNNpiAcoYthUhph4w2HTEw7CB+d+HVVI=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=uzRyRwOQYV0PDETLee9saKVp4Xz3PaaNrIvYc1IgznRe05cfbCDAnH3gUEF7T2MlT5bga2yaskq4WmhLmA0lj7G6UNI82K/QCwYstkVF8QMA8FUVWfOcxHMjeDqTPJwKO8axmmOZfGsAY5xt8uYdHl5MHolK4jDxbZd/kSALeVI= 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=UL2pe0pi; dkim=pass (2048-bit key) header.d=columbia.edu header.i=@columbia.edu header.b=rzh/eMII; 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="UL2pe0pi"; dkim=pass (2048-bit key) header.d=columbia.edu header.i=@columbia.edu header.b="rzh/eMII" 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 67PKYPYR2128653 for ; Tue, 25 Aug 2026 17:48:45 -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=jF/0 IFIoBqA2qUtirbDj0G496A1nIjjjXUVQ3bxOLPw=; b=UL2pe0piy9y2x4Bhhopn J1st+XpYXu7m2VufAILcqbBslZyqnOENXRlS9CX98SuNufd0BQwYXyD0ulAkNda2 VrfoJrp9Ixyrh24De7jF6dMU/fE+QBXihRLX8EQ5rL45+jvP/ipooPVzMQtsfgsJ lrvM8IPzrvHtC+vNwjvXbX+stG0yCNOzUDOsqXnQafTcsEs56K1oSPDUSmoTMX59 eGuDhzYGEnknNldSml9KVawhxdn47ngLa1NwjFtfP9ZWPYcUEMZoTKRSX+BJt5SQ AyrCaXet8jhmCZS0mNJ6ygtxHektGreZsoE+GtsnvjT0ITI9gdEBp8k5V0l3cjDQ xw== 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 4g9ec3thcc-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Tue, 25 Aug 2026 17:48:45 -0400 (EDT) Received: by mail-qt1-f198.google.com with SMTP id d75a77b69052e-51c1a9764f0so3322451cf.1 for ; Tue, 25 Aug 2026 14:48:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=columbia.edu; s=lionmail; t=1787694524; x=1788299324; 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=jF/0IFIoBqA2qUtirbDj0G496A1nIjjjXUVQ3bxOLPw=; b=rzh/eMIIX4BqVOxFz8Qo/xTiBrsOi4Zvvqwv/yEqBAEtPbsdKP8Chx2o5qQ6dPwq37 2Pck9YticJqaS4/Yg3FORqCo8CNQKKB0wq8nUpVar5B0p8QKAOf/Qt1RHToVvgrOmUJI 4Di1hGmXKpf5ESYvXoENUFL8gbu+lwZqLWkY7ru+BGEboY9KzwJffS4KBQstx7FXDxQN dmdfiC7Lr+bD7XfjLHDjjYTegBR4Mq/SPUhZcivJtm9YlGU+CgV13xxGEW6cMsQcLQCP xYssqA5ORCGTi4PnJfg/GzkpMEepFRXBmLVakx/Gvv5Gw9iBk5VbETtgdHLJ7bmMJvOc xJzQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787694524; x=1788299324; 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=jF/0IFIoBqA2qUtirbDj0G496A1nIjjjXUVQ3bxOLPw=; b=CY9jWiSwgHYvpW1vsjtuIb4+PGh1uJCsI6bTLk1gt1wJfaADf8IuAPOc2u1M9358wJ dTYP4Htwn/trvhDXXWZlb8wf20CgVIbtfNKUD2oPkDxoX643igEBk4CQfAyCwTL8PyHz HswR60ad4Pq2G7waykY1c578DeK66DUw62sn8I1LyEEWOYFnZlV5T14c08afxIHfDvSQ DZzVQA8rI2DF/o66EUxHWV4vRFt6s4nUCRnTD2OWGOiNGjz8f/IkHDp3r+F1DblSW61h ZdO36o9IA+6EvlZFgvOz1//C6SSKRY6ELFGVz55sOAnVXnoeronqo5WTQ36pRUqkEqJL li1g== X-Forwarded-Encrypted: i=1; AHgh+RpnV4YcxOyV/2HVhsb12UXQ7xeIio7c0qa7bDHDdJwngDs1ol5+ldpmMQZMsMXNppb6MtxNjGe9tnk/spM=@vger.kernel.org X-Gm-Message-State: AFuF++kpYr4bgoadzUp52wNSkKx/yBxSh10XqdsZpD3iw4w8f1XHYIYE yarQTzInBO3fxk0Hf6wvGzBGcX3W3H4U3bkw5vddJu/0M+VZdf8UCdj1P2KgSXx9dMCCzHFeLOu 7nRHVuGRl5FB0wBjp+fv6APX7oAqgDKNs444PdsxDE7azw87DiQ7YEkIUAGce9g== X-Gm-Gg: AR+sD12mRtN+KqvUG6PQAFGPuSEplT/MmXT8MhfOYxOmus5OUWA3tipRtyvnmvt7R2L MN/UJT5HFMi3cJDsiWDc+hmdfJb85ymIqLsW8Z1NwJEevfXMcsvL1KmR5XaSz0vTbsux1Qwkepx UAaG7VvchR19fsozo7yk/hXVkVv1PJL10Wtz2jnRAIubpbVnpg42GnbUXvu757Ad07E1zJe4Jwe 8zFic3syELdLJXvMoMJpzmv+hXEv1jfVst2q8j1/mw9wGQHb/eJtYitJdKxoHJ4jwcQ9KgET3y8 n7HoOhUCpG8fLl0uPipjj7Mi3IPI7LVnZM656P8dBEamq9tAgHTSpbMhvU/1/KTgkodcyZaoXbi 58U5O+vHbog== X-Received: by 2002:a05:622a:6102:b0:52d:3ccc:968b with SMTP id d75a77b69052e-52e42235c7emr23131801cf.9.1787694524343; Tue, 25 Aug 2026 14:48:44 -0700 (PDT) X-Received: by 2002:a05:622a:6102:b0:52d:3ccc:968b with SMTP id d75a77b69052e-52e42235c7emr23131351cf.9.1787694523902; Tue, 25 Aug 2026 14:48:43 -0700 (PDT) Received: from [127.0.1.1] ([37.142.157.200]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-c250a9ef8ffsm139207566b.60.2026.08.25.14.48.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 25 Aug 2026 14:48:42 -0700 (PDT) From: Tal Zussman Date: Tue, 25 Aug 2026 17:48:13 -0400 Subject: [PATCH 6/6] ceph: use folios in put_bvecs() 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: <20260825-ceph-inline-folio-v1-6-d2366fade152@columbia.edu> References: <20260825-ceph-inline-folio-v1-0-d2366fade152@columbia.edu> In-Reply-To: <20260825-ceph-inline-folio-v1-0-d2366fade152@columbia.edu> To: Ilya Dryomov , Alex Markuze , Viacheslav Dubeyko Cc: "Matthew Wilcox (Oracle)" , ceph-devel@vger.kernel.org, linux-kernel@vger.kernel.org, Tal Zussman X-Mailer: b4 0.14.3-dev-d7477 X-Developer-Signature: v=1; a=ed25519-sha256; t=1787694507; l=1018; i=tz2294@columbia.edu; s=20250528; h=from:subject:message-id; bh=wCXx6gySSVQtNNpiAcoYthUhph4w2HTEw7CB+d+HVVI=; b=o+zPcPS4z/LjHVF51j42qPs7iUB+fHLwm9Dfy/P+ZUmHOaqcaYay/CGS+M2ZgblvxofpLpGH9 4s6jj/BLXNACybPsK+CBcYJuPsid66Q+FVs1u1RGufHQjHF0sTEbieC X-Developer-Key: i=tz2294@columbia.edu; a=ed25519; pk=BIj5KdACscEOyAC0oIkeZqLB3L94fzBnDccEooxeM5Y= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwODI1MDE4NSBTYWx0ZWRfXx1J8IDGqHazg aqzOjrTnLx1yZK+b9wTiJ4FQh+vqdQoZvRHVZOV7OICTIOzACc8y/snUCv9AiPctxj5UtQpX0P2 ukYDcxKtlgw0/3FOJbRw5EIF+nAgmrhpZIBy3Eo8OeeUc/LZZhlEPMskYCzLz+WpvumQpuo/lV1 wg5uDgS71dFRQBnEncwfbDBnDxW1em2bYl1C59vkrDS2O8PAoQo/EPyD9U8/GWlh1zCdahpHoNx U+POrK3c3O2rQ7egYRoIci8cCSgJJWU6+G9XwJLdJ+pirx/bF/Q2z693GK8Ir/SCP6TMgdBcDHP s3NFkUrq+tNh5AwLmuboQjK8BkQkzTNpDH235BKKlIOtqbcrDeQIR4jLxRpPhs1rXqfqvGc8Ala NPzGGVv+OidBWY+VeCSdfOgKXzTC+jf3SKxZQ+u+azGTmEShmV7rfGiENHzGaDEUWE5q70ICgcf Ypmx6BU+kIRTUpoqOmQ== X-Proofpoint-Spam-Info: AW1haW4tMjYwODI1MDE4NSBTYWx0ZWRfX1byNs5xTeDHA 5nTjjtY7P/ljabQDRpq9vbqiEJDMYOQbF3CokKrBXx1xxbzSwMIraNDkI0N4/vYAop98o8rQdfO zJU5GCG8d2sgPFOXhm8pf3BISVP4o8QxE4F5g0WJKuJoEcp6wKDN X-Proofpoint-GUID: _Jj3KkCzqOqesS88DCIiBLJalENhDuzZ X-Authority-Analysis: v=2.4 cv=J6OaKgnS c=1 sm=1 tr=0 ts=6a8e0dbd cx=c_pps a=mPf7EqFMSY9/WdsSgAYMbA==:117 a=VsYqNs1x6zyujO4rtox2PQ==:17 a=IkcTkHD0fZMA:10 a=Sv0fKeRqtYgA:10 a=x7bEGLp0ZPQA:10 a=A0y_DWxS2BwA:10 a=VkNPw1HP01LnGYTKEx00:22 a=Da8U98TiO7q1upZEImrf:22 a=svvvyxlR1OQQkelhaPoB:22 a=NfI_OOiaZd5PfrAeB84A:9 a=QEXdDO2ut3YA:10 a=dawVfQjAaf238kedN5IG:22 X-Proofpoint-ORIG-GUID: _Jj3KkCzqOqesS88DCIiBLJalENhDuzZ X-Proofpoint-Virus-Version: vendor=nai engine=6900 definitions=11886 signatures=596817 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 suspectscore=0 phishscore=0 bulkscore=10 impostorscore=10 spamscore=0 priorityscore=1501 clxscore=1015 adultscore=0 lowpriorityscore=10 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2608250185 Use bvec_folio() to dirty and release the pages as folios. This adds one call to compound_head() per page, while folio_mark_dirty_lock() and folio_put() each drop one, for a net saving of one call per page when dirtying. Signed-off-by: Tal Zussman --- fs/ceph/file.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/fs/ceph/file.c b/fs/ceph/file.c index 0b6921293f27..89233c5905c9 100644 --- a/fs/ceph/file.c +++ b/fs/ceph/file.c @@ -182,11 +182,15 @@ static void put_bvecs(struct bio_vec *bvecs, int num_= bvecs, bool should_dirty) int i; =20 for (i =3D 0; i < num_bvecs; i++) { - if (bvecs[i].bv_page) { - if (should_dirty) - set_page_dirty_lock(bvecs[i].bv_page); - put_page(bvecs[i].bv_page); - } + struct folio *folio; + + if (!bvecs[i].bv_page) + continue; + + folio =3D bvec_folio(&bvecs[i]); + if (should_dirty) + folio_mark_dirty_lock(folio); + folio_put(folio); } kvfree(bvecs); } --=20 2.39.5