On 03/06/2024 12:07, Hannes Reinecke wrote: > On 6/2/24 00:34, Jakub Kicinski wrote: >> On Thu, 30 May 2024 17:24:10 +0300 Ofir Gal wrote: >>> 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? >> > I guess it's not slab which triggered; the actual code is: > > static inline bool sendpage_ok(struct page *page) > { > return !PageSlab(page) && page_count(page) >= 1; > } > > My bet is on 'page_count()' triggering. It failed because the page has slab, page count is 1. Sorry for not clarifying this. "skbuff: !sendpage_ok - page: 0x54f9f140 (pfn: 120757). is_slab: 1, page_count: 1" ^ The print I used: pr_info( "!sendpage_ok - page: 0x%p (pfn: %lx). is_slab: %u, page_count: %u\n", (void *)page, page_to_pfn(page), page_address(page), !!PageSlab(page), page_count(page) ); Regarding the origin of the IO, I haven't investigated it yet. I suspect the first 2 pages are the superblocks of the raid (mdp_superblock_1 and bitmap_super_s) and the rest of the IO is the bitmap.