diff options
author | Dave Chinner <dchinner@redhat.com> | 2015-06-04 02:19:10 +0300 |
---|---|---|
committer | Dave Chinner <david@fromorbit.com> | 2015-06-04 02:19:10 +0300 |
commit | 9969441f9f86a8a7de8c36514fa789e5f5d83145 (patch) | |
tree | f041302d6b5bfd303dfcd065afc036f37be5f33c /fs/xfs | |
parent | 4f69f578a87d39c20b1ff70005a125e4594c3de8 (diff) | |
download | linux-9969441f9f86a8a7de8c36514fa789e5f5d83145.tar.xz |
xfs: add DAX truncate support
When we truncate a DAX file, we need to call through the DAX page
truncation path rather than through block_truncate_page() so that
mappings and block zeroing are all handled correctly. Otherwise,
truncate does not need to change.
Signed-off-by: Dave Chinner <dchinner@redhat.com>
Reviewed-by: Brian Foster <bfoster@redhat.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
Diffstat (limited to 'fs/xfs')
-rw-r--r-- | fs/xfs/xfs_iops.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/fs/xfs/xfs_iops.c b/fs/xfs/xfs_iops.c index f4cd7204e236..0994f95c368f 100644 --- a/fs/xfs/xfs_iops.c +++ b/fs/xfs/xfs_iops.c @@ -851,7 +851,11 @@ xfs_setattr_size( * to hope that the caller sees ENOMEM and retries the truncate * operation. */ - error = block_truncate_page(inode->i_mapping, newsize, xfs_get_blocks); + if (IS_DAX(inode)) + error = dax_truncate_page(inode, newsize, xfs_get_blocks_direct); + else + error = block_truncate_page(inode->i_mapping, newsize, + xfs_get_blocks); if (error) return error; truncate_setsize(inode, newsize); |