[PATCH 0/4] nvme-blkmq fixes

Keith Busch keith.busch at intel.com
Mon Dec 22 10:17:55 PST 2014


On Mon, 22 Dec 2014, Jens Axboe wrote:
> On 12/22/2014 09:38 AM, Keith Busch wrote:
>> Call Trace:
>>   [<ffffffff810e75ae>] ? pcpu_free_area+0x79/0xf8
>>   [<ffffffff8106579f>] ? __wake_up+0x35/0x46
>>   [<ffffffff811bb67d>] ? blk_set_queue_dying+0x33/0x69
>>   [<ffffffff811bce39>] ? blk_cleanup_queue+0x25/0xfd
>>   [<ffffffff812b2ca5>] ? __dm_destroy+0x22c/0x254
>
> I wonder if it cleaned up the requests lists upfront, otherwise I don't see 
> where that would crash. I'll look into that. This particular patch isn't 
> pushed out yet.

The above failure happens because dm called blk_alloc_queue(), but
never made it far enough to call blk_init_allocated_queue(). One way
to fix is call blk_init_rl() from blk_alloc_queue_node() instead of
blk_init_allocated_queue(). I'm not sure if that's the right way to fix
it or if blk_cleanup_queue() should somehow be aware if the request_list
was initialized in the first place.

Also I found out I set nvmeq->cq_vector in the wrong place, messing up
h/w completion queue interrupt setup (I was wondering why things got so
slow!), so I'll fix that along with the struct alignment.



More information about the Linux-nvme mailing list