Commit 7bb41db3 authored by Christoph Hellwig's avatar Christoph Hellwig Committed by Dave Chinner

xfs: handle 64-bit length in xfs_iozero

We'll want to use this code for large offsets now that we're
skipping holes and unwritten extents efficiently.  Also rename it to
xfs_zero_range to be a bit more descriptive, and tell the caller if
we actually did any zeroing.
Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
Reviewed-by: default avatarDave Chinner <dchinner@redhat.com>
Signed-off-by: default avatarDave Chinner <david@fromorbit.com>
parent 459f0fbc
...@@ -85,10 +85,11 @@ xfs_rw_ilock_demote( ...@@ -85,10 +85,11 @@ xfs_rw_ilock_demote(
* Holes and unwritten extents will be left as-is as they already are zeroed. * Holes and unwritten extents will be left as-is as they already are zeroed.
*/ */
int int
xfs_iozero( xfs_zero_range(
struct xfs_inode *ip, struct xfs_inode *ip,
loff_t pos, xfs_off_t pos,
size_t count) xfs_off_t count,
bool *did_zero)
{ {
return iomap_zero_range(VFS_I(ip), pos, count, NULL, &xfs_iomap_ops); return iomap_zero_range(VFS_I(ip), pos, count, NULL, &xfs_iomap_ops);
} }
...@@ -419,7 +420,7 @@ xfs_zero_last_block( ...@@ -419,7 +420,7 @@ xfs_zero_last_block(
if (isize + zero_len > offset) if (isize + zero_len > offset)
zero_len = offset - isize; zero_len = offset - isize;
*did_zeroing = true; *did_zeroing = true;
return xfs_iozero(ip, isize, zero_len); return xfs_zero_range(ip, isize, zero_len, NULL);
} }
/* /*
...@@ -518,7 +519,7 @@ xfs_zero_eof( ...@@ -518,7 +519,7 @@ xfs_zero_eof(
if ((zero_off + zero_len) > offset) if ((zero_off + zero_len) > offset)
zero_len = offset - zero_off; zero_len = offset - zero_off;
error = xfs_iozero(ip, zero_off, zero_len); error = xfs_zero_range(ip, zero_off, zero_len, NULL);
if (error) if (error)
return error; return error;
......
...@@ -434,7 +434,8 @@ int xfs_update_prealloc_flags(struct xfs_inode *ip, ...@@ -434,7 +434,8 @@ int xfs_update_prealloc_flags(struct xfs_inode *ip,
enum xfs_prealloc_flags flags); enum xfs_prealloc_flags flags);
int xfs_zero_eof(struct xfs_inode *ip, xfs_off_t offset, int xfs_zero_eof(struct xfs_inode *ip, xfs_off_t offset,
xfs_fsize_t isize, bool *did_zeroing); xfs_fsize_t isize, bool *did_zeroing);
int xfs_iozero(struct xfs_inode *ip, loff_t pos, size_t count); int xfs_zero_range(struct xfs_inode *ip, xfs_off_t pos, xfs_off_t count,
bool *did_zero);
loff_t __xfs_seek_hole_data(struct inode *inode, loff_t start, loff_t __xfs_seek_hole_data(struct inode *inode, loff_t start,
loff_t eof, int whence); loff_t eof, int whence);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment