xfs: clean up xfs_reflink_remap_blocks call site
authorDarrick J. Wong <darrick.wong@oracle.com>
Mon, 29 Oct 2018 23:46:50 +0000 (10:46 +1100)
committerDave Chinner <david@fromorbit.com>
Mon, 29 Oct 2018 23:46:50 +0000 (10:46 +1100)
Move the offset <-> blocks unit conversions into
xfs_reflink_remap_blocks to make the call site less ugly.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
fs/xfs/xfs_reflink.c

index e8e86646bb4b158235480e4159677c413ec50238..79dec457f7fb3cab6dd42a74e7614d339e1b2490 100644 (file)
@@ -1119,16 +1119,23 @@ out:
 STATIC int
 xfs_reflink_remap_blocks(
        struct xfs_inode        *src,
-       xfs_fileoff_t           srcoff,
+       loff_t                  pos_in,
        struct xfs_inode        *dest,
-       xfs_fileoff_t           destoff,
-       xfs_filblks_t           len,
-       xfs_off_t               new_isize)
+       loff_t                  pos_out,
+       loff_t                  remap_len)
 {
        struct xfs_bmbt_irec    imap;
+       xfs_fileoff_t           srcoff;
+       xfs_fileoff_t           destoff;
+       xfs_filblks_t           len;
+       xfs_filblks_t           range_len;
+       xfs_off_t               new_isize = pos_out + remap_len;
        int                     nimaps;
        int                     error = 0;
-       xfs_filblks_t           range_len;
+
+       destoff = XFS_B_TO_FSBT(src->i_mount, pos_out);
+       srcoff = XFS_B_TO_FSBT(src->i_mount, pos_in);
+       len = XFS_B_TO_FSB(src->i_mount, remap_len);
 
        /* drange = (destoff, destoff + len); srange = (srcoff, srcoff + len) */
        while (len) {
@@ -1143,7 +1150,7 @@ xfs_reflink_remap_blocks(
                error = xfs_bmapi_read(src, srcoff, len, &imap, &nimaps, 0);
                xfs_iunlock(src, lock_mode);
                if (error)
-                       goto err;
+                       break;
                ASSERT(nimaps == 1);
 
                trace_xfs_reflink_remap_imap(src, srcoff, len, XFS_IO_OVERWRITE,
@@ -1157,11 +1164,11 @@ xfs_reflink_remap_blocks(
                error = xfs_reflink_remap_extent(dest, &imap, destoff,
                                new_isize);
                if (error)
-                       goto err;
+                       break;
 
                if (fatal_signal_pending(current)) {
                        error = -EINTR;
-                       goto err;
+                       break;
                }
 
                /* Advance drange/srange */
@@ -1170,10 +1177,8 @@ xfs_reflink_remap_blocks(
                len -= range_len;
        }
 
-       return 0;
-
-err:
-       trace_xfs_reflink_remap_blocks_error(dest, error, _RET_IP_);
+       if (error)
+               trace_xfs_reflink_remap_blocks_error(dest, error, _RET_IP_);
        return error;
 }
 
@@ -1396,8 +1401,6 @@ xfs_reflink_remap_range(
        struct inode            *inode_out = file_inode(file_out);
        struct xfs_inode        *dest = XFS_I(inode_out);
        struct xfs_mount        *mp = src->i_mount;
-       xfs_fileoff_t           sfsbno, dfsbno;
-       xfs_filblks_t           fsblen;
        xfs_extlen_t            cowextsize;
        ssize_t                 ret;
 
@@ -1415,11 +1418,7 @@ xfs_reflink_remap_range(
 
        trace_xfs_reflink_remap_range(src, pos_in, len, dest, pos_out);
 
-       dfsbno = XFS_B_TO_FSBT(mp, pos_out);
-       sfsbno = XFS_B_TO_FSBT(mp, pos_in);
-       fsblen = XFS_B_TO_FSB(mp, len);
-       ret = xfs_reflink_remap_blocks(src, sfsbno, dest, dfsbno, fsblen,
-                       pos_out + len);
+       ret = xfs_reflink_remap_blocks(src, pos_in, dest, pos_out, len);
        if (ret)
                goto out_unlock;