Re: [PATCH 3/6] block: make part_in_flight() take an array of two ints

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

 



On Fri, Aug 04, 2017 at 09:04:19AM -0600, Jens Axboe wrote:
> Instead of returning the count that matches the partition, pass
> in an array of two ints. Index 0 will be filled with the inflight
> count for the partition in question, and index 1 will filled
> with the root infligh count, if the partition passed in is not the
> root.
> 
> This is in preparation for being able to calculate both in one
> go.

One tiny comment below, besides that

Reviewed-by: Omar Sandoval <osandov@xxxxxx>
> Signed-off-by: Jens Axboe <axboe@xxxxxxxxx>
> diff --git a/include/linux/genhd.h b/include/linux/genhd.h
> index 7f7427e00f9c..a9c8ea632fdc 100644
> --- a/include/linux/genhd.h
> +++ b/include/linux/genhd.h
> @@ -378,11 +378,17 @@ static inline void part_dec_in_flight(struct request_queue *q,
>  		atomic_dec(&part_to_disk(part)->part0.in_flight[rw]);
>  }
>  
> -static inline int part_in_flight(struct request_queue *q,
> -				 struct hd_struct *part)
> +static inline void part_in_flight(struct request_queue *q,
> +				  struct hd_struct *part,
> +				  unsigned int inflight[2])
>  {
> -	return atomic_read(&part->in_flight[0]) +
> +	inflight[0] = atomic_read(&part->in_flight[0]) +
>  			atomic_read(&part->in_flight[1]);

It makes me a little nervous here that we only initialize inflight[1] if
part is not part0, that seems a little subtle and easy to miss. Can we
change the line above to this?

inflight[0] = inflight[1] = (atomic_read(&part->in_flight[0]) +
			     atomic_read(&part->in_flight[1]));

> +	if (part->partno) {
> +		part = &part_to_disk(part)->part0;
> +		inflight[1] = atomic_read(&part->in_flight[0]) +
> +				atomic_read(&part->in_flight[1]);
> +	}
>  }
>  
>  static inline struct partition_meta_info *alloc_part_info(struct gendisk *disk)
> -- 
> 2.7.4
> 



[Index of Archives]     [Linux RAID]     [Linux SCSI]     [Linux ATA RAID]     [IDE]     [Linux Wireless]     [Linux Kernel]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Device Mapper]

  Powered by Linux