From: Christoph Hellwig <hch@infradead.org>
To: "Philipp Reisner" <philipp.reisner@linbit.com>,
"Lars Ellenberg" <lars.ellenberg@linbit.com>,
"Christoph Böhmwalder" <christoph.boehmwalder@linbit.com>
Cc: drbd-dev@lists.linbit.com, linux-block@vger.kernel.org
Subject: transferring bvecs over the network in drbd
Date: Wed, 7 May 2025 23:45:50 -0700 [thread overview]
Message-ID: <aBxTHl8UIwr9Ehuv@infradead.org> (raw)
Hi all,
I recently went over code that directly access the bio_vec bv_page/
bv_offset members and the code in _drbd_send_bio/_drbd_send_zc_bio
came to my attention.
It iterates the bio to kmap all segments, and then either does a
sock_sendmsg on a newly created kvec iter, or one one a new bvec iter
for each segment. The former can't work on highmem systems and both
versions are rather inefficient.
What is preventing drbd from doing a single sock_sendmsg with the
bvec payload? nvme-tcp (nvme_tcp_init_iter0 is a good example for
doing that, or the sunrpc svcsock code using it's local bvec list
(svc_tcp_sendmsg).
WARNING: multiple messages have this Message-ID (diff)
From: Christoph Hellwig <hch@infradead.org>
To: "Philipp Reisner" <philipp.reisner@linbit.com>,
"Lars Ellenberg" <lars.ellenberg@linbit.com>,
"Christoph Böhmwalder" <christoph.boehmwalder@linbit.com>
Cc: linux-block@vger.kernel.org, drbd-dev@lists.linbit.com
Subject: transferring bvecs over the network in drbd
Date: Wed, 7 May 2025 23:45:50 -0700 [thread overview]
Message-ID: <aBxTHl8UIwr9Ehuv@infradead.org> (raw)
Hi all,
I recently went over code that directly access the bio_vec bv_page/
bv_offset members and the code in _drbd_send_bio/_drbd_send_zc_bio
came to my attention.
It iterates the bio to kmap all segments, and then either does a
sock_sendmsg on a newly created kvec iter, or one one a new bvec iter
for each segment. The former can't work on highmem systems and both
versions are rather inefficient.
What is preventing drbd from doing a single sock_sendmsg with the
bvec payload? nvme-tcp (nvme_tcp_init_iter0 is a good example for
doing that, or the sunrpc svcsock code using it's local bvec list
(svc_tcp_sendmsg).
next reply other threads:[~2025-05-08 6:45 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-05-08 6:45 Christoph Hellwig [this message]
2025-05-08 6:45 ` transferring bvecs over the network in drbd Christoph Hellwig
2025-05-08 8:39 ` Lars Ellenberg
2025-05-08 8:39 ` Lars Ellenberg
2025-05-08 10:06 ` Christoph Hellwig
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=aBxTHl8UIwr9Ehuv@infradead.org \
--to=hch@infradead.org \
--cc=christoph.boehmwalder@linbit.com \
--cc=drbd-dev@lists.linbit.com \
--cc=lars.ellenberg@linbit.com \
--cc=linux-block@vger.kernel.org \
--cc=philipp.reisner@linbit.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.