Re: [Bug 216639] New: [xfstests] WARNING: CPU: 1 PID: 429349 at mm/huge_memory.c:2465 __split_huge_page_tail+0xab0/0xce0

Dave Chinner
2022-10-30T21:47:11Z

On Sun, Oct 30, 2022 at 02:38:17AM +0000, bugzilla-daemon@kernel.org wrote:
> Many xfstests cases fail [1] and hit below kernel
> (HEAD=05c31d25cc9678cc173cf12e259d638e8a641f66) warning [2] (on x86_64 and
> s390x). No special mkfs or mount options, just simple default xfs testing,
> without any MKFS_OPTIONS or MOUNT_OPTIONS specified.
>
> [1]
> FSTYP -- xfs (debug)
> PLATFORM -- Linux/x86_64 hp-xxxxxx-xx-xxxx 6.1.0-rc2+ #1 SMP
> PREEMPT_DYNAMIC Fri Oct 28 19:52:51 EDT 2022
> MKFS_OPTIONS -- -f -m crc=1,finobt=1,rmapbt=0,reflink=1,bigtime=1,inobtcount=1
> /dev/vda2
> MOUNT_OPTIONS -- -o context=system_u:object_r:root_t:s0 /dev/vda2
> /mnt/xfstests/scratch
>
> generic/061 _check_dmesg: something found in dmesg (see
> /var/lib/xfstests/results//generic/061.dmesg)
>
> Ran: generic/061
> Failures: generic/061
> Failed 1 of 1 tests
>
> [2]
> [14281.743118] run fstests generic/061 at 2022-10-29 01:00:39
> [14295.930483] page:000000001065a86b refcount:0 mapcount:0 mapping:0000000064faa2f2 index:0x40 pfn:0x143040
> [14295.947825] head:000000001065a86b order:5 compound_mapcount:0 compound_pincount:0
> [14295.950100] memcg:ffff88817efe2000
> [14295.951215] aops:xfs_address_space_operations [xfs] ino:8e dentry name:"061.429109"
> [14295.955474] flags: 0x17ffffc0010035(locked|uptodate|lru|active|head|node=0|zone=2|lastcpupid=0x1fffff)
> [14295.958302] raw: 0017ffffc0010035 ffffea0004756c08 ffffea00050c1788 ffff88811e804448
> [14295.960624] raw: 0000000000000040 0000000000000000 00000000ffffffff ffff88817efe2000
> [14295.962927] page dumped because: VM_WARN_ON_ONCE_PAGE(page_tail->private != 0)
> [14295.965744] ------------[ cut here ]------------
> [14295.967201] WARNING: CPU: 1 PID: 429349 at mm/huge_memory.c:2465 __split_huge_page_tail+0xab0/0xce0
....
> [14296.015290] Call Trace:
> [14296.016083] <TASK>
> [14296.018235] __split_huge_page+0x2a5/0x11b0
> [14296.019675] split_huge_page_to_list+0xb13/0xf30
> [14296.027369] truncate_inode_partial_folio+0x1d9/0x370
> [14296.028940] truncate_inode_pages_range+0x350/0xbc0
> [14296.059204] truncate_pagecache+0x63/0x90
> [14296.060471] xfs_setattr_size+0x2a2/0xc50 [xfs]

Yup, splitting a multi-page folio during truncate. Looks like this
has already been fixed in the Linus kernel by commit 5aae9265ee1a
("mm: prep_compound_tail() clear page->private") here:

https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=5aae9265ee1a30cf716d6caf6b29fe99b9d55130

It was merged after your currrent head commit...

This won't reproduce on ext4 because it doesn't use multi-page
folios in the page cache.

Cheers,

Dave.
--
Dave Chinner
david@fromorbit.com