Messages in this thread | | | Date | Wed, 28 May 2008 13:58:15 +0200 | From | Jens Axboe <> | Subject | Re: 2.6.26-rc4: RIP __call_for_each_cic+0x20/0x50 |
| |
On Wed, May 28 2008, Fabio Checconi wrote: > > From: Jens Axboe <jens.axboe@oracle.com> > > Date: Wed, May 28, 2008 12:07:21PM +0200 > > > > On Tue, May 27 2008, Paul E. McKenney wrote: > > > o When calling cfq_slab_kill(), for example from cfq_exit(), > > > what ensures that all previous RCU callbacks have completed? > > > > > > I suspect that you need an rcu_barrier() at the beginning > > > of cfq_slab_kill(), but I could be missing something. > > > > So we have two callers of that, one is from the error path at init time > > and is obviously ok. The other does need rcu_barrier()! I'll add that. > > > > But isn't the ioc_gone completion (notified only when there are no more > cic allocated) assuring that cfq_slab_kill() is called only after all > the rcu callbacks are completed? This should avoid the need for the > rcu_barrier().
Good point, I was thinking we decremented the mod count on call_rcu(), but we don't actually do it before the rcu callback has completed. So that part is actually OK already.
-- Jens Axboe
| |