diff options
author | Matthew Wilcox <matthew.r.wilcox@intel.com> | 2016-03-15 11:20:41 -0600 |
---|---|---|
committer | Vishal Verma <vishal.l.verma@intel.com> | 2016-05-18 12:16:56 -0600 |
commit | 3dc29161070ab14d065554c0ad58988ab77a7bfd (patch) | |
tree | 946408d640e9d41e47df15b1515332a230d80f78 /fs/ext2 | |
parent | 0a70bd43053331d99881211e1d09f32de531432f (diff) | |
download | linux-3dc29161070ab14d065554c0ad58988ab77a7bfd.tar.gz linux-3dc29161070ab14d065554c0ad58988ab77a7bfd.tar.bz2 linux-3dc29161070ab14d065554c0ad58988ab77a7bfd.zip |
dax: use sb_issue_zerout instead of calling dax_clear_sectors
dax_clear_sectors() cannot handle poisoned blocks. These must be
zeroed using the BIO interface instead. Convert ext2 and XFS to use
only sb_issue_zerout().
Reviewed-by: Jeff Moyer <jmoyer@redhat.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Jan Kara <jack@suse.cz>
Signed-off-by: Matthew Wilcox <matthew.r.wilcox@intel.com>
[vishal: Also remove the dax_clear_sectors function entirely]
Signed-off-by: Vishal Verma <vishal.l.verma@intel.com>
Diffstat (limited to 'fs/ext2')
-rw-r--r-- | fs/ext2/inode.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/fs/ext2/inode.c b/fs/ext2/inode.c index 9a14af3b1a69..17cbd6b696f2 100644 --- a/fs/ext2/inode.c +++ b/fs/ext2/inode.c @@ -26,6 +26,7 @@ #include <linux/highuid.h> #include <linux/pagemap.h> #include <linux/dax.h> +#include <linux/blkdev.h> #include <linux/quotaops.h> #include <linux/writeback.h> #include <linux/buffer_head.h> @@ -737,10 +738,9 @@ static int ext2_get_blocks(struct inode *inode, * so that it's not found by another thread before it's * initialised */ - err = dax_clear_sectors(inode->i_sb->s_bdev, - le32_to_cpu(chain[depth-1].key) << - (inode->i_blkbits - 9), - count << inode->i_blkbits); + err = sb_issue_zeroout(inode->i_sb, + le32_to_cpu(chain[depth-1].key), count, + GFP_NOFS); if (err) { mutex_unlock(&ei->truncate_mutex); goto cleanup; |