btrfs: volumes: Use more straightforward way to calculate map length
authorQu Wenruo <wqu@suse.com>
Wed, 23 Oct 2019 13:57:26 +0000 (21:57 +0800)
committerDavid Sterba <dsterba@suse.com>
Mon, 18 Nov 2019 16:51:48 +0000 (17:51 +0100)
The old code goes:

  offset = logical - em->start;
length = min_t(u64, em->len - offset, length);

Where @length calculation is dependent on offset, it can take reader
several more seconds to find it's just the same code as:

  offset = logical - em->start;
length = min_t(u64, em->start + em->len - logical, length);

Use above code to make the length calculate independent from other
variable, thus slightly increase the readability.

Reviewed-by: Johannes Thumshirn <jthumshirn@suse.de>
Reviewed-by: Josef Bacik <josef@toxicpanda.com>
Signed-off-by: Qu Wenruo <wqu@suse.com>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/volumes.c

index f534a6a5553e6c28a114873a4f342176e0674d6f..6a0288d17b7d4b4b8070759fe46aa83196aef4de 100644 (file)
@@ -5412,7 +5412,7 @@ static int __btrfs_map_block_for_discard(struct btrfs_fs_info *fs_info,
        }
 
        offset = logical - em->start;
-       length = min_t(u64, em->len - offset, length);
+       length = min_t(u64, em->start + em->len - logical, length);
 
        stripe_len = map->stripe_len;
        /*