On Tue, Apr 18, 2017 at 11:27:13PM -0700, Christoph Hellwig wrote: > Hi Ming, > > I don't think your patch goes int the right direction. The mtip32xx > driver never submits the requests it allocates using blk_mq_alloc_request. > So to fix this it should simply kmalloc the request, set a tag aside > and not use a block layer request for it at all, similar to what nvme > does for the AER command. That is only about the internal command part(patch 1 and patch 2), and the patch 3 is required regardless. I choose to use blk_mq_get_driver_tag() for the 1st fix becasue it is the simpleset way, also given blk_mq_alloc_request() has been working on that for long time. If We do that via kmalloc, the command has to be initialzed as the way in .init_cmd(), the reserved tag space has to be accessed exclusively like what block layer provides, and mtip_cmd_from_tag() need to be fixed too. We still have to pass 'reserved_tags = 1' to blk-mq anyway. That is why I suggest to use blk_mq_get_driver_tag() to fix the issue. Thanks, Ming