On Thu, Jul 30, 2026 at 1:24 PM Eric Dumazet <[email protected]> wrote:
  > I dislike this patch; it will force dump operations to restart on
busy netns.
  >
  > Most devices are created with a new ifindex (dev_index_reserve() is
  > called with ifindex == 0)
  >
  > Forcing a given ifindex is rather unusual.

  Agreed.

  For context on why I went looking: we hit this on production hosts running
  kernels predating 748bbef5fc6a. An agent that reconciles tc configuration
  against a qdisc dump saw qdiscs that did exist as absent, tried to create them
  again (-EEXIST), and tore down configuration it believed had gone stale.
  Because nothing sets cb->seq there, a truncated reply is indistinguishable
  from a complete one, so there was no way to detect it and retry.

  748bbef5fc6a makes that far less likely, and I have not been able to reproduce
  the missing-qdisc case on 7.2-rc5. One case does remain, which this patch
  would not have fixed either: ctx->q_idx is a position within the per-device
  qdisc_hash walk, so a qdisc added or removed on the device at a batch boundary
  misaligns the skip count.

  Is that worth reporting to userspace, and how would you want it detected?


On Thu, Jul 30, 2026 at 12:25 PM Eric Dumazet <[email protected]> wrote:
>
> On Thu, Jul 30, 2026 at 12:00 PM Reshma Sreekumar <[email protected]> 
> wrote:
> >
> > tc_dump_qdisc() walks every netdev in the netns and can span many netlink
> > batches.  RTNL is only held while a single batch is filled, so devices can
> > be registered or unregistered in between.  Since 748bbef5fc6a ("net/sched:
> > switch tc_dump_qdisc() to for_each_netdev_dump()") the walk resumes on an
> > ifindex rather than a list position, but ifindexes are reused: a device
> > created between two batches can be given an ifindex the dump has already
> > walked past, and is then missed entirely.  Before that commit the resume
> > used a position in the device list, so any unregister shifted every later
> > device and silently dropped a run of qdiscs from the reply.
>
> I dislike this patch; it will force dump operations to restart on busy netns.
>
> Most devices are created with a new ifindex (dev_index_reserve() is
> called with ifindex == 0)
>
> Forcing a given ifindex is rather unusual.
>
> I suggest detecting this specific use case instead of slowing down everything.

Reply via email to