• David Hildenbrand's avatar
    selftests/mm: fix charge_reserved_hugetlb.sh test · c41a701d
    David Hildenbrand authored
    Currently, running the charge_reserved_hugetlb.sh selftest we can
    sometimes observe something like:
    
      $ ./charge_reserved_hugetlb.sh -cgroup-v2
      ...
      write_result is 0
      After write:
      hugetlb_usage=0
      reserved_usage=10485760
      killing write_to_hugetlbfs
      Received 2.
      Deleting the memory
      Detach failure: Invalid argument
      umount: /mnt/huge: target is busy.
    
    Both cases are issues in the test.
    
    While the unmount error seems to be racy, it will make the test fail:
    	$ ./run_vmtests.sh -t hugetlb
    	...
    	# [FAIL]
    	not ok 10 charge_reserved_hugetlb.sh -cgroup-v2 # exit=32
    
    The issue is that we are not waiting for the write_to_hugetlbfs process to
    quit.  So it might still have a hugetlbfs file open, about which umount is
    not happy.  Fix that by making "killall" wait for the process to quit.
    
    The other error ("Detach failure: Invalid argument") does not seem to
    result in a test error, but is misleading.  Turns out write_to_hugetlbfs.c
    unconditionally tries to cleanup using shmdt(), even when we only
    mmap()'ed a hugetlb file.  Even worse, shmaddr is never even set for the
    SHM case.  Fix that as well.
    
    With this change it seems to work as expected.
    
    Link: https://lkml.kernel.org/r/20240821123115.2068812-1-david@redhat.com
    Fixes: 29750f71 ("hugetlb_cgroup: add hugetlb_cgroup reservation tests")
    Signed-off-by: default avatarDavid Hildenbrand <david@redhat.com>
    Reported-by: default avatarMario Casquero <mcasquer@redhat.com>
    Reviewed-by: default avatarMina Almasry <almasrymina@google.com>
    Tested-by: default avatarMario Casquero <mcasquer@redhat.com>
    Cc: Shuah Khan <shuah@kernel.org>
    Cc: Muchun Song <muchun.song@linux.dev>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    c41a701d
write_to_hugetlbfs.c 4.65 KB