[Virtio-fs] [PATCH 2/2] virtiofsd: No need to promote O_WRONLY to O_RDWR
Dr. David Alan Gilbert
dgilbert at redhat.com
Mon Jul 29 11:15:02 UTC 2019
* Vivek Goyal (vgoyal at redhat.com) wrote:
> I am not sure why do we still need this logic. mmap() needs file to be
> opened for O_RDONLY atleast. And we open file either as O_RDONLY or
> O_RDWR in lo_setupmapping() depending on if read-only or read-write
> mapping is required.
>
> So it should not matter how fd is opended during lo_create() or lo_open()
> because we are not going to use that fd anyway for mmap().
>
> So for now drop this logic. I ran pjdfstests and blogbench and both
> ran successfully.
>
> Signed-off-by: Vivek Goyal <vgoyal at redhat.com>
So this is just removing your two commits:
988e23c0fb06be2636b4 virtiofsd: Promote O_WRONLY to O_RDWR in lo_create()
7ebaa054e7aba33e1239 virtiofsd: Open O_WRONLY files as O_RDWR
which I've done; and applied your other patch.
Dave
> ---
> contrib/virtiofsd/passthrough_ll.c | 12 ------------
> 1 file changed, 12 deletions(-)
>
> diff --git a/contrib/virtiofsd/passthrough_ll.c b/contrib/virtiofsd/passthrough_ll.c
> index c09c46a7e5..502ce50178 100644
> --- a/contrib/virtiofsd/passthrough_ll.c
> +++ b/contrib/virtiofsd/passthrough_ll.c
> @@ -1513,12 +1513,6 @@ static void lo_create(fuse_req_t req, fuse_ino_t parent, const char *name,
> if (err)
> goto out;
>
> - /* Promote O_WRONLY to O_RDWR. Otherwise later mmap(PROT_WRITE) fails */
> - if ((fi->flags & O_ACCMODE) == O_WRONLY) {
> - fi->flags &= ~O_ACCMODE;
> - fi->flags |= O_RDWR;
> - }
> -
> fd = openat(lo_fd(req, parent), name,
> (fi->flags | O_CREAT) & ~O_NOFOLLOW, mode);
> err = fd == -1 ? errno : 0;
> @@ -1710,12 +1704,6 @@ static void lo_open(fuse_req_t req, fuse_ino_t ino, struct fuse_file_info *fi)
> fuse_debug("lo_open(ino=%" PRIu64 ", flags=%d)\n",
> ino, fi->flags);
>
> - /* Promote O_WRONLY to O_RDWR. Otherwise later mmap(PROT_WRITE) fails */
> - if ((fi->flags & O_ACCMODE) == O_WRONLY) {
> - fi->flags &= ~O_ACCMODE;
> - fi->flags |= O_RDWR;
> - }
> -
> /* With writeback cache, kernel may send read requests even
> when userspace opened write-only */
> if (lo->writeback && (fi->flags & O_ACCMODE) == O_WRONLY) {
> --
> 2.17.2
>
--
Dr. David Alan Gilbert / dgilbert at redhat.com / Manchester, UK
More information about the Virtio-fs
mailing list