Thread (30 messages) 30 messages, 6 authors, 2024-06-06

Re: [PATCH v2 0/4] bugfix: Introduce sendpages_ok() to check sendpage_ok() on contiguous pages

From: Sagi Grimberg <sagi@grimberg.me>
Date: 2024-06-02 07:48:17
Also in: ceph-devel, linux-block, linux-nvme


On 02/06/2024 1:34, Jakub Kicinski wrote:
On Thu, 30 May 2024 17:24:10 +0300 Ofir Gal wrote:
quoted
skbuff: before sendpage_ok - i: 0. page: 0x654eccd7 (pfn: 120755)
skbuff: before sendpage_ok - i: 1. page: 0x1666a4da (pfn: 120756)
skbuff: before sendpage_ok - i: 2. page: 0x54f9f140 (pfn: 120757)
noob question, how do you get 3 contiguous pages, the third of which
is slab? is_slab doesn't mean what I think it does, or we got extremely
lucky with kmalloc?
The contig range according to the trace is 256K, the third page was just the
first time that it saw this !ok page.

I asked the same thing. nvme-tcp gets a bio and sets up its own iov_iter
on the bio bvec for sending it over the wire. The test that reproduces this
creates an raid1 md device which probably has at least some effect into how
we got this buffer.

With the recent multipage bvecs work from Ming, nvme-tcp bvec entries will
often point to contiguous ranges that are > PAGE_SIZE. I didn't look 
into the
implementation of skb_splice_from_iter, but I think its not very 
efficient to
extract a contiguous range in PAGE_SIZE granular vector...
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help