On Fri, Aug 09, 2013 at 08:24:38AM -0600, Jens Axboe wrote: > On 08/09/2013 02:23 AM, Alexander Gordeev wrote: > > + ap->qc_tags = blk_mq_init_tags(ATA_MAX_QUEUE, 1, NUMA_NO_NODE); > > + if (!ap->qc_tags) { > > + kfree(ap); > > + return NULL; > > + } > > This should be blk_mq_init_tags(ATA_MAX_QUEUE - 1, 1, ...) since the > total depth is normal_tags + reserved_tags. Aha.. If blk_mq_init_tags() should be like this then? diff --git a/block/blk-mq-tag.c b/block/blk-mq-tag.c index dcbc2a4..b131a48 100644 --- a/block/blk-mq-tag.c +++ b/block/blk-mq-tag.c @@ -468,10 +468,9 @@ struct blk_mq_tags *blk_mq_init_tags(unsigned int nr_tags, * Rest of the tags start at the queue list */ tags->nr_free = 0; - while (nr_tags - tags->nr_reserved) { + while (nr_tags--) { tags->freelist[tags->nr_free] = tags->nr_free + tags->nr_reserved; - nr_tags--; tags->nr_free++; } > -- > Jens Axboe -- Regards, Alexander Gordeev agordeev@xxxxxxxxxx -- To unsubscribe from this list: send the line "unsubscribe linux-ide" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html