On Mon, Jun 6, 2016 at 9:37 AM, Eric Dumazet <eduma...@google.com> wrote: > void > -__gnet_stats_copy_basic(struct gnet_stats_basic_packed *bstats, > +__gnet_stats_copy_basic(const seqcount_t *running, > + struct gnet_stats_basic_packed *bstats, > struct gnet_stats_basic_cpu __percpu *cpu, > struct gnet_stats_basic_packed *b) > { > + unsigned int seq; > + > if (cpu) { > __gnet_stats_copy_basic_cpu(bstats, cpu); > - } else { > + return; > + } > + do { > + if (running) > + seq = read_seqcount_begin(running); > bstats->bytes = b->bytes; > bstats->packets = b->packets; > - } > + } while (running && read_seqcount_retry(running, seq)); > }
Why only these basic stats need to get read seqlock? Queue stats (gnet_stats_copy_queue()) too, right?