Currently, stats accounting for NOLOCK qdisc enslaved to classful (lock) qdiscs is buggy. Per CPU values are ignored in most places, as a result, stats dump in the above scenario always report 0 length backlog and parent backlog len is not updated correctly on NOLOCK qdisc removal.
The first patch address stats dumping, and the second one child qdisc removal. I'm targeting the net tree as this is a bugfix, but it could be moved to net-next due to the relatively large diffstat. Paolo Abeni (2): net: sched: introduce and use qstats read helpers net: sched: introduce and use qdisc tree flush/purge helpers include/net/sch_generic.h | 44 ++++++++++++++++++++++++++++++++------- net/sched/sch_cbq.c | 10 ++++----- net/sched/sch_drr.c | 16 ++++---------- net/sched/sch_hfsc.c | 19 +++++------------ net/sched/sch_htb.c | 22 ++++++-------------- net/sched/sch_mq.c | 2 +- net/sched/sch_mqprio.c | 3 +-- net/sched/sch_multiq.c | 10 ++++----- net/sched/sch_prio.c | 10 +++------ net/sched/sch_qfq.c | 14 ++----------- net/sched/sch_red.c | 3 +-- net/sched/sch_sfb.c | 3 +-- net/sched/sch_taprio.c | 2 +- net/sched/sch_tbf.c | 3 +-- 14 files changed, 71 insertions(+), 90 deletions(-) -- 2.20.1