On Fri, Jun 26, 2020 at 3:46 PM Petr Machata <pe...@mellanox.com> wrote:
>
> A following patch introduces qevents, points in qdisc algorithm where
> packet can be processed by user-defined filters. Should this processing
> lead to a situation where a new packet is to be enqueued on the same port,
> holding the root lock would lead to deadlocks. To solve the issue, qevent
> handler needs to unlock and relock the root lock when necessary.
>
> To that end, add the root lock argument to the qdisc op enqueue, and
> propagate throughout.

Hmm, but why do you pass root lock down to each ->enqueue()?

You can find root lock with sch_tree_lock() (or qdisc_lock() if you don't
care about hierarchy), and you already have qdisc as a parameter of
tcf_qevent_handle().

Thanks.

Reply via email to