aboutsummaryrefslogtreecommitdiffstats
path: root/fs/xfs
diff options
context:
space:
mode:
authorPankaj Gupta <pagupta@redhat.com>2019-07-05 10:03:28 -0400
committerDan Williams <dan.j.williams@intel.com>2019-07-05 18:19:10 -0400
commitb21fec414095d966789581c1466fb2f55de33bfe (patch)
tree86f35b782b92ed78f5063b8658bbac2966db0318 /fs/xfs
parente46bfc3f03d7894c0eb47c7d754c38bafe39e197 (diff)
xfs: disable map_sync for async flush
Dont support 'MAP_SYNC' with non-DAX files and DAX files with asynchronous dax_device. Virtio pmem provides asynchronous host page cache flush mechanism. We don't support 'MAP_SYNC' with virtio pmem and xfs. Signed-off-by: Pankaj Gupta <pagupta@redhat.com> Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com> Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Diffstat (limited to 'fs/xfs')
-rw-r--r--fs/xfs/xfs_file.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/fs/xfs/xfs_file.c b/fs/xfs/xfs_file.c
index 76748255f843..a06af58af475 100644
--- a/fs/xfs/xfs_file.c
+++ b/fs/xfs/xfs_file.c
@@ -1203,11 +1203,14 @@ xfs_file_mmap(
1203 struct file *filp, 1203 struct file *filp,
1204 struct vm_area_struct *vma) 1204 struct vm_area_struct *vma)
1205{ 1205{
1206 struct dax_device *dax_dev;
1207
1208 dax_dev = xfs_find_daxdev_for_inode(file_inode(filp));
1206 /* 1209 /*
1207 * We don't support synchronous mappings for non-DAX files. At least 1210 * We don't support synchronous mappings for non-DAX files and
1208 * until someone comes with a sensible use case. 1211 * for DAX files if underneath dax_device is not synchronous.
1209 */ 1212 */
1210 if (!IS_DAX(file_inode(filp)) && (vma->vm_flags & VM_SYNC)) 1213 if (!daxdev_mapping_supported(vma, dax_dev))
1211 return -EOPNOTSUPP; 1214 return -EOPNOTSUPP;
1212 1215
1213 file_accessed(filp); 1216 file_accessed(filp);