[Virtio-fs] [PATCH V2] virtiofsd: Reset O_DIRECT flag during file open
Dr. David Alan Gilbert
dgilbert at redhat.com
Thu Aug 22 18:54:40 UTC 2019
* Vivek Goyal (vgoyal at redhat.com) wrote:
> If an application wants to do direct IO and opens a file with O_DIRECT
> in guest, that does not necessarily mean that we need to bypass page
> cache on host as well. So reset this flag on host.
>
> If somebody needs to bypass page cache on host as well (and it is safe to
> do so), we can add a knob in daemon later to control this behavior.
>
> I check virtio-9p and they do reset O_DIRECT flag.
>
> Signed-off-by: Vivek Goyal <vgoyal at redhat.com>
Merged; thanks
> ---
> contrib/virtiofsd/passthrough_ll.c | 14 ++++++++++++++
> 1 file changed, 14 insertions(+)
>
> Index: qemu/contrib/virtiofsd/passthrough_ll.c
> ===================================================================
> --- qemu.orig/contrib/virtiofsd/passthrough_ll.c 2019-08-20 09:33:07.900975145 -0400
> +++ qemu/contrib/virtiofsd/passthrough_ll.c 2019-08-20 14:31:39.725781357 -0400
> @@ -1752,6 +1752,13 @@ static void lo_create(fuse_req_t req, fu
> if (err)
> goto out;
>
> + /*
> + * O_DIRECT in guest should not necessarily mean bypassing page
> + * cache on host as well. If somebody needs that behavior, it
> + * probably should be a configuration knob in daemon.
> + */
> + fi->flags &= ~O_DIRECT;
> +
> fd = openat(parent_inode->fd, name,
> (fi->flags | O_CREAT) & ~O_NOFOLLOW, mode);
> err = fd == -1 ? errno : 0;
> @@ -1967,6 +1974,13 @@ static void lo_open(fuse_req_t req, fuse
> if (lo->writeback && (fi->flags & O_APPEND))
> fi->flags &= ~O_APPEND;
>
> + /*
> + * O_DIRECT in guest should not necessarily mean bypassing page
> + * cache on host as well. If somebody needs that behavior, it
> + * probably should be a configuration knob in daemon.
> + */
> + fi->flags &= ~O_DIRECT;
> +
> sprintf(buf, "%i", lo_fd(req, ino));
> fd = openat(lo->proc_self_fd, buf, fi->flags & ~O_NOFOLLOW);
> if (fd == -1)
--
Dr. David Alan Gilbert / dgilbert at redhat.com / Manchester, UK
More information about the Virtio-fs
mailing list