Before this patch, an I/O on top of /dev/ploopNp1 was always accounted on main partition (/sys/block/ploopN/stat). The counters for p1 remained zero. The patch fixes the problem by calculating partition properly.
https://jira.sw.ru/browse/PSBM-48266 Signed-off-by: Maxim Patlasov <[email protected]> --- drivers/block/ploop/dev.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/drivers/block/ploop/dev.c b/drivers/block/ploop/dev.c index db55be3..50c3ea9 100644 --- a/drivers/block/ploop/dev.c +++ b/drivers/block/ploop/dev.c @@ -793,6 +793,7 @@ static void ploop_make_request(struct request_queue *q, struct bio *bio) struct bio * nbio; struct ploop_device * plo = q->queuedata; unsigned long rw = bio_data_dir(bio); + struct hd_struct *part; int cpu; LIST_HEAD(drop_list); @@ -804,8 +805,9 @@ static void ploop_make_request(struct request_queue *q, struct bio *bio) BUG_ON(bio->bi_size & 511); cpu = part_stat_lock(); - part_stat_inc(cpu, &plo->disk->part0, ios[rw]); - part_stat_add(cpu, &plo->disk->part0, sectors[rw], bio_sectors(bio)); + part = disk_map_sector_rcu(plo->disk, bio->bi_sector); + part_stat_inc(cpu, part, ios[rw]); + part_stat_add(cpu, part, sectors[rw], bio_sectors(bio)); part_stat_unlock(); if (unlikely(bio->bi_size == 0)) { _______________________________________________ Devel mailing list [email protected] https://lists.openvz.org/mailman/listinfo/devel
