Re: [PATCH net-next v2 10/17] nvme: Use sendmsg(MSG_SPLICE_PAGES) rather then sendpage
From: Sagi Grimberg <sagi@grimberg.me>
Date: 2023-06-20 13:01:06
Also in:
linux-mm, linux-nvme, lkml
From: Sagi Grimberg <sagi@grimberg.me>
Date: 2023-06-20 13:01:06
Also in:
linux-mm, linux-nvme, lkml
quoted
quoted
struct bio_vec bvec; struct msghdr msg = { .msg_flags = MSG_SPLICE_PAGES | ... }; .. bvec_set_virt iov_iter_bvec sock_sendmsg is a frequent pattern. Does it make sense to define a wrapper? Same for bvec_set_page.I dunno. I'm trying to move towards aggregating multiple pages in a bvec before calling sendmsg if possible rather than doing it one page at a time, but it's easier and more obvious in some places than others.That would be great to do, but nvme needs to calculate a data digest and doing that in a separate scan of the payload is not very cache friendly... There is also the fact that the payload may be sent in portions asynchronously driven by how the controller wants to accept them, so there is some complexity there. But worth looking at for sure. The patch looks good to me, taking it to run some tests (from sendpage-3-frag branch in your kernel.org tree correct?) For now, you can add: Reviewed-by: Sagi Grimberg <sagi@grimberg.me>
Patches seem to hold up. Tested-by: Sagi Grimberg <sagi@grimberg.me> However if possible, can you please split nvme/host and nvme/target changes? We try to separate host side and target side changes in the same patch.