|
@@ -850,6 +850,9 @@ struct iomap_ops ext2_iomap_ops = {
|
|
|
.iomap_begin = ext2_iomap_begin,
|
|
|
.iomap_end = ext2_iomap_end,
|
|
|
};
|
|
|
+#else
|
|
|
+/* Define empty ops for !CONFIG_FS_DAX case to avoid ugly ifdefs */
|
|
|
+struct iomap_ops ext2_iomap_ops;
|
|
|
#endif /* CONFIG_FS_DAX */
|
|
|
|
|
|
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)
|
|
|
|
|
|
inode_dio_wait(inode);
|
|
|
|
|
|
- if (IS_DAX(inode))
|
|
|
- error = dax_truncate_page(inode, newsize, ext2_get_block);
|
|
|
- else if (test_opt(inode->i_sb, NOBH))
|
|
|
+ if (IS_DAX(inode)) {
|
|
|
+ error = iomap_zero_range(inode, newsize,
|
|
|
+ PAGE_ALIGN(newsize) - newsize, NULL,
|
|
|
+ &ext2_iomap_ops);
|
|
|
+ } else if (test_opt(inode->i_sb, NOBH))
|
|
|
error = nobh_truncate_page(inode->i_mapping,
|
|
|
newsize, ext2_get_block);
|
|
|
else
|