Messages in this thread | | | Subject | Re: deferring __fput() | From | Peter Zijlstra <> | Date | Mon, 25 Jun 2012 14:03:25 +0200 |
| |
On Sat, 2012-06-23 at 21:57 +0100, Al Viro wrote: > 3) at that point task_work is equal in size (and layout, BTW) to rcu_head. So we can add it > into the same union in struct file where we already have list_head and rcu_head. No space > eaten up. fput() would, once the counter reaches 0, remove the file from list (the only > place walking that list skips the ones with zero refcount anyway) and, if we are in a normal > process, use task_work_add() to have __fput() done to it. If we are in kernel thread or > atomic context, just move the sucker to global list and use schedule_work() to have said > list emptied and everything in it fed to __fput().
So we're now Ok with doing fput() async?
Last time I remember this coming up people thought this wasn't such a hot idea.
https://lkml.org/lkml/2010/1/5/208
| |