block: make part_in_flight() take an array of two ints

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 inflight count, if the partition passed in is not the
root.

This is in preparation for being able to calculate both in one
go.

Reviewed-by: Bart Van Assche <bart.vanassche@wdc.com>
Reviewed-by: Omar Sandoval <osandov@fb.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
This commit is contained in:
Jens Axboe
2017-08-08 17:49:47 -06:00
parent d62e26b3ff
commit 0609e0efc5
4 changed files with 20 additions and 9 deletions

View File

@@ -378,11 +378,18 @@ 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]);
if (part->partno) {
part = &part_to_disk(part)->part0;
inflight[1] = atomic_read(&part->in_flight[0]) +
atomic_read(&part->in_flight[1]);
} else
inflight[1] = 0;
}
static inline struct partition_meta_info *alloc_part_info(struct gendisk *disk)