• David Hildenbrand's avatar
    selftests: mm: cow: flag vmsplice() hugetlb tests as XFAIL · 4bf6a4eb
    David Hildenbrand authored
    Patch series "selftests: mm: cow: flag vmsplice() hugetlb tests as XFAIL".
    
    The failing hugetlb vmsplice() COW tests keep confusing people, and having
    tests that have been failing for years and likely will keep failing for
    years to come because nobody cares enough is rather suboptimal.  Let's
    mark them as XFAIL and document why fixing them is not that easy as it
    would appear at first sight.
    
    More details can be found in [1], especially around how hugetlb pages
    cannot really be overcommitted, and why we don't particularly care about
    these vmsplice() leaks for hugetlb -- in contrast to ordinary memory.
    
    [1] https://lore.kernel.org/all/8b42a24d-caf0-46ef-9e15-0f88d47d2f21@redhat.com/
    
    
    This patch (of 2):
    
    The vmsplice() hugetlb tests have been failing right from the start, and
    we documented that in the introducing commit 7dad331b ("selftests/vm:
    anon_cow: hugetlb tests"):
    
    	Note that some tests cases still fail. This will, for example, be
    	fixed once vmsplice properly uses FOLL_PIN instead of FOLL_GET for
    	pinning. With 2 MiB and 1 GiB hugetlb on x86_64, the expected
    	failures are:
    
    Until vmsplice() is changed, these tests will likely keep failing: hugetlb
    COW reuse logic is harder to change, because using the same COW reuse
    logic as we use for !hugetlb could harm other (sane) users when running
    out of free hugetlb pages.
    
    More details can be found in [1], especially around how hugetlb pages
    cannot really be overcommitted, and why we don't particularly care about
    these vmsplice() leaks for hugetlb -- in contrast to ordinary memory.
    
    These (expected) failures keep confusing people, so flag them accordingly.
    
    Before:
    	$ ./cow
    	[...]
    	Bail out! 8 out of 778 tests failed
    	# Totals: pass:769 fail:8 xfail:0 xpass:0 skip:1 error:0
    	$ echo $?
    	1
    
    After:
    	$ ./cow
    	[...]
    	# Totals: pass:769 fail:0 xfail:8 xpass:0 skip:1 error:0
    	$ echo $?
    	0
    
    [1] https://lore.kernel.org/all/8b42a24d-caf0-46ef-9e15-0f88d47d2f21@redhat.com/
    
    Link: https://lkml.kernel.org/r/20240502085259.103784-1-david@redhat.com
    Link: https://lkml.kernel.org/r/20240502085259.103784-2-david@redhat.comSigned-off-by: default avatarDavid Hildenbrand <david@redhat.com>
    Cc: Muchun Song <muchun.song@linux.dev>
    Cc: Peter Xu <peterx@redhat.com>
    Cc: Shuah Khan <shuah@kernel.org>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    4bf6a4eb
cow.c 44.3 KB