[Virtio-fs] [PATCH 2/2] virtiofsd: No need to promote O_WRONLY to O_RDWR
Vivek Goyal
vgoyal at redhat.com
Fri Jul 26 15:58:37 UTC 2019
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>
---
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
More information about the Virtio-fs
mailing list