aboutsummaryrefslogtreecommitdiffstats
path: root/block/blk-cgroup.c
diff options
context:
space:
mode:
Diffstat (limited to 'block/blk-cgroup.c')
-rw-r--r--block/blk-cgroup.c26
1 files changed, 6 insertions, 20 deletions
diff --git a/block/blk-cgroup.c b/block/blk-cgroup.c
index 622fb4143226..6eedf3afa276 100644
--- a/block/blk-cgroup.c
+++ b/block/blk-cgroup.c
@@ -451,27 +451,13 @@ void blkiocg_update_io_merged_stats(struct blkio_group *blkg,
451 bool direction, bool sync) 451 bool direction, bool sync)
452{ 452{
453 struct blkg_policy_data *pd = blkg->pd[pol->plid]; 453 struct blkg_policy_data *pd = blkg->pd[pol->plid];
454 struct blkio_group_stats_cpu *stats_cpu; 454 struct blkio_group_stats *stats;
455 unsigned long flags; 455 unsigned long flags;
456 456
457 /* If per cpu stats are not allocated yet, don't do any accounting. */ 457 spin_lock_irqsave(&blkg->stats_lock, flags);
458 if (pd->stats_cpu == NULL) 458 stats = &pd->stats;
459 return; 459 blkio_add_stat(stats->stat_arr[BLKIO_STAT_MERGED], 1, direction, sync);
460 460 spin_unlock_irqrestore(&blkg->stats_lock, flags);
461 /*
462 * Disabling interrupts to provide mutual exclusion between two
463 * writes on same cpu. It probably is not needed for 64bit. Not
464 * optimizing that case yet.
465 */
466 local_irq_save(flags);
467
468 stats_cpu = this_cpu_ptr(pd->stats_cpu);
469
470 u64_stats_update_begin(&stats_cpu->syncp);
471 blkio_add_stat(stats_cpu->stat_arr_cpu[BLKIO_STAT_CPU_MERGED], 1,
472 direction, sync);
473 u64_stats_update_end(&stats_cpu->syncp);
474 local_irq_restore(flags);
475} 461}
476EXPORT_SYMBOL_GPL(blkiocg_update_io_merged_stats); 462EXPORT_SYMBOL_GPL(blkiocg_update_io_merged_stats);
477 463
@@ -1342,7 +1328,7 @@ static int blkiocg_file_read_map(struct cgroup *cgrp, struct cftype *cft,
1342 BLKIO_STAT_WAIT_TIME, 1, 0); 1328 BLKIO_STAT_WAIT_TIME, 1, 0);
1343 case BLKIO_PROP_io_merged: 1329 case BLKIO_PROP_io_merged:
1344 return blkio_read_blkg_stats(blkcg, cft, cb, 1330 return blkio_read_blkg_stats(blkcg, cft, cb,
1345 BLKIO_STAT_CPU_MERGED, 1, 1); 1331 BLKIO_STAT_MERGED, 1, 0);
1346 case BLKIO_PROP_io_queued: 1332 case BLKIO_PROP_io_queued:
1347 return blkio_read_blkg_stats(blkcg, cft, cb, 1333 return blkio_read_blkg_stats(blkcg, cft, cb,
1348 BLKIO_STAT_QUEUED, 1, 0); 1334 BLKIO_STAT_QUEUED, 1, 0);