On Thu, Sep 26, 2024 at 06:35:27PM +0200, Vlastimil Babka wrote: > On 9/18/24 16:40, Uladzislau Rezki wrote: > >> > > Thank you for valuable feedback! Indeed it is hard to follow, even > > though it works correctly. > > I will add the comment and also break the loop on first queuing as you > > suggested! > > > > It does not make sense to loop further because following iterations > > are never successful > > thus never overwrite "queued" variable(it never reaches the > > queue_rcu_work() call). > > > > <snip> > > bool queued = false; > > ... > > for (i = 0; i < KFREE_N_BATCHES; i++) { > > if (need_offload_krc(krcp)) { > > queued = queue_rcu_work(system_wq, &krwp->rcu_work); > > ... > > return queued; > > <snip> > > > > if we queued, "if(need_offload_krc())" condition is never true anymore. > > > > Below refactoring makes it clear. I will send the patch to address it. > > Looks good, AFAICT. Can you send the full patch then? Thanks. > I will do so. We can send it from RCU-side for rcX, this merge window or you can do it. What is the best for you? -- Uladzislau Rezki