summaryrefslogtreecommitdiffstats
path: root/fs/ext4/file.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/ext4/file.c')
-rw-r--r--fs/ext4/file.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/fs/ext4/file.c b/fs/ext4/file.c
index 2c5baa5e8291..4feeecae8db6 100644
--- a/fs/ext4/file.c
+++ b/fs/ext4/file.c
@@ -367,15 +367,17 @@ static const struct vm_operations_struct ext4_file_vm_ops = {
367static int ext4_file_mmap(struct file *file, struct vm_area_struct *vma) 367static int ext4_file_mmap(struct file *file, struct vm_area_struct *vma)
368{ 368{
369 struct inode *inode = file->f_mapping->host; 369 struct inode *inode = file->f_mapping->host;
370 struct ext4_sb_info *sbi = EXT4_SB(inode->i_sb);
371 struct dax_device *dax_dev = sbi->s_daxdev;
370 372
371 if (unlikely(ext4_forced_shutdown(EXT4_SB(inode->i_sb)))) 373 if (unlikely(ext4_forced_shutdown(sbi)))
372 return -EIO; 374 return -EIO;
373 375
374 /* 376 /*
375 * We don't support synchronous mappings for non-DAX files. At least 377 * We don't support synchronous mappings for non-DAX files and
376 * until someone comes with a sensible use case. 378 * for DAX files if underneath dax_device is not synchronous.
377 */ 379 */
378 if (!IS_DAX(file_inode(file)) && (vma->vm_flags & VM_SYNC)) 380 if (!daxdev_mapping_supported(vma, dax_dev))
379 return -EOPNOTSUPP; 381 return -EOPNOTSUPP;
380 382
381 file_accessed(file); 383 file_accessed(file);