summaryrefslogtreecommitdiffstats
path: root/fs/xfs/xfs_iops.c
diff options
context:
space:
mode:
authorDave Chinner <dchinner@redhat.com>2016-03-01 09:41:33 +1100
committerDave Chinner <david@fromorbit.com>2016-03-01 09:41:33 +1100
commitdb10c697b40e34ac91bbcdd866e73a3d0bad7780 (patch)
treeaa05f9b216fa18ef704fd2e6cd9160ca9123b62d /fs/xfs/xfs_iops.c
parente8897529053d05f5bd677706ba6807fc2f2b942c (diff)
downloadop-kernel-dev-db10c697b40e34ac91bbcdd866e73a3d0bad7780.zip
op-kernel-dev-db10c697b40e34ac91bbcdd866e73a3d0bad7780.tar.gz
xfs: S_DAX is only for regular files
Only regular files can use DAX for data operations, so we should restrict setting it on the VFS inode to regular files. Setting it on metadata inodes may cause the VFS to do the wrong thing for such inodes, so avoid potential problems by restricting the scope of the flag to what we know is supported. Signed-off-by: Dave Chinner <dchinner@redhat.com> Reviewed-by: Brian Foster <bfoster@redhat.com> Tested-by: Ross Zwisler <ross.zwisler@linux.intel.com> Signed-off-by: Dave Chinner <david@fromorbit.com>
Diffstat (limited to 'fs/xfs/xfs_iops.c')
-rw-r--r--fs/xfs/xfs_iops.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/fs/xfs/xfs_iops.c b/fs/xfs/xfs_iops.c
index 76b71a1..5d4f973 100644
--- a/fs/xfs/xfs_iops.c
+++ b/fs/xfs/xfs_iops.c
@@ -1205,8 +1205,9 @@ xfs_diflags_to_iflags(
inode->i_flags |= S_SYNC;
if (flags & XFS_DIFLAG_NOATIME)
inode->i_flags |= S_NOATIME;
- if (ip->i_mount->m_flags & XFS_MOUNT_DAX ||
- ip->i_d.di_flags2 & XFS_DIFLAG2_DAX)
+ if (S_ISREG(inode->i_mode) &&
+ (ip->i_mount->m_flags & XFS_MOUNT_DAX ||
+ ip->i_d.di_flags2 & XFS_DIFLAG2_DAX))
inode->i_flags |= S_DAX;
}
OpenPOWER on IntegriCloud