Re: [PATCH 05/10] btrfs: raid56: Use in_range where applicable

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, Jul 02, 2020 at 04:46:45PM +0300, Nikolay Borisov wrote:
> While at it use the opportunity to simplify find_logical_bio_stripe by
> reducing the scope of 'stripe_start' variable and squash the
> sector-to-bytes conversion on one line.
> 
> Signed-off-by: Nikolay Borisov <nborisov@xxxxxxxx>
> ---
>  fs/btrfs/raid56.c | 16 ++++------------
>  1 file changed, 4 insertions(+), 12 deletions(-)
> 
> diff --git a/fs/btrfs/raid56.c b/fs/btrfs/raid56.c
> index d9415a22617b..d89dd3030bba 100644
> --- a/fs/btrfs/raid56.c
> +++ b/fs/btrfs/raid56.c
> @@ -1349,7 +1349,6 @@ static int find_bio_stripe(struct btrfs_raid_bio *rbio,
>  			   struct bio *bio)
>  {
>  	u64 physical = bio->bi_iter.bi_sector;
> -	u64 stripe_start;
>  	int i;
>  	struct btrfs_bio_stripe *stripe;
>  
> @@ -1357,9 +1356,7 @@ static int find_bio_stripe(struct btrfs_raid_bio *rbio,
>  
>  	for (i = 0; i < rbio->bbio->num_stripes; i++) {
>  		stripe = &rbio->bbio->stripes[i];
> -		stripe_start = stripe->physical;
> -		if (physical >= stripe_start &&
> -		    physical < stripe_start + rbio->stripe_len &&
> +		if (in_range(physical, stripe->physical, rbio->stripe_len) &&
>  		    stripe->dev->bdev &&
>  		    bio->bi_disk == stripe->dev->bdev->bd_disk &&
>  		    bio->bi_partno == stripe->dev->bdev->bd_partno) {
> @@ -1377,18 +1374,13 @@ static int find_bio_stripe(struct btrfs_raid_bio *rbio,
>  static int find_logical_bio_stripe(struct btrfs_raid_bio *rbio,
>  				   struct bio *bio)
>  {
> -	u64 logical = bio->bi_iter.bi_sector;
> -	u64 stripe_start;
> +	u64 logical = bio->bi_iter.bi_sector << 9;

FYI, if bi_iter::bi_sector is shifted left or right, it needs the u64
cast because the type sector_t is not always 64bit for some reasons.
We've had bugs with the conversion on 32bit arches, for consistency it
needs to be there.

>  	int i;
>  
> -	logical <<= 9;
> -
>  	for (i = 0; i < rbio->nr_data; i++) {
> -		stripe_start = rbio->bbio->raid_map[i];
> -		if (logical >= stripe_start &&
> -		    logical < stripe_start + rbio->stripe_len) {
> +		u64 stripe_start = rbio->bbio->raid_map[i];
> +		if (in_range(logical, stripe_start, rbio->stripe_len))
>  			return i;
> -		}
>  	}
>  	return -1;
>  }
> -- 
> 2.17.1



[Index of Archives]     [Linux Filesystem Development]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux