diff options
Diffstat (limited to 'drivers/md/multipath.c')
| -rw-r--r-- | drivers/md/multipath.c | 8 | 
1 files changed, 6 insertions, 2 deletions
diff --git a/drivers/md/multipath.c b/drivers/md/multipath.c index c4779ccba1c..8bb8794129b 100644 --- a/drivers/md/multipath.c +++ b/drivers/md/multipath.c @@ -147,6 +147,7 @@ static int multipath_make_request (struct request_queue *q, struct bio * bio)  	struct multipath_bh * mp_bh;  	struct multipath_info *multipath;  	const int rw = bio_data_dir(bio); +	int cpu;  	if (unlikely(bio_barrier(bio))) {  		bio_endio(bio, -EOPNOTSUPP); @@ -158,8 +159,11 @@ static int multipath_make_request (struct request_queue *q, struct bio * bio)  	mp_bh->master_bio = bio;  	mp_bh->mddev = mddev; -	disk_stat_inc(mddev->gendisk, ios[rw]); -	disk_stat_add(mddev->gendisk, sectors[rw], bio_sectors(bio)); +	cpu = part_stat_lock(); +	part_stat_inc(cpu, &mddev->gendisk->part0, ios[rw]); +	part_stat_add(cpu, &mddev->gendisk->part0, sectors[rw], +		      bio_sectors(bio)); +	part_stat_unlock();  	mp_bh->path = multipath_map(conf);  	if (mp_bh->path < 0) {  |