At 11/18/2016 08:07 AM, Omar Sandoval wrote:
From: Omar Sandoval <osan...@fb.com>

This just makes the following patch cleaner.
Looks good for me.

It is just a good refactoring. Making code short and easier to read.

And it doesn't affect the len = 0 behavior.
So no matter what the choice we do, it can be applied independently.

Reviewed-by: Qu Wenruo <quwen...@cn.fujitsu.com>

Thanks,
Qu

Signed-off-by: Omar Sandoval <osan...@fb.com>
---
 fs/btrfs/ioctl.c | 33 ++++++++++++---------------------
 1 file changed, 12 insertions(+), 21 deletions(-)

diff --git a/fs/btrfs/ioctl.c b/fs/btrfs/ioctl.c
index 7acbd2c..e23f945 100644
--- a/fs/btrfs/ioctl.c
+++ b/fs/btrfs/ioctl.c
@@ -3124,26 +3124,27 @@ static int btrfs_extent_same(struct inode *src, u64 
loff, u64 olen,
        int ret;
        u64 len = olen;
        struct cmp_pages cmp;
-       int same_inode = 0;
+       bool same_inode = (src == dst);
        u64 same_lock_start = 0;
        u64 same_lock_len = 0;

-       if (src == dst)
-               same_inode = 1;
-
        if (len == 0)
                return 0;

-       if (same_inode) {
+       if (same_inode)
                inode_lock(src);
+       else
+               btrfs_double_inode_lock(src, dst);

-               ret = extent_same_check_offsets(src, loff, &len, olen);
-               if (ret)
-                       goto out_unlock;
-               ret = extent_same_check_offsets(src, dst_loff, &len, olen);
-               if (ret)
-                       goto out_unlock;
+       ret = extent_same_check_offsets(src, loff, &len, olen);
+       if (ret)
+               goto out_unlock;

+       ret = extent_same_check_offsets(dst, dst_loff, &len, olen);
+       if (ret)
+               goto out_unlock;
+
+       if (same_inode) {
                /*
                 * Single inode case wants the same checks, except we
                 * don't want our length pushed out past i_size as
@@ -3171,16 +3172,6 @@ static int btrfs_extent_same(struct inode *src, u64 
loff, u64 olen,

                same_lock_start = min_t(u64, loff, dst_loff);
                same_lock_len = max_t(u64, loff, dst_loff) + len - 
same_lock_start;
-       } else {
-               btrfs_double_inode_lock(src, dst);
-
-               ret = extent_same_check_offsets(src, loff, &len, olen);
-               if (ret)
-                       goto out_unlock;
-
-               ret = extent_same_check_offsets(dst, dst_loff, &len, olen);
-               if (ret)
-                       goto out_unlock;
        }

        /* don't make the dst file partly checksummed */



--
To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to