diff options
author | Jan Kara <jack@suse.cz> | 2016-11-20 20:47:07 -0500 |
---|---|---|
committer | Theodore Ts'o <tytso@mit.edu> | 2016-11-20 20:47:07 -0500 |
commit | 00697eed386d57c5267aad5b8343f027b10da0c0 (patch) | |
tree | b1440f03d2aea6832e4d7ae044e665159144984e /fs/ext2/inode.c | |
parent | 0bd2d5ec3d7655a849928f04597a0ceea0329176 (diff) |
ext2: use iomap_zero_range() for zeroing truncated page in DAX path
Currently the last user of ext2_get_blocks() for DAX inodes was
dax_truncate_page(). Convert that to iomap_zero_range() so that all DAX
IO uses the iomap path.
Reviewed-by: Ross Zwisler <ross.zwisler@linux.intel.com>
Signed-off-by: Jan Kara <jack@suse.cz>
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
Diffstat (limited to 'fs/ext2/inode.c')
-rw-r--r-- | fs/ext2/inode.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/fs/ext2/inode.c b/fs/ext2/inode.c index 41b8b44a391c..046b642f3585 100644 --- a/fs/ext2/inode.c +++ b/fs/ext2/inode.c | |||
@@ -850,6 +850,9 @@ struct iomap_ops ext2_iomap_ops = { | |||
850 | .iomap_begin = ext2_iomap_begin, | 850 | .iomap_begin = ext2_iomap_begin, |
851 | .iomap_end = ext2_iomap_end, | 851 | .iomap_end = ext2_iomap_end, |
852 | }; | 852 | }; |
853 | #else | ||
854 | /* Define empty ops for !CONFIG_FS_DAX case to avoid ugly ifdefs */ | ||
855 | struct iomap_ops ext2_iomap_ops; | ||
853 | #endif /* CONFIG_FS_DAX */ | 856 | #endif /* CONFIG_FS_DAX */ |
854 | 857 | ||
855 | int ext2_fiemap(struct inode *inode, struct fiemap_extent_info *fieinfo, | 858 | int ext2_fiemap(struct inode *inode, struct fiemap_extent_info *fieinfo, |
@@ -1293,9 +1296,11 @@ static int ext2_setsize(struct inode *inode, loff_t newsize) | |||
1293 | 1296 | ||
1294 | inode_dio_wait(inode); | 1297 | inode_dio_wait(inode); |
1295 | 1298 | ||
1296 | if (IS_DAX(inode)) | 1299 | if (IS_DAX(inode)) { |
1297 | error = dax_truncate_page(inode, newsize, ext2_get_block); | 1300 | error = iomap_zero_range(inode, newsize, |
1298 | else if (test_opt(inode->i_sb, NOBH)) | 1301 | PAGE_ALIGN(newsize) - newsize, NULL, |
1302 | &ext2_iomap_ops); | ||
1303 | } else if (test_opt(inode->i_sb, NOBH)) | ||
1299 | error = nobh_truncate_page(inode->i_mapping, | 1304 | error = nobh_truncate_page(inode->i_mapping, |
1300 | newsize, ext2_get_block); | 1305 | newsize, ext2_get_block); |
1301 | else | 1306 | else |