Check in Jan Kara's v3 DAX iomap patches
[ext4-patch-queue.git] / ext2-use-iomap_zero_range-for-zeroing-truncated-page-in-DAX-path
blobefbc8aecd81c1b7ec40ee2188b4bb93b501907a7
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>
12 ---
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
18 --- a/fs/ext2/inode.c
19 +++ b/fs/ext2/inode.c
20 @@ -850,6 +850,9 @@ struct iomap_ops ext2_iomap_ops = {
21         .iomap_begin            = ext2_iomap_begin,
22         .iomap_end              = ext2_iomap_end,
23  };
24 +#else
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);
34 -       if (IS_DAX(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,
40 +                                        &ext2_iomap_ops);
41 +       } else if (test_opt(inode->i_sb, NOBH))
42                 error = nobh_truncate_page(inode->i_mapping,
43                                 newsize, ext2_get_block);
44         else
45 -- 
46 2.6.6