qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] [PATCH 3/3] virtiofsd: implement FUSE_INIT map_alignment fi


From: Stefan Hajnoczi
Subject: [Qemu-devel] [PATCH 3/3] virtiofsd: implement FUSE_INIT map_alignment field
Date: Fri, 26 Jul 2019 09:33:22 +0100

Communicate the host page size to the FUSE client so that
FUSE_SETUPMAPPING/FUSE_REMOVEMAPPING requests are aware of our alignment
constraints.

Signed-off-by: Stefan Hajnoczi <address@hidden>
---
 contrib/virtiofsd/fuse_lowlevel.c | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/contrib/virtiofsd/fuse_lowlevel.c 
b/contrib/virtiofsd/fuse_lowlevel.c
index dbbfda78bf..452dd6b2b0 100644
--- a/contrib/virtiofsd/fuse_lowlevel.c
+++ b/contrib/virtiofsd/fuse_lowlevel.c
@@ -2131,6 +2131,12 @@ static void do_init(fuse_req_t req, fuse_ino_t nodeid,
        }
        if (se->conn.proto_minor >= 23)
                outarg.time_gran = se->conn.time_gran;
+       if (arg->flags & FUSE_MAP_ALIGNMENT) {
+               outarg.flags |= FUSE_MAP_ALIGNMENT;
+
+               /* This constraint comes from mmap(2) and munmap(2) */
+               outarg.map_alignment = sysconf(_SC_PAGE_SIZE);
+       }
 
        if (se->debug) {
                fuse_debug("   INIT: %u.%u\n", outarg.major, outarg.minor);
@@ -2144,6 +2150,8 @@ static void do_init(fuse_req_t req, fuse_ino_t nodeid,
                           outarg.congestion_threshold);
                fuse_debug("   time_gran=%u\n",
                           outarg.time_gran);
+               fuse_debug("   map_alignment=%u\n",
+                          outarg.map_alignment);
        }
        if (arg->minor < 5)
                outargsize = FUSE_COMPAT_INIT_OUT_SIZE;
-- 
2.21.0




reply via email to

[Prev in Thread] Current Thread [Next in Thread]