Hello,

I see that you have added multi-queue support for virtio-fs, thanks for this 
work.
From your patch's commit log, your host is x86-64, dpu is arm64, but there're
differences about O_DIRECT and O_DIRECTORY between these two architectures.

Test program:
#define _GNU_SOURCE

#include <stdio.h>
#include <fcntl.h>

int main(void)
{
        printf("O_DIRECT:%o\n", O_DIRECT);
        printf("O_DIRECTORY:%o\n", O_DIRECTORY);
        return 0;
}

In x86-64, this test program outputs:
O_DIRECT:40000
O_DIRECTORY:200000

But in arm64, it outpus:
O_DIRECT:200000
O_DIRECTORY:40000

In kernel fuse module, fuse_create_in->flags will used to hold open(2)'s flags, 
then
a O_DIRECT flag from host(x86) would be treated as O_DIRECTORY in dpu(arm64), 
which
seems a serious bug.

From your fio job, you use libaio engine, so it's assumed that direct-io is
enabled, so I wonder why you don't get errors. Could you please try below
command in your virtio-fs mount point:
  dd if=/dev/zero of=tst_file bs=4096 count=1 oflag=direct
to see whether it occurs any error.

Regards,
Xiaoguang Wang

Reply via email to