xfs: handle 64-bit length in xfs_iozero
authorChristoph Hellwig <hch@lst.de>
Mon, 20 Jun 2016 23:56:26 +0000 (09:56 +1000)
committerDave Chinner <david@fromorbit.com>
Mon, 20 Jun 2016 23:56:26 +0000 (09:56 +1000)
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>
fs/xfs/xfs_file.c
fs/xfs/xfs_inode.h

index 090a90f0d02c716a126ec267de87bf59e025b15b..294e5f423028b8815e446a2f01748eaa677e0a6d 100644 (file)
@@ -85,10 +85,11 @@ xfs_rw_ilock_demote(
  * Holes and unwritten extents will be left as-is as they already are zeroed.
  */
 int
-xfs_iozero(
+xfs_zero_range(
        struct xfs_inode        *ip,
-       loff_t                  pos,
-       size_t                  count)
+       xfs_off_t               pos,
+       xfs_off_t               count,
+       bool                    *did_zero)
 {
        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)
                zero_len = offset - isize;
        *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)
                        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)
                        return error;
 
index e52d7c7aeb5b7773558a4d218afbb2a69cdaafd4..dbb0bcfc7d8f3c2171595de7fcb25ad39ec1ae10 100644 (file)
@@ -434,7 +434,8 @@ int xfs_update_prealloc_flags(struct xfs_inode *ip,
                                  enum xfs_prealloc_flags flags);
 int    xfs_zero_eof(struct xfs_inode *ip, xfs_off_t offset,
                     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 eof, int whence);