> > 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)
>
> I would suggest that you query the alignment only once, and forward it
> to the test.
Sure thing, I declare a global variable 'dio_offset_align' to get the value
only once via get_dio_alignment(fd).
(sorry for not posting in the above email)
static unsigned int dio_offset_align;
static int get_dio_alignment(int fd)
{
struct statx stx;
int ret;
ret = syscall(__NR_statx, fd, "", AT_EMPTY_PATH, STATX_DIOALIGN, &stx);
if (ret < 0)
return -1;
if (!(stx.stx_mask & STATX_DIOALIGN) || !stx.stx_dio_offset_align)
dio_offset_align = 1;
else
dio_offset_align = stx.stx_dio_offset_align;
return 0;
}
--
Regards,
Li Wang