From nobody Mon Sep 28 20:05:57 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 BCD3626ED4F for ; Mon, 17 Aug 2026 22:17:15 +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=1787005037; cv=none; b=fbfIL15LcJR6236Arvq9lqlvPN3zK/B01QPBiRDC5S2hh8QeECbGG2Bt9Ukp8wMbX7iHT94VAJXOsMficT+bEdfvf0XZs2kvyX+mgLusgOjzeUY0DmDhUH6T0TAC0d+bkIWJYrcsCUoZjRKWfCrs+s0uacO0zi9NSfg8U/iH3oc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787005037; c=relaxed/simple; bh=3emUeJ/i3q5NhI80qYUlgdvPT7Gfl0fRu9MRHXU+YvE=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:To:Cc; b=qerFCayXxP6/QukuhkFJ3DkCtGhaTPa6fUhuqxQT2eeMYBVSINMwTwFzZHxWaUKxJsHc37oA6uQNtU4L/w0WjEquH+t//e7Dc4SUJAu3kJDySg0EMLhzV37YrzUBF5ESA0T6hPLa5vFioz1ntdrnZit6N8SttpJfZE55bTOcdxE= 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=tC/ur6+b; dkim=pass (2048-bit key) header.d=columbia.edu header.i=@columbia.edu header.b=4pyp751a; 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="tC/ur6+b"; dkim=pass (2048-bit key) header.d=columbia.edu header.i=@columbia.edu header.b="4pyp751a" 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 67HKYsDZ4167490 for ; Mon, 17 Aug 2026 18:17:15 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=columbia.edu; h= cc:content-transfer-encoding:content-type:date:from:message-id :mime-version:subject:to; s=pps01; bh=IkqgLJDsDdwNABdulCMVbqC51Y mexyHq6HFpo9x0jwE=; b=tC/ur6+bl9+o96k8ze7vUkTUTVps+hFGbSFosJywHF Vj9fIKVU9CS8mfUmBS7LuMYMHjljIr43D2iCH6mrmSuBn6unNziMnx+EqDctiO4L 4281rTLBh2/lLMRrTopngzcRx1/fKVeA2oiokZHlW4CGTJIbXMRyQkr7J5UtM+ef NlZmCwvNClKvk/+pC5r0jzG2ahQaBbmazLSdaBDzRF1cJNER9CGlAZr1TQwXnDxM TktQ1gUEcueetXqMMLKZK5511DKHna2H+fJIkztIiNilfBRHiVtR+IF9l1v+WFqP UNPNVsztvLwveH2Zi2zQX01WUv4KpdJG/o8dUmagr2og== Received: from mail-qt1-f197.google.com (mail-qt1-f197.google.com [209.85.160.197]) by mx0a-00364e01.pphosted.com (PPS) with ESMTPS id 4g47s5hf28-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 17 Aug 2026 18:17:14 -0400 (EDT) Received: by mail-qt1-f197.google.com with SMTP id d75a77b69052e-51c0408254aso5274591cf.0 for ; Mon, 17 Aug 2026 15:17:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=columbia.edu; s=lionmail; t=1787005034; x=1787609834; darn=vger.kernel.org; h=cc:to:message-id:content-transfer-encoding:content-type :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to:content-type; bh=IkqgLJDsDdwNABdulCMVbqC51YmexyHq6HFpo9x0jwE=; b=4pyp751aWvJdFShB1AKfttG+7p5yG8dNvhDAyCcf4VlvpgTBVOhBFtc53CYdu95Cxr /ysj5Wydl0BYKa8jQVYwW6OghSbcylbjC3n48G150Eyvx7bqSFS0Uj5g62es827pEF58 Zba4PyVYaq+E+FoObFyiRTz+IJbC0hyKwabEkNs6Dt97qhtxfKLO9ZdwIwviJCXi5yYn w5kqvBUMqZhnL7k45OmiIEyvD0lBwcAiuEvZ+ASklN1m27FmSMFN+B6w8ja1LKGawMnC 8BPwhgS6uJy/KnPyuFwmD2d72l2WH2rhsQj5qr4CITI81ud8KQ4kBSGNII2T4ZBbPOJc jpbw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787005034; x=1787609834; h=cc:to: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=IkqgLJDsDdwNABdulCMVbqC51YmexyHq6HFpo9x0jwE=; b=J1fLXWMzyCU+lEKVS/31S3AQPMy3/BC6+CKYKVygkJC+Yxa8QuJaTsM+9AJmwxMXwa JLF0T9X+k/Qf7+kSAlsbWaDswFbPE5V49Xbr+iNaJzifck8ItIeifMNwzEx/W4rfRH89 sWWrtcXGMiBSs0FWZPFNygKgTbey/QqNj4QIznkQk8mms1+sKhV+KqIXLA40xKAwdKhL j07VSoEi4fkPT0wxwaCjT5zUqdvNPBMrBNgHpNA9o6hO8yjVAJIzdbQVlffUul8wT7QP +iajIIwDoD/DfsePJJK29z1ZrxjG28WPzFwJMrcMqQfew82k+xb93sa1uC2GlZLCohv0 6z4g== X-Forwarded-Encrypted: i=1; AHgh+Rolg+B25i2usRMtk5frCq+NSa4tiCZTOcH2kITM8GYKIRCcTflsK4hhgOHCe1ukUr6BAeGyPr5YeQxtqBs=@vger.kernel.org X-Gm-Message-State: AOJu0YwJcd3bFT0ENlifPnGcQB9O+bJUBZsbIoxvU65xaUYgds7QwFXq PWDswx4Tfc72KtEVpHYx4Czs78T7Lxse5+3jCzHP363Qa1l/jy5TQQ+2y5poagHWUThNXzcaZmb cDaMiyA/SWvWj1K0TB8Qkga6mYmBI5tqKbBVTOJik5dhoTg5hr+jGsRGBwUY9/w== X-Gm-Gg: AR+sD13opSNiglILFAD9QAKnoMeSQeG8tNJcNt5Z+eprZb5gqSvG/pST3zLncJ/nPEd ykN45CLuUbOB+ZNtdmpDXxRqZLb1i/ROO50YooOBpZh4YqdJOlc3v7VvsO4J1kJ1xFYpDQidMGI m4MbKQDCyShG7DG+qkJ8Z2DhQ6YhjTANVPEqfc4YW01u/Nj5LRzx9X6gI0LAee0ABVjA9bVpwbR TifZHRNzZfaEhEuuCp1anY82uJDXxKQNeavXHi97dmNSE74vgeCMKckrXNtzjQZNYClSft213r8 N8oZvYvKG4vlTrLmJAxVVwFkIthYUhSwiq5e7qX0Lz8pxWr4VtBOj30P68eKHwzununUBNXB8IB P8DIs X-Received: by 2002:a05:622a:5915:b0:517:c582:9161 with SMTP id d75a77b69052e-52dbed24a50mr29439941cf.7.1787005033881; Mon, 17 Aug 2026 15:17:13 -0700 (PDT) X-Received: by 2002:a05:622a:5915:b0:517:c582:9161 with SMTP id d75a77b69052e-52dbed24a50mr29439361cf.7.1787005033265; Mon, 17 Aug 2026 15:17:13 -0700 (PDT) Received: from [127.0.1.1] ([5.29.21.87]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-482a5a7c57fsm6879160f8f.22.2026.08.17.15.17.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 17 Aug 2026 15:17:11 -0700 (PDT) From: Tal Zussman Date: Mon, 17 Aug 2026 18:16:56 -0400 Subject: [PATCH] libceph: use iov_iter_extract_pages() in ceph_msg_data_iter_next() 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: <20260817-ceph-msgr-writeback-v1-1-38f3754034b9@columbia.edu> X-B4-Tracking: v=1; b=H4sIAFeIg2oC/yXMywqDMBBG4VeRWXcgBqqhr1K6iPFXR6mVGXsB8 d2b1uW3OGcjgwqMLsVGipeYPOaM8lRQGuLcg6XNJu985YILnLAMfLde+a2yoolp4ljVrT/Dh64 E5XJRdPL5X6+3w/ZsRqT1t6J9/wLpIBlJdwAAAA== X-Change-ID: 20260808-ceph-msgr-writeback-a67d25e28f1e To: Ilya Dryomov , Alex Markuze , Viacheslav Dubeyko Cc: David Howells , "Matthew Wilcox (Oracle)" , Christoph Hellwig , 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=1787005030; l=2969; i=tz2294@columbia.edu; s=20250528; h=from:subject:message-id; bh=3emUeJ/i3q5NhI80qYUlgdvPT7Gfl0fRu9MRHXU+YvE=; b=DSwnX+x8QsU/1mHqSk6JgvCrywrtF2432q8gLEVJWLjvlwKF+p0ERVxxlLsEElU0aCou9g3YU BsiVFup94ePB5thPUzO8CgpLGw3WIzz3Png+jw+/mhDeoH0jNavGscm X-Developer-Key: i=tz2294@columbia.edu; a=ed25519; pk=BIj5KdACscEOyAC0oIkeZqLB3L94fzBnDccEooxeM5Y= X-Proofpoint-Spam-Info: AW1haW4tMjYwODE3MDE3MCBTYWx0ZWRfXxOhz9ablbBys kw8UIOVBoSM5pomdK0nUk/aoc28IVhYlX+0FtpeO+kBJUJldD4PbuYmqwsQ0MPeUG8bz7T1ZtJZ mrHPnEHnY5fPNVKosugOHj00CvpW3W4MTvjGmFvDiCt8KvFdCYJs X-Authority-Analysis: v=2.4 cv=Rtr16imK c=1 sm=1 tr=0 ts=6a83886a cx=c_pps a=EVbN6Ke/fEF3bsl7X48z0g==:117 a=+jhzTfgB9+Zh4fN54NgtOQ==: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=TEv_gA4yw5qAGLHRRRsA:9 a=QEXdDO2ut3YA:10 a=a_PwQJl-kcHnX1M80qC6:22 X-Proofpoint-GUID: 9ok4Qh4kKlYPAcbG5kyh8DTUr0Bn4SsG X-Proofpoint-ORIG-GUID: 9ok4Qh4kKlYPAcbG5kyh8DTUr0Bn4SsG X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwODE3MDE3MCBTYWx0ZWRfX/Ppa90SGF5vh xbO5oVd5cK8E69DGNhPwI9JLcnCcrwnMfLJ98KNVAuVBI7W/5mdNifXD6+ORbMGli54Y01WCj/6 u1cndnQA+TCdw5gjjYAsw9OoImCXI/su3/FTC+c6sFlTkWa0Zr/hRUaL2DcJUSytMfA/q7zuK3V qd32kNKD/3t6/2njbnFfmQ6mB1pa5a1yvkHggl5d2rNsHczu6czP+9Y2YcZm0pe4wu5t4WXtbkb Rlf+wLcwQqNquKMI3Syx4Bk8/gsEWPPTyaPQbq7o8YsS25dWltgpbiRfC53odkj2jKjWTTLpf34 l9rB0eMIMN63Q2Slzvp0g1ZjlgULZIGb8wesSlcBmHnxyDUkOUsTkSYkUk1y4GYTq4NFKxy3BGh I5d5d7zm3dMb41zq/CmsrENqqKP6EV6yXTZA3hq1CWtjbBUP5p+3WSZP5BPqmgbxpH/Z7KwRVNt wLdmcVUbVhdU1eQ5biA== X-Proofpoint-Virus-Version: vendor=nai engine=6900 definitions=11878 signatures=596817 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 priorityscore=1501 malwarescore=0 clxscore=1015 bulkscore=10 spamscore=0 phishscore=0 adultscore=0 impostorscore=10 lowpriorityscore=10 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2608170170 ceph_msg_data_iter_next() gets a page reference from iov_iter_get_pages2() only to immediately drop it, asserting that the page is pinned some other way. The FIXME here predates iov_iter_extract_pages(), which takes no reference for kernel-backed iterators. CEPH_MSG_DATA_ITER data only comes from osd_req_op_extent_osd_iter(), whose only caller passes the netfs read iterator, which is always kernel-backed. Use iov_iter_extract_pages() and remove the put and the assertion. The messenger still relies on the upper layers to keep the pages alive while it uses them, as it did before. Extracting from a user-backed iterator would pin pages that nothing unpins, so add a precautionary warn in ceph_msg_data_add_iter(). This removes the last caller of PageWriteback(), allowing the page flag accessors to be removed in a future patch. Signed-off-by: Tal Zussman --- The assertion is the last caller of PageWriteback() in the tree. The removal of the PG_writeback page flag accessors will be sent separately. --- net/ceph/messenger.c | 20 ++++++-------------- 1 file changed, 6 insertions(+), 14 deletions(-) diff --git a/net/ceph/messenger.c b/net/ceph/messenger.c index fd9c9e64dc8a..e08c3330b9f2 100644 --- a/net/ceph/messenger.c +++ b/net/ceph/messenger.c @@ -996,28 +996,17 @@ static void ceph_msg_data_iter_cursor_init(struct cep= h_msg_data_cursor *cursor, static struct page *ceph_msg_data_iter_next(struct ceph_msg_data_cursor *c= ursor, size_t *page_offset, size_t *length) { - struct page *page; + struct page *page, **ppage =3D &page; ssize_t len; =20 if (cursor->lastlen) iov_iter_revert(&cursor->iov_iter, cursor->lastlen); =20 - len =3D iov_iter_get_pages2(&cursor->iov_iter, &page, PAGE_SIZE, - 1, page_offset); + len =3D iov_iter_extract_pages(&cursor->iov_iter, &ppage, PAGE_SIZE, + 1, 0, page_offset); BUG_ON(len < 0); =20 cursor->lastlen =3D len; - - /* - * FIXME: The assumption is that the pages represented by the iov_iter - * are pinned, with the references held by the upper-level - * callers, or by virtue of being under writeback. Eventually, - * we'll get an iov_iter_get_pages2 variant that doesn't take - * page refs. Until then, just put the page ref. - */ - VM_BUG_ON_PAGE(!PageWriteback(page) && page_count(page) < 2, page); - put_page(page); - *length =3D min_t(size_t, len, cursor->resid); return page; } @@ -1967,6 +1956,9 @@ void ceph_msg_data_add_iter(struct ceph_msg *msg, { struct ceph_msg_data *data; =20 + /* the messenger never unpins pages, so the iterator must not pin them */ + WARN_ON_ONCE(iov_iter_extract_will_pin(iter)); + data =3D ceph_msg_data_add(msg); data->type =3D CEPH_MSG_DATA_ITER; data->iter =3D *iter; --- base-commit: fce4f3da41f1145cfa400002ce3a66e4a89a1902 change-id: 20260808-ceph-msgr-writeback-a67d25e28f1e Best regards, --=20 Tal Zussman