[patch] NVMe: return an error code if blk_mq_alloc_tag_set() fails

Keith Busch keith.busch at intel.com
Thu Jan 22 08:48:01 PST 2015


On Wed, 21 Jan 2015, Jens Axboe wrote:
> On 01/19/2015 07:43 AM, Dan Carpenter wrote:
>> In the current code, if blk_mq_alloc_tag_set() fails then it returns
>> zero (success) instead of preserving the error code.  The caller is not
>> expecting that and the kernel could be left in an inconsistent state.
>> 
>> Signed-off-by: Dan Carpenter <dan.carpenter at oracle.com>
>
> Looks good to me, Keith, could you ack/review it? Leaving it below...

Should we bail on the device if tagset allocation fails? If so, the patch
is good, but I thought it was a concious descision to not return error
here so the controller can be managed. Capabilities would be limited
and a failure here probably means there's a bigger problem, so I'm okay
either way.

>> diff --git a/drivers/block/nvme-core.c b/drivers/block/nvme-core.c
>> index cb529e9..2ff5efc 100644
>> --- a/drivers/block/nvme-core.c
>> +++ b/drivers/block/nvme-core.c
>> @@ -2152,7 +2152,8 @@ static int nvme_dev_add(struct nvme_dev *dev)
>>   	dev->tagset.flags = BLK_MQ_F_SHOULD_MERGE;
>>   	dev->tagset.driver_data = dev;
>> 
>> -	if (blk_mq_alloc_tag_set(&dev->tagset))
>> +	res = blk_mq_alloc_tag_set(&dev->tagset);
>> +	if (res)
>>   		goto out;
>>
>>   	id_ns = mem;



More information about the Linux-nvme mailing list