diff options
| author | Christoph Hellwig <hch@lst.de> | 2016-06-20 19:56:26 -0400 |
|---|---|---|
| committer | Dave Chinner <david@fromorbit.com> | 2016-06-20 19:56:26 -0400 |
| commit | 7bb41db3ea160ea55cc46af07e45f7cb1e2968ba (patch) | |
| tree | 8e3879d8be2d25ff3d70246d0ae866d46f2ccd08 | |
| parent | 459f0fbc2a827da37bbfaf3cae8da4ad8884da12 (diff) | |
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>
| -rw-r--r-- | fs/xfs/xfs_file.c | 11 | ||||
| -rw-r--r-- | fs/xfs/xfs_inode.h | 3 |
2 files changed, 8 insertions, 6 deletions
diff --git a/fs/xfs/xfs_file.c b/fs/xfs/xfs_file.c index 090a90f0d02c..294e5f423028 100644 --- a/fs/xfs/xfs_file.c +++ b/fs/xfs/xfs_file.c | |||
| @@ -85,10 +85,11 @@ xfs_rw_ilock_demote( | |||
| 85 | * Holes and unwritten extents will be left as-is as they already are zeroed. | 85 | * Holes and unwritten extents will be left as-is as they already are zeroed. |
| 86 | */ | 86 | */ |
| 87 | int | 87 | int |
| 88 | xfs_iozero( | 88 | xfs_zero_range( |
| 89 | struct xfs_inode *ip, | 89 | struct xfs_inode *ip, |
| 90 | loff_t pos, | 90 | xfs_off_t pos, |
| 91 | size_t count) | 91 | xfs_off_t count, |
| 92 | bool *did_zero) | ||
| 92 | { | 93 | { |
| 93 | return iomap_zero_range(VFS_I(ip), pos, count, NULL, &xfs_iomap_ops); | 94 | return iomap_zero_range(VFS_I(ip), pos, count, NULL, &xfs_iomap_ops); |
| 94 | } | 95 | } |
| @@ -419,7 +420,7 @@ xfs_zero_last_block( | |||
| 419 | if (isize + zero_len > offset) | 420 | if (isize + zero_len > offset) |
| 420 | zero_len = offset - isize; | 421 | zero_len = offset - isize; |
| 421 | *did_zeroing = true; | 422 | *did_zeroing = true; |
| 422 | return xfs_iozero(ip, isize, zero_len); | 423 | return xfs_zero_range(ip, isize, zero_len, NULL); |
| 423 | } | 424 | } |
| 424 | 425 | ||
| 425 | /* | 426 | /* |
| @@ -518,7 +519,7 @@ xfs_zero_eof( | |||
| 518 | if ((zero_off + zero_len) > offset) | 519 | if ((zero_off + zero_len) > offset) |
| 519 | zero_len = offset - zero_off; | 520 | zero_len = offset - zero_off; |
| 520 | 521 | ||
| 521 | error = xfs_iozero(ip, zero_off, zero_len); | 522 | error = xfs_zero_range(ip, zero_off, zero_len, NULL); |
| 522 | if (error) | 523 | if (error) |
| 523 | return error; | 524 | return error; |
| 524 | 525 | ||
diff --git a/fs/xfs/xfs_inode.h b/fs/xfs/xfs_inode.h index e52d7c7aeb5b..dbb0bcfc7d8f 100644 --- a/fs/xfs/xfs_inode.h +++ b/fs/xfs/xfs_inode.h | |||
| @@ -434,7 +434,8 @@ int xfs_update_prealloc_flags(struct xfs_inode *ip, | |||
| 434 | enum xfs_prealloc_flags flags); | 434 | enum xfs_prealloc_flags flags); |
| 435 | int xfs_zero_eof(struct xfs_inode *ip, xfs_off_t offset, | 435 | int xfs_zero_eof(struct xfs_inode *ip, xfs_off_t offset, |
| 436 | xfs_fsize_t isize, bool *did_zeroing); | 436 | xfs_fsize_t isize, bool *did_zeroing); |
| 437 | int xfs_iozero(struct xfs_inode *ip, loff_t pos, size_t count); | 437 | int xfs_zero_range(struct xfs_inode *ip, xfs_off_t pos, xfs_off_t count, |
| 438 | bool *did_zero); | ||
| 438 | loff_t __xfs_seek_hole_data(struct inode *inode, loff_t start, | 439 | loff_t __xfs_seek_hole_data(struct inode *inode, loff_t start, |
| 439 | loff_t eof, int whence); | 440 | loff_t eof, int whence); |
| 440 | 441 | ||
