selftests: hugetlb_dio: check for initial conditions to skip in the start
The test should be skipped if initial conditions aren't fulfilled in the
start instead of failing and outputting non-compliant TAP logs. This kind
of failure pollutes the results. The initial conditions are:
- The test should only execute if /tmp file can be allocated.
- The test should only execute if huge pages are free.
Before:
TAP version 13
1..4
Bail out! Error opening file
: Read-only file system (30)
# Planned tests != run tests (4 != 0)
# Totals: pass:0 fail:0 xfail:0 xpass:0 skip:0 error:0
After:
TAP version 13
1..0 # SKIP Unable to allocate file: Read-only file system
Link: https://lkml.kernel.org/r/20241101141557.3159432-1-usama.anjum@collabora.com
Signed-off-by: Muhammad Usama Anjum <usama.anjum@collabora.com>
Fixes: 3a103b5315
("selftest: mm: Test if hugepage does not get leaked during __bio_release_pages()")
Cc: Muhammad Usama Anjum <usama.anjum@collabora.com>
Cc: Shuah Khan <shuah@kernel.org>
Cc: Donet Tom <donettom@linux.ibm.com>
Cc: <stable@vger.kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
This commit is contained in:
parent
652e1a5146
commit
0268d45799
1 changed files with 12 additions and 7 deletions
|
@ -44,13 +44,6 @@ void run_dio_using_hugetlb(unsigned int start_off, unsigned int end_off)
|
||||||
if (fd < 0)
|
if (fd < 0)
|
||||||
ksft_exit_fail_perror("Error opening file\n");
|
ksft_exit_fail_perror("Error opening file\n");
|
||||||
|
|
||||||
/* Get the free huge pages before allocation */
|
|
||||||
free_hpage_b = get_free_hugepages();
|
|
||||||
if (free_hpage_b == 0) {
|
|
||||||
close(fd);
|
|
||||||
ksft_exit_skip("No free hugepage, exiting!\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Allocate a hugetlb page */
|
/* Allocate a hugetlb page */
|
||||||
orig_buffer = mmap(NULL, h_pagesize, mmap_prot, mmap_flags, -1, 0);
|
orig_buffer = mmap(NULL, h_pagesize, mmap_prot, mmap_flags, -1, 0);
|
||||||
if (orig_buffer == MAP_FAILED) {
|
if (orig_buffer == MAP_FAILED) {
|
||||||
|
@ -94,8 +87,20 @@ void run_dio_using_hugetlb(unsigned int start_off, unsigned int end_off)
|
||||||
int main(void)
|
int main(void)
|
||||||
{
|
{
|
||||||
size_t pagesize = 0;
|
size_t pagesize = 0;
|
||||||
|
int fd;
|
||||||
|
|
||||||
ksft_print_header();
|
ksft_print_header();
|
||||||
|
|
||||||
|
/* Open the file to DIO */
|
||||||
|
fd = open("/tmp", O_TMPFILE | O_RDWR | O_DIRECT, 0664);
|
||||||
|
if (fd < 0)
|
||||||
|
ksft_exit_skip("Unable to allocate file: %s\n", strerror(errno));
|
||||||
|
close(fd);
|
||||||
|
|
||||||
|
/* Check if huge pages are free */
|
||||||
|
if (!get_free_hugepages())
|
||||||
|
ksft_exit_skip("No free hugepage, exiting\n");
|
||||||
|
|
||||||
ksft_set_plan(4);
|
ksft_set_plan(4);
|
||||||
|
|
||||||
/* Get base page size */
|
/* Get base page size */
|
||||||
|
|
Loading…
Add table
Reference in a new issue