lkml.org 
[lkml]   [2010]   [Aug]   [10]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH 03/10] Use percpu stats
    On Mon,  9 Aug 2010 22:56:49 +0530 Nitin Gupta <ngupta@vflare.org> wrote:

    > +/*
    > + * Individual percpu values can go negative but the sum across all CPUs
    > + * must always be positive (we store various counts). So, return sum as
    > + * unsigned value.
    > + */
    > +static u64 zram_get_stat(struct zram *zram, enum zram_stats_index idx)
    > {
    > - u64 val;
    > -
    > - spin_lock(&zram->stat64_lock);
    > - val = *v;
    > - spin_unlock(&zram->stat64_lock);
    > + int cpu;
    > + s64 val = 0;
    > +
    > + for_each_possible_cpu(cpu) {
    > + s64 temp;
    > + unsigned int start;
    > + struct zram_stats_cpu *stats;
    > +
    > + stats = per_cpu_ptr(zram->stats, cpu);
    > + do {
    > + start = u64_stats_fetch_begin(&stats->syncp);
    > + temp = stats->count[idx];
    > + } while (u64_stats_fetch_retry(&stats->syncp, start));
    > + val += temp;
    > + }
    >
    > + WARN_ON(val < 0);
    > return val;
    > }

    That reimplements include/linux/percpu_counter.h, poorly.

    Please see the June discussion "[PATCH v2 1/2] tmpfs: Quick token
    library to allow scalable retrieval of tokens from token jar" for some
    discussion.



    \
     
     \ /
      Last update: 2010-08-10 06:35    [W:0.024 / U:35.740 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site