Re: [PATCH v3] selftests/mm: skip hugetlb_dio tests when DIO alignment is incompatible

From: Li Wang

Date: Mon Mar 30 2026 - 06:15:23 EST


> > Why can't we simply open the file once and pass the fd to run_dio_using_hugetlb()?
> >
> > fd = open("/tmp", O_TMPFILE | O_RDWR | O_DIRECT, 0664);
> > if (fd < 0)
> > ksft_exit_skip("Unable to allocate file: %s\n", strerror(errno));
> > dio_align = get_dio_alignment(fd);
> > if (dio_align <= 0)
> > ksft_exit_skip("Unable to obtain DIO alignment: %s\n", strerror(errno));
>
> Yes, apparently this is a good suggestion. Thanks!

And, to make the test elegant, I'm going to add check_dio_alignment() dedicated
to alignment checking. Then we don't need to pass too many args.

Tell me your thoughts if you don't like this:

static int get_dio_alignment(int fd)
{...}

static bool check_dio_alignment(unsigned int start_off, unsigned int end_off)
{...}

static void run_test(int fd, unsigned int start_off, unsigned int end_off)
{
if (!check_dio_alignment(start_off, end_off))
return;

run_dio_using_hugetlb(fd, start_off, end_off);
}

int main(void)
{
...
fd = open("/tmp", O_TMPFILE | O_RDWR | O_DIRECT, 0664);
if (fd < 0)
ksft_exit_skip("Unable to allocate file: %s\n", strerror(errno));

if (get_dio_alignment(fd) < 0)
...

run_test(fd, 0, (pagesize * 3));
}

--
Regards,
Li Wang