• Ryan Roberts's avatar
    selftests: line buffer test program's stdout · 58e2847a
    Ryan Roberts authored
    Patch series "selftests/mm fixes for arm64", v3.
    
    Given my on-going work on large anon folios and contpte mappings, I
    decided it would be a good idea to start running mm selftests to help
    guard against regressions.  However, it soon became clear that I
    couldn't get the suite to run cleanly on arm64 with a vanilla v6.5-rc1
    kernel (perhaps I'm just doing it wrong??), so got stuck in a rabbit
    hole trying to debug and fix all the issues.  Some were down to
    misconfigurations, but I also found a number of issues with the tests
    and even a couple of issues with the kernel.
    
    
    This patch (of 8):
    
    The selftests runner pipes the test program's stdout to tap_prefix.  The
    presence of the pipe means that the test program sets its stdout to be
    fully buffered (as aposed to line buffered when directly connected to the
    terminal).  The block buffering means that there is often content in the
    buffer at fork() time, which causes the output to end up duplicated.  This
    was causing problems for mm:cow where test results were duplicated 20-30x.
    
    Solve this by using `stdbuf`, when available to force the test program to
    use line buffered mode.  This means previously printf'ed results are
    flushed out of the program before any fork().
    
    Additionally, explicitly set line buffer mode in ksft_print_header(),
    which means that all test programs that use the ksft framework will
    benefit even if stdbuf is not present on the system.
    
    [ryan.roberts@arm.com: add setvbuf() to set buffering mode]
      Link: https://lkml.kernel.org/r/20230726070655.2713530-1-ryan.roberts@arm.com
    Link: https://lkml.kernel.org/r/20230724082522.1202616-1-ryan.roberts@arm.com
    Link: https://lkml.kernel.org/r/20230724082522.1202616-2-ryan.roberts@arm.comSigned-off-by: default avatarRyan Roberts <ryan.roberts@arm.com>
    Reviewed-by: default avatarMark Brown <broonie@kernel.org>
    Cc: David Hildenbrand <david@redhat.com>
    Cc: Florent Revest <revest@chromium.org>
    Cc: Jérôme Glisse <jglisse@redhat.com>
    Cc: John Hubbard <jhubbard@nvidia.com>
    Cc: Peter Xu <peterx@redhat.com>
    Cc: Shuah Khan <shuah@kernel.org>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    58e2847a
runner.sh 4.06 KB