OSDN Git Service

xfs: use iomap infrastructure for DAX zeroing
authorChristoph Hellwig <hch@lst.de>
Mon, 20 Jun 2016 23:55:18 +0000 (09:55 +1000)
committerDave Chinner <david@fromorbit.com>
Mon, 20 Jun 2016 23:55:18 +0000 (09:55 +1000)
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_iops.c

index 7316d38..090a90f 100644 (file)
@@ -80,34 +80,6 @@ xfs_rw_ilock_demote(
                inode_unlock(VFS_I(ip));
 }
 
-static int
-xfs_dax_zero_range(
-       struct inode            *inode,
-       loff_t                  pos,
-       size_t                  count)
-{
-       int                     status = 0;
-
-       do {
-               unsigned offset, bytes;
-
-               offset = (pos & (PAGE_SIZE -1)); /* Within page */
-               bytes = PAGE_SIZE - offset;
-               if (bytes > count)
-                       bytes = count;
-
-               status = dax_zero_page_range(inode, pos, bytes,
-                                            xfs_get_blocks_direct);
-               if (status)
-                       break;
-
-               pos += bytes;
-               count -= bytes;
-       } while (count);
-
-       return status;
-}
-
 /*
  * Clear the specified ranges to zero through either the pagecache or DAX.
  * Holes and unwritten extents will be left as-is as they already are zeroed.
@@ -118,12 +90,7 @@ xfs_iozero(
        loff_t                  pos,
        size_t                  count)
 {
-       struct inode            *inode = VFS_I(ip);
-
-       if (IS_DAX(VFS_I(ip)))
-               return xfs_dax_zero_range(inode, pos, count);
-       else
-               return iomap_zero_range(inode, pos, count, NULL, &xfs_iomap_ops);
+       return iomap_zero_range(VFS_I(ip), pos, count, NULL, &xfs_iomap_ops);
 }
 
 int
index 985a263..ab820f8 100644 (file)
@@ -819,13 +819,8 @@ xfs_setattr_size(
        if (newsize > oldsize) {
                error = xfs_zero_eof(ip, newsize, oldsize, &did_zeroing);
        } else {
-               if (IS_DAX(inode)) {
-                       error = dax_truncate_page(inode, newsize,
-                                       xfs_get_blocks_direct);
-               } else {
-                       error = iomap_truncate_page(inode, newsize,
-                                       &did_zeroing, &xfs_iomap_ops);
-               }
+               error = iomap_truncate_page(inode, newsize, &did_zeroing,
+                               &xfs_iomap_ops);
        }
 
        if (error)