Thread (58 messages) 58 messages, 5 authors, 2017-10-18

Re: [PATCH 19/19] xfs: Add support for MAP_SYNC flag

From: Dan Williams <hidden>
Date: 2017-10-11 22:54:52
Also in: linux-fsdevel, linux-xfs

On Wed, Oct 11, 2017 at 1:06 PM, Jan Kara [off-list ref] wrote:
quoted hunk ↗ jump to hunk
Now when everything is prepared, add support in xfs to accept MAP_SYNC
as an mmap(2) flag.

Signed-off-by: Jan Kara <jack@suse.cz>
---
 fs/ext4/file.c    |  1 +
 fs/xfs/xfs_file.c | 23 +++++++++++++++++++++++
 2 files changed, 24 insertions(+)
diff --git a/fs/ext4/file.c b/fs/ext4/file.c
index f013cda84b3d..6b597cc6b29d 100644
--- a/fs/ext4/file.c
+++ b/fs/ext4/file.c
@@ -26,6 +26,7 @@
 #include <linux/quotaops.h>
 #include <linux/pagevec.h>
 #include <linux/uio.h>
+#include <linux/mman.h>
 #include "ext4.h"
 #include "ext4_jbd2.h"
 #include "xattr.h"
diff --git a/fs/xfs/xfs_file.c b/fs/xfs/xfs_file.c
index c45f24ffab22..fb135224476d 100644
--- a/fs/xfs/xfs_file.c
+++ b/fs/xfs/xfs_file.c
@@ -44,6 +44,7 @@
 #include <linux/falloc.h>
 #include <linux/pagevec.h>
 #include <linux/backing-dev.h>
+#include <linux/mman.h>

 static const struct vm_operations_struct xfs_file_vm_ops;
@@ -1142,6 +1143,27 @@ xfs_file_mmap(
        return 0;
 }

+#define XFS_MAP_SUPPORTED (LEGACY_MAP_MASK | MAP_SYNC)
+
+static int
+xfs_file_mmap_validate(
+       struct file             *filp,
+       struct vm_area_struct   *vma,
+       unsigned long           map_flags)
+{
+       if (map_flags & ~XFS_MAP_SUPPORTED)
+               return -EOPNOTSUPP;
+
+       /*
+        * We don't support synchronous mappings for non-DAX files. At least
+        * until someone comes with a sensible use case.
+        */
+       if (!IS_DAX(file_inode(filp)) && (map_flags & MAP_SYNC))
+               return -EOPNOTSUPP;
Same comment about using EPERM here. That's also what I'm returning in
the MAP_DIRECT case when the inode is a reflink inode and does not
support MAP_DIRECT.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help