forked from luck/tmp_suning_uos_patched
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: Christoph Hellwig <hch@lst.de> Reviewed-by: Dave Chinner <dchinner@redhat.com> Signed-off-by: Dave Chinner <david@fromorbit.com>
This commit is contained in:
parent
459f0fbc2a
commit
7bb41db3ea
|
@ -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(
|
||||||
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(
|
||||||
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,
|
||||||
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);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user