1 ext2: use iomap_zero_range() for zeroing truncated page in DAX path
3 From: Jan Kara <jack@suse.cz>
5 Currently the last user of ext2_get_blocks() for DAX inodes was
6 dax_truncate_page(). Convert that to iomap_zero_range() so that all DAX
7 IO uses the iomap path.
9 Reviewed-by: Ross Zwisler <ross.zwisler@linux.intel.com>
10 Signed-off-by: Jan Kara <jack@suse.cz>
11 Signed-off-by: Theodore Ts'o <tytso@mit.edu>
13 fs/ext2/inode.c | 11 ++++++++---
14 1 file changed, 8 insertions(+), 3 deletions(-)
16 diff --git a/fs/ext2/inode.c b/fs/ext2/inode.c
17 index 41b8b44a391c..046b642f3585 100644
20 @@ -850,6 +850,9 @@ struct iomap_ops ext2_iomap_ops = {
21 .iomap_begin = ext2_iomap_begin,
22 .iomap_end = ext2_iomap_end,
25 +/* Define empty ops for !CONFIG_FS_DAX case to avoid ugly ifdefs */
26 +struct iomap_ops ext2_iomap_ops;
27 #endif /* CONFIG_FS_DAX */
29 int ext2_fiemap(struct inode *inode, struct fiemap_extent_info *fieinfo,
30 @@ -1293,9 +1296,11 @@ static int ext2_setsize(struct inode *inode, loff_t newsize)
32 inode_dio_wait(inode);
35 - error = dax_truncate_page(inode, newsize, ext2_get_block);
36 - else if (test_opt(inode->i_sb, NOBH))
37 + if (IS_DAX(inode)) {
38 + error = iomap_zero_range(inode, newsize,
39 + PAGE_ALIGN(newsize) - newsize, NULL,
41 + } else if (test_opt(inode->i_sb, NOBH))
42 error = nobh_truncate_page(inode->i_mapping,
43 newsize, ext2_get_block);