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: Ofir Gal <hidden>
Date: 2024-06-03 12:46:25
Also in: ceph-devel, linux-block, linux-nvme


On 03/06/2024 12:07, Hannes Reinecke wrote:
On 6/2/24 00:34, Jakub Kicinski wrote:
quoted
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?
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.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help