Messages in this thread | | | Date | Sun, 26 Feb 2012 22:11:46 -0500 | From | Vivek Goyal <> | Subject | Re: [PATCHSET] mempool, percpu, blkcg: fix percpu stat allocation and remove stats_lock |
| |
On Sun, Feb 26, 2012 at 06:44:21AM +0900, Tejun Heo wrote: > Hello, Vivek. > > On Fri, Feb 24, 2012 at 09:20:33AM -0500, Vivek Goyal wrote: > > Ok. I will write a patch. Things have changed a lot since last time. > > I think there is only one tricky part and that is waiting for any > > scheduled work to finish during blkg destruction. Because group destruction > > happens under both queue and blkcg spin locks, I think I will have to take > > the group off list, drop locks, wait for worker thread to finish and then > > take locks again and walk through list again to kill remaining groups. > > Rather than embedding work_struct into blkg and tying work and blkg > destruction, why not just create a spinlock protected alloc-pending > list? On blkg creation, link blkg onto that list and kick shared work > item and on destruction, just unlink it. Worker function can walk the > list and try to alloc for all and reschedule if alloc fails.
Ok. This sounds better than embeding work_struct in blkg, I can embed it in request_queue and make the worker walk the list of blkg pending alloc of stats. Will try that. Thanks for the idea.
Thanks Vivek
| |