Lines Matching refs:shared
185 static int dm_stat_in_flight(struct dm_stat_shared *shared)
187 return atomic_read(&shared->in_flight[READ]) +
188 atomic_read(&shared->in_flight[WRITE]);
215 struct dm_stat_shared *shared;
221 shared = &s->stat_shared[ni];
222 if (WARN_ON(dm_stat_in_flight(shared))) {
229 atomic_read(&shared->in_flight[READ]),
230 atomic_read(&shared->in_flight[WRITE]));
493 static void dm_stat_round(struct dm_stat *s, struct dm_stat_shared *shared,
507 difference = now - shared->stamp;
511 in_flight_read = (unsigned)atomic_read(&shared->in_flight[READ]);
512 in_flight_write = (unsigned)atomic_read(&shared->in_flight[WRITE]);
521 shared->stamp = now;
529 struct dm_stat_shared *shared = &s->stat_shared[entry];
556 dm_stat_round(s, shared, p);
557 atomic_inc(&shared->in_flight[idx]);
560 dm_stat_round(s, shared, p);
561 atomic_dec(&shared->in_flight[idx]);
679 static void __dm_stat_init_temporary_percpu_totals(struct dm_stat_shared *shared,
687 dm_stat_round(s, shared, p);
690 shared->tmp.sectors[READ] = 0;
691 shared->tmp.sectors[WRITE] = 0;
692 shared->tmp.ios[READ] = 0;
693 shared->tmp.ios[WRITE] = 0;
694 shared->tmp.merges[READ] = 0;
695 shared->tmp.merges[WRITE] = 0;
696 shared->tmp.ticks[READ] = 0;
697 shared->tmp.ticks[WRITE] = 0;
698 shared->tmp.io_ticks[READ] = 0;
699 shared->tmp.io_ticks[WRITE] = 0;
700 shared->tmp.io_ticks_total = 0;
701 shared->tmp.time_in_queue = 0;
704 memset(shared->tmp.histogram, 0, (s->n_histogram_entries + 1) * sizeof(unsigned long long));
708 shared->tmp.sectors[READ] += READ_ONCE(p->sectors[READ]);
709 shared->tmp.sectors[WRITE] += READ_ONCE(p->sectors[WRITE]);
710 shared->tmp.ios[READ] += READ_ONCE(p->ios[READ]);
711 shared->tmp.ios[WRITE] += READ_ONCE(p->ios[WRITE]);
712 shared->tmp.merges[READ] += READ_ONCE(p->merges[READ]);
713 shared->tmp.merges[WRITE] += READ_ONCE(p->merges[WRITE]);
714 shared->tmp.ticks[READ] += READ_ONCE(p->ticks[READ]);
715 shared->tmp.ticks[WRITE] += READ_ONCE(p->ticks[WRITE]);
716 shared->tmp.io_ticks[READ] += READ_ONCE(p->io_ticks[READ]);
717 shared->tmp.io_ticks[WRITE] += READ_ONCE(p->io_ticks[WRITE]);
718 shared->tmp.io_ticks_total += READ_ONCE(p->io_ticks_total);
719 shared->tmp.time_in_queue += READ_ONCE(p->time_in_queue);
723 shared->tmp.histogram[i] += READ_ONCE(p->histogram[i]);
732 struct dm_stat_shared *shared;
736 shared = &s->stat_shared[x];
738 __dm_stat_init_temporary_percpu_totals(shared, s, x);
741 p->sectors[READ] -= shared->tmp.sectors[READ];
742 p->sectors[WRITE] -= shared->tmp.sectors[WRITE];
743 p->ios[READ] -= shared->tmp.ios[READ];
744 p->ios[WRITE] -= shared->tmp.ios[WRITE];
745 p->merges[READ] -= shared->tmp.merges[READ];
746 p->merges[WRITE] -= shared->tmp.merges[WRITE];
747 p->ticks[READ] -= shared->tmp.ticks[READ];
748 p->ticks[WRITE] -= shared->tmp.ticks[WRITE];
749 p->io_ticks[READ] -= shared->tmp.io_ticks[READ];
750 p->io_ticks[WRITE] -= shared->tmp.io_ticks[WRITE];
751 p->io_ticks_total -= shared->tmp.io_ticks_total;
752 p->time_in_queue -= shared->tmp.time_in_queue;
759 p->histogram[i] -= shared->tmp.histogram[i];
819 struct dm_stat_shared *shared;
846 shared = &s->stat_shared[x];
851 __dm_stat_init_temporary_percpu_totals(shared, s, x);
856 shared->tmp.ios[READ],
857 shared->tmp.merges[READ],
858 shared->tmp.sectors[READ],
859 dm_jiffies_to_msec64(s, shared->tmp.ticks[READ]),
860 shared->tmp.ios[WRITE],
861 shared->tmp.merges[WRITE],
862 shared->tmp.sectors[WRITE],
863 dm_jiffies_to_msec64(s, shared->tmp.ticks[WRITE]),
864 dm_stat_in_flight(shared),
865 dm_jiffies_to_msec64(s, shared->tmp.io_ticks_total),
866 dm_jiffies_to_msec64(s, shared->tmp.time_in_queue),
867 dm_jiffies_to_msec64(s, shared->tmp.io_ticks[READ]),
868 dm_jiffies_to_msec64(s, shared->tmp.io_ticks[WRITE]));
872 DMEMIT("%s%llu", !i ? " " : ":", shared->tmp.histogram[i]);