From: Ofir Gal <ofir.gal@volumez.com>
To: davem@davemloft.net, linux-block@vger.kernel.org,
linux-nvme@lists.infradead.org, netdev@vger.kernel.org,
ceph-devel@vger.kernel.org
Cc: dhowells@redhat.com, edumazet@google.com, pabeni@redhat.com,
idryomov@gmail.com, xiubli@redhat.com
Subject: [PATCH v2 4/4] libceph: use sendpages_ok() instead of sendpage_ok()
Date: Thu, 30 May 2024 17:24:14 +0300 [thread overview]
Message-ID: <20240530142417.146696-5-ofir.gal@volumez.com> (raw)
In-Reply-To: <20240530142417.146696-1-ofir.gal@volumez.com>
Currently ceph_tcp_sendpage() and do_try_sendpage() use sendpage_ok() in
order to enable MSG_SPLICE_PAGES, it check the first page of the
iterator, the iterator may represent contiguous pages.
MSG_SPLICE_PAGES enables skb_splice_from_iter() which checks all the
pages it sends with sendpage_ok().
When ceph_tcp_sendpage() or do_try_sendpage() send an iterator that the
first page is sendable, but one of the other pages isn't
skb_splice_from_iter() warns and aborts the data transfer.
Using the new helper sendpages_ok() in order to enable MSG_SPLICE_PAGES
solves the issue.
Signed-off-by: Ofir Gal <ofir.gal@volumez.com>
---
net/ceph/messenger_v1.c | 2 +-
net/ceph/messenger_v2.c | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/net/ceph/messenger_v1.c b/net/ceph/messenger_v1.c
index 0cb61c76b9b8..a6788f284cd7 100644
--- a/net/ceph/messenger_v1.c
+++ b/net/ceph/messenger_v1.c
@@ -94,7 +94,7 @@ static int ceph_tcp_sendpage(struct socket *sock, struct page *page,
* coalescing neighboring slab objects into a single frag which
* triggers one of hardened usercopy checks.
*/
- if (sendpage_ok(page))
+ if (sendpages_ok(page, size, offset))
msg.msg_flags |= MSG_SPLICE_PAGES;
bvec_set_page(&bvec, page, size, offset);
diff --git a/net/ceph/messenger_v2.c b/net/ceph/messenger_v2.c
index bd608ffa0627..27f8f6c8eb60 100644
--- a/net/ceph/messenger_v2.c
+++ b/net/ceph/messenger_v2.c
@@ -165,7 +165,7 @@ static int do_try_sendpage(struct socket *sock, struct iov_iter *it)
* coalescing neighboring slab objects into a single frag
* which triggers one of hardened usercopy checks.
*/
- if (sendpage_ok(bv.bv_page))
+ if (sendpages_ok(bv.bv_page, bv.bv_len, bv.bv_offset))
msg.msg_flags |= MSG_SPLICE_PAGES;
else
msg.msg_flags &= ~MSG_SPLICE_PAGES;
--
2.34.1
next prev parent reply other threads:[~2024-05-30 14:25 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-05-30 14:24 [PATCH v2 0/4] bugfix: Introduce sendpages_ok() to check sendpage_ok() on contiguous pages Ofir Gal
2024-05-30 14:24 ` [PATCH v2 1/4] net: introduce helper sendpages_ok() Ofir Gal
2024-05-31 7:32 ` Christoph Hellwig
2024-05-31 8:51 ` Sagi Grimberg
2024-06-03 12:35 ` Ofir Gal
2024-06-03 21:27 ` Sagi Grimberg
2024-06-04 4:27 ` Christoph Hellwig
2024-06-04 8:24 ` Sagi Grimberg
2024-06-04 13:01 ` Sagi Grimberg
2024-06-06 12:57 ` Ofir Gal
2024-06-06 13:08 ` Christoph Hellwig
2024-06-06 13:18 ` Ofir Gal
2024-06-06 13:52 ` Christoph Hellwig
2024-06-06 15:42 ` Ofir Gal
2024-05-30 14:24 ` [PATCH v2 2/4] nvme-tcp: use sendpages_ok() instead of sendpage_ok() Ofir Gal
2024-05-31 7:32 ` Christoph Hellwig
2024-05-30 14:24 ` [PATCH v2 3/4] drbd: " Ofir Gal
2024-06-04 14:43 ` Christoph Böhmwalder
2024-05-30 14:24 ` Ofir Gal [this message]
2024-05-31 7:32 ` [PATCH v2 0/4] bugfix: Introduce sendpages_ok() to check sendpage_ok() on contiguous pages Christoph Hellwig
2024-06-01 22:36 ` Jakub Kicinski
2024-06-04 4:30 ` Christoph Hellwig
2024-06-04 14:42 ` Jakub Kicinski
2024-06-05 7:27 ` Christoph Hellwig
2024-06-01 22:34 ` Jakub Kicinski
2024-06-02 7:48 ` Sagi Grimberg
2024-06-03 9:07 ` Hannes Reinecke
2024-06-03 12:46 ` Ofir Gal
2024-06-03 7:24 ` Hannes Reinecke
2024-06-03 12:49 ` Ofir Gal
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20240530142417.146696-5-ofir.gal@volumez.com \
--to=ofir.gal@volumez.com \
--cc=ceph-devel@vger.kernel.org \
--cc=davem@davemloft.net \
--cc=dhowells@redhat.com \
--cc=edumazet@google.com \
--cc=idryomov@gmail.com \
--cc=linux-block@vger.kernel.org \
--cc=linux-nvme@lists.infradead.org \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=xiubli@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox