> > 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