On 12/30/2013 08:38 PM, Shaohua Li wrote: > > Reserving a tag (request) for flush to avoid dead lock is a overkill. tag is > valuable resource. We can track flush request number and disallow too many > pending flush requests allocated. With this patch, > blk_mq_alloc_request_pinned() could do a busy nop (but not a dead loop) if too > pending requests are allocated and new flush request is allocating. But this > should not be a problem, too many pending flush requests are very rare case. > > I verified this can fix the deadlock caused by too many pending flush > requests.
I think this looks pretty good, and it's a lot better than the hack that is currently in place. The atomic inc/dec should be a noop on a per-hctx basis, especially when it's only per-flush... I'll get this queued up, with the ida fix too. -- Jens Axboe -- 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/