xfs
[Top] [All Lists]

[PATCH 12/15] xfs: handle 64-bit length in xfs_iozero

To: xfs@xxxxxxxxxxx
Subject: [PATCH 12/15] xfs: handle 64-bit length in xfs_iozero
From: Christoph Hellwig <hch@xxxxxx>
Date: Mon, 9 May 2016 10:47:15 +0200
Cc: rpeterso@xxxxxxxxxx, vishal.l.verma@xxxxxxxxx, linux-fsdevel@xxxxxxxxxxxxxxx
Delivered-to: xfs@xxxxxxxxxxx
In-reply-to: <1462783638-4968-1-git-send-email-hch@xxxxxx>
References: <1462783638-4968-1-git-send-email-hch@xxxxxx>
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@xxxxxx>
---
 fs/xfs/xfs_file.c  | 11 ++++++-----
 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 bd07913..85369a9 100644
--- a/fs/xfs/xfs_file.c
+++ b/fs/xfs/xfs_file.c
@@ -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;
 
diff --git a/fs/xfs/xfs_inode.h b/fs/xfs/xfs_inode.h
index e52d7c7..dbb0bcf 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,
                                  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);
 
-- 
2.1.4

<Prev in Thread] Current Thread [Next in Thread>