On Thu, Sep 20, 2018 at 12:21 AM Vlad Buslov wrote:
>
>
> On Wed 19 Sep 2018 at 22:04, Cong Wang wrote:
> > On Mon, Sep 17, 2018 at 12:19 AM Vlad Buslov wrote:
> >> +static void tcf_qdisc_put(struct Qdisc *q, bool rtnl_held)
> >> +{
> >> + if (!q)
> >> + return;
> >> +
> >> +
On Wed 19 Sep 2018 at 22:04, Cong Wang wrote:
> On Mon, Sep 17, 2018 at 12:19 AM Vlad Buslov wrote:
>> +static void tcf_qdisc_put(struct Qdisc *q, bool rtnl_held)
>> +{
>> + if (!q)
>> + return;
>> +
>> + if (rtnl_held)
>> + qdisc_put(q);
>> + else
On Mon, Sep 17, 2018 at 12:19 AM Vlad Buslov wrote:
> +static void tcf_qdisc_put(struct Qdisc *q, bool rtnl_held)
> +{
> + if (!q)
> + return;
> +
> + if (rtnl_held)
> + qdisc_put(q);
> + else
> + qdisc_put_unlocked(q);
> +}
This is very
As a preparation from removing rtnl lock dependency from rules update path,
use Qdisc rcu and reference counting capabilities instead of relying on
rtnl lock while working with Qdiscs. Create new tcf_block_release()
function, and use it to free resources taken by tcf_block_find().
Currently, this f