On Thu, Feb 06 2014, Christoph Hellwig wrote:
> On Thu, Feb 06, 2014 at 06:33:17PM +0200, Shlomo Pongratz wrote:
> > The completion queue is implemented using lockless list.
> > 
> > The llist_add is adds the events to the list head which is a push operation.
> > The processing of the completion elements is done by disconnecting all the
> > pushed elements and iterating over the disconnected list. The problem is
> > that the processing is done in reverse order w.r.t order of the insertion
> > i.e. LIFO processing. By reversing the disconnected list which is done in
> > linear time the desired FIFO processing is achieved.
> 
> I think it should just switch to using __smp_call_function_single
> directly, mirroring commit 3d6efbf62c797a2924785f482e4ce8aa8820ec72 for
> the blk-mq core.
> 
> I've actually a patch in the queue that allows generic request
> completion offloading similar to blk_complete_request() in the old
> request code, but it'll need a bit more polishing first.

The patch is trivial enough that I may as well just apply it. It's not a
bug as such, but doing FIFO completions does make more sense. I was
aware of this issued, fwiw, it just didn't really matter for my testing
and I opted to avoid a list reversal to make it cheaper.

-- 
Jens Axboe

--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to