Re: [PATCH 0/2] rcu: Transform kfree_rcu() into kvfree_rcu()
From: Paul E. McKenney <hidden>
Date: 2018-02-08 04:09:06
Also in:
lkml
On Wed, Feb 07, 2018 at 08:57:00AM -0500, Steven Rostedt wrote:
On Wed, 7 Feb 2018 00:31:04 -0800 "Paul E. McKenney" [off-list ref] wrote:quoted
I see problems. We would then have two different names for exactly the same thing. Seems like it would be a lot easier to simply document the existing kfree_rcu() behavior, especially given that it apparently already works. The really doesn't seem to me to be worth a name change.Honestly, I don't believe this is an RCU sub-system decision. This is a memory management decision.
I couldn't agree more! To that end, what are your thoughts on this patch? https://lkml.kernel.org/r/1513895570-28640-1-git-send-email-rao.shoaib@oracle.com Advantages include the ability to optimize based on sl[aou]b state, getting rid of the 4K offset hack in __is_kfree_rcu_offset(), better cache localite, and, as you say, putting the naming responsibility in the memory-management domain.
If we have kmalloc(), vmalloc(), kfree(), vfree() and kvfree(), and we want kmalloc() to be freed with kfree(), and vmalloc() to be freed with vfree(), and for strange reasons, we don't know how the data was allocated we have kvfree(). That's an mm decision not an rcu one. We should have kfree_rcu(), vfree_rcu() and kvfree_rcu(), and honestly, they should not depend on kvfree() doing the same thing for everything. Each should call the corresponding member that they represent. Which would change this patch set. Why? Too much coupling between RCU and MM. What if in the future something changes and kvfree() goes away or changes drastically. We would then have to go through all the users of RCU to change them too. To me kvfree() is a special case and should not be used by RCU as a generic function. That would make RCU and MM much more coupled than necessary.
And that is one reason I am viewing the name-change patch with great suspicion, especially given that there seems to be some controversy among the memory-management folks as to exactly what the names should be. Thanx, Paul -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>