Re: [PATCH] mm/filemap: allocate folios according to the blocksize

From: Matthew Wilcox
Date: Mon Apr 17 2023 - 00:10:41 EST


On Mon, Apr 17, 2023 at 10:18:37AM +0800, kernel test robot wrote:
> commit: 3f1c33c25c31221a7a27d302ce6aac8e9b71edbb ("[PATCH] mm/filemap: allocate folios according to the blocksize")

> [ 96.797305][ T3511] WARNING: CPU: 3 PID: 3511 at include/linux/pagemap.h:344 split_huge_page_to_list (include/linux/pagemap.h:344 mm/huge_memory.c:2767)

Oh, funny. That's:

WARN_ON_ONCE(mapping_large_folio_support(mapping) == 0);

so it's found a large folio in a mapping which doesn't claim to support
large folios. This is a good warning; thank you, bot!

> [ 96.994758][ T3511] Call Trace:
> [ 96.997888][ T3511] <TASK>
> [ 97.016651][ T3511] truncate_inode_partial_folio (mm/truncate.c:243)
> [ 97.022376][ T3511] truncate_inode_pages_range (mm/truncate.c:380)
> [ 97.090958][ T3511] truncate_pagecache (mm/truncate.c:744)
> [ 97.095638][ T3511] smb3_simple_falloc+0xcbf/0x1840 cifs

Ah, it's coming from smb/cifs. I bet it's set i_blkbits to something
large. Looks like we need to do something like I suggested to set the
minimum folio size in the mapping, rather than basing it on
mapping->host->i_blkbits.