Re: [PATCH] net_sched: fix order of queue length updates in qdisc_replace()

2017-08-20 Thread David Miller
From: Konstantin Khlebnikov Date: Sat, 19 Aug 2017 15:37:07 +0300 > This important to call qdisc_tree_reduce_backlog() after changing queue > length. Parent qdisc should deactivate class in ->qlen_notify() called from > qdisc_tree_reduce_backlog() but this happens only if qdisc->q.qlen in zero. >

Re: [PATCH] net_sched: fix order of queue length updates in qdisc_replace()

2017-08-19 Thread Cong Wang
On Sat, Aug 19, 2017 at 5:37 AM, Konstantin Khlebnikov wrote: > This important to call qdisc_tree_reduce_backlog() after changing queue > length. Parent qdisc should deactivate class in ->qlen_notify() called from > qdisc_tree_reduce_backlog() but this happens only if qdisc->q.qlen in zero. Good

Re: [PATCH] net_sched: fix order of queue length updates in qdisc_replace()

2017-08-19 Thread Konstantin Khlebnikov
I've seen this as loops in hfsc rb-trees and hungs in hfsc_dequeue() -> rb_first(). Simple debug catched insering already inserted rb-tree nodes and similar mess. Most likely this could explain warning in hfsc_dequeue() https://bugzilla.kernel.org/show_bug.cgi?id=109581 On 19.08.2017 15:37, Kon

[PATCH] net_sched: fix order of queue length updates in qdisc_replace()

2017-08-19 Thread Konstantin Khlebnikov
This important to call qdisc_tree_reduce_backlog() after changing queue length. Parent qdisc should deactivate class in ->qlen_notify() called from qdisc_tree_reduce_backlog() but this happens only if qdisc->q.qlen in zero. Missed class deactivations leads to crashes/warnings at picking packets fr