On Thu, Jun 18, 2020 at 07:30:49PM +0200, Uladzislau Rezki wrote: > > I'd suggest: > > > > rcu_lock_acquire(&rcu_callback_map); > > trace_rcu_invoke_kfree_bulk_callback(rcu_state.name, > > bkvhead[i]->nr_records, bkvhead[i]->records); > > if (i == 0) { > > kfree_bulk(bkvhead[i]->nr_records, > > bkvhead[i]->records); > > } else { > > for (j = 0; j < bkvhead[i]->nr_records; j++) { > > vfree(bkvhead[i]->records[j]); > > } > > } > > rcu_lock_release(&rcu_callback_map); > > > There are two different trace functions, one for "bulk" tracing > messages, and another one is per one call of kfree(), though we use > to indicate vfree() call. > > Probably we can rename it to: trace_rcu_invoke_kvfree_callback(); > > What do you think? Works for me! > > But I'd also suggest a vfree_bulk be added. There are a few things > > which would be better done in bulk as part of the vfree process > > (we batch them up already, but i'm sure we could do better). > > I was thinking to implement of vfree_bulk() API, but i guess it can > be done as future work. > > Does that sound good? Yes, definitely a future piece of work.