All of lore.kernel.org
 help / color / mirror / Atom feed
* [Virtio-fs] [PATCH] virtiofsd: During setup mapping, open file O_RDWR only if needed
@ 2019-07-24 21:10 Vivek Goyal
  2019-07-24 23:29 ` Liu Bo
  0 siblings, 1 reply; 5+ messages in thread
From: Vivek Goyal @ 2019-07-24 21:10 UTC (permalink / raw)
  To: virtio-fs-list

As of now we always open file O_RDWR (even if writable mappings are not
required). This leads to copy up of file if file is backed by overlayfs
and hence nullying advantages of overlayfs.

So open file O_RDONLY if writable mappings are not required. Open O_RDWR
if writable mappings are needed.

Signed-off-by: Vivek Goyal <vgoyal@redhat.com>
---
 contrib/virtiofsd/passthrough_ll.c |    9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

Index: qemu/contrib/virtiofsd/passthrough_ll.c
===================================================================
--- qemu.orig/contrib/virtiofsd/passthrough_ll.c	2019-07-24 16:31:07.014871768 -0400
+++ qemu/contrib/virtiofsd/passthrough_ll.c	2019-07-24 16:32:10.064412722 -0400
@@ -2197,15 +2197,15 @@ static void lo_setupmapping(fuse_req_t r
         VhostUserFSSlaveMsg msg = { 0 };
         uint64_t vhu_flags;
 	char *buf;
+	bool writable = flags & FUSE_SETUPMAPPING_FLAG_WRITE;
 
 	if (lo_debug(req))
 		fuse_debug("lo_setupmapping(ino=%" PRIu64 ", fi=0x%p)\n", ino,
 			   (void *)fi);
 
         vhu_flags = VHOST_USER_FS_FLAG_MAP_R;
-        if (flags & O_WRONLY) {
+	if (writable)
                 vhu_flags |= VHOST_USER_FS_FLAG_MAP_W;
-        }
 
 	msg.fd_offset[0] = foffset;
 	msg.len[0] = len;
@@ -2223,7 +2223,10 @@ static void lo_setupmapping(fuse_req_t r
 		 * TODO: O_RDWR might not be allowed if file is read only or
 		 * write only. Fix it.
 		 */
-		fd = openat(lo->proc_self_fd, buf, O_RDWR);
+		if (writable)
+			fd = openat(lo->proc_self_fd, buf, O_RDWR);
+		else
+			fd = openat(lo->proc_self_fd, buf, O_RDONLY);
 		free(buf);
 		if (fd == -1)
 			return (void) fuse_reply_err(req, errno);


^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2019-07-25 15:48 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2019-07-24 21:10 [Virtio-fs] [PATCH] virtiofsd: During setup mapping, open file O_RDWR only if needed Vivek Goyal
2019-07-24 23:29 ` Liu Bo
2019-07-25 13:27   ` Dr. David Alan Gilbert
2019-07-25 15:21     ` Vivek Goyal
2019-07-25 15:48       ` Dr. David Alan Gilbert

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.