diff options
author | Dave Chinner <[email protected]> | 2016-03-01 09:41:33 +1100 |
---|---|---|
committer | Dave Chinner <[email protected]> | 2016-03-01 09:41:33 +1100 |
commit | db10c697b40e34ac91bbcdd866e73a3d0bad7780 (patch) | |
tree | aa05f9b216fa18ef704fd2e6cd9160ca9123b62d | |
parent | e8897529053d05f5bd677706ba6807fc2f2b942c (diff) |
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 <[email protected]>
Reviewed-by: Brian Foster <[email protected]>
Tested-by: Ross Zwisler <[email protected]>
Signed-off-by: Dave Chinner <[email protected]>
-rw-r--r-- | fs/xfs/xfs_iops.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/fs/xfs/xfs_iops.c b/fs/xfs/xfs_iops.c index 76b71a1c6c32..5d4f9739d4a4 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; } |