Re: [patch]blk-mq: blk_mq_tag_to_rq should handle flush request

Jens Axboe
2014-06-04T15:28:09Z

On 2014-06-04 09:22, Christoph Hellwig wrote:
> On Wed, Jun 04, 2014 at 09:08:12AM -0600, Jens Axboe wrote:
>> On 2014-06-04 09:05, Christoph Hellwig wrote:
>>> On Wed, Jun 04, 2014 at 09:02:19AM -0600, Jens Axboe wrote:
>>>> OK strange, there hasn't been that much churn since the last rebase.
>>>> In my for-linus, there's a patch for a single queue crash, but that
>>>> should just hit for the removal case. And then there's the atomic
>>>> schedule patch, but that issue was actually in the code base for
>>>> about a month, so not a new one either.
>>>
>>> You're request initializaion optimization doesn't set up req->cmd and
>>> thus causes all BLOCK_PC I/O (including the SCSI LUN scan) to crash and
>>> burn. The trivial fix is on your way.
>>
>> OK. That'll arguably be a good cleanup as well, getting that
>> initialized in the right place. I hate the 'lets clear all the
>> memory' part of rq init, it's not super cheap to do.
>
> What would the right place be? We don't really know if a request is
> going to be used for BLOCK_PC purposes until it has been returned to
> the caller.

Probably split the init, so instead of directly assigning the type as
BLOCK_PC (or similar), then have an init function for that that clears
the parts.

> I also found another issue when just initializing req->cmd instead
> of blindly reverting the patch due to the lack of req->biotail
> initialization. For now I'll got back to a revert of that patch
> for my scsi-mq tree, and I'd prefer to keep that for mainline as well
> until this has been throughoutly tested.

That's fine. I'll get this cleaned up, or consider a revert in the block
tree as well.

--
Jens Axboe