Message ID | 1376619569.5171.217.camel@haakon3.risingtidesystems.com |
---|---|
State | Not Applicable |
Delegated to: | David Miller |
Headers | show |
On Thu, Aug 15, 2013 at 07:19:29PM -0700, Nicholas A. Bellinger wrote: > I'm playing with a patch to do this, but am currently getting hung-up on > what appear to be some separate blk-mq reserved_tags > 0 bugs, the first > of which is passing queue_depth=1 + reserved_tags=1 is broken, and > results in tags->nr_free = 0. That is not a bug - please look at Jens replies in this thread some week ago. In short, queue_depth=1 means 1 tags in total and reserved_tags=1 results in zero normal tags. You need to request the depth=2 and reserved_tags=1. But yes, this is a separate topic and I am looking forward to hear from Jens wrt flushes.
On Fri, 2013-08-16 at 18:41 +0200, Alexander Gordeev wrote: > On Thu, Aug 15, 2013 at 07:19:29PM -0700, Nicholas A. Bellinger wrote: > > I'm playing with a patch to do this, but am currently getting hung-up on > > what appear to be some separate blk-mq reserved_tags > 0 bugs, the first > > of which is passing queue_depth=1 + reserved_tags=1 is broken, and > > results in tags->nr_free = 0. > > That is not a bug - please look at Jens replies in this thread some week ago. > In short, queue_depth=1 means 1 tags in total and reserved_tags=1 results > in zero normal tags. You need to request the depth=2 and reserved_tags=1. > Ahhh, yes of course. I'll re-work a proposed patch this afternoon with this in mind.. > But yes, this is a separate topic and I am looking forward to hear from Jens > wrt flushes. > Indeed. ;) --nab -- To unsubscribe from this list: send the line "unsubscribe linux-ide" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Thu, Aug 15, 2013 at 07:19:29PM -0700, Nicholas A. Bellinger wrote: > Anyways, before digging further into reserved tags logic, Jens, what are > your thoughts for addressing this special queue_depth=1 case for libata > + the like..? Hi Jens, Have some comments?
diff --git a/block/blk-mq-tag.c b/block/blk-mq-tag.c index 6718007..ffdf686 100644 --- a/block/blk-mq-tag.c +++ b/block/blk-mq-tag.c @@ -470,7 +470,7 @@ 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--;