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?

Reply via email to