On Tue, Apr 02, 2013 at 03:48:03PM -0400, Theodore Ts'o wrote: > On Thu, Mar 21, 2013 at 09:35:51AM -0700, Kent Overstreet wrote: > > + if (unlikely(req->ki_ctx != ctx)) { > > + kioctx_ring_unlock(ctx, tail); > > + > > + ctx = req->ki_ctx; > > + tail = kioctx_ring_lock(ctx); > > + } > > The only place where you're calling kioctx_ring_lock() is above, which > is part of an unlock/lock pair. > > There is also a kioctx_ring_unlock at the end of batch_complete_aio(): > > > + kioctx_ring_unlock(ctx, tail); > > + local_irq_restore(flags); > > + rcu_read_unlock(); > > But I'm not seeing a matching kioctx_ring_lock() before the while loop > in batch_complete_aio(), nor anywhere else in the file. And since > kioctx_ring_lock() is a static function.... > > Am I missing something?
We start out with ctx == NULL - we handle the initial kiocb the same way we handle a kiocb with a different kioctx as the last one. -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/