[PATCH BUG FIX 2/2] nvme-multipath: clear BIO_QOS flags on requeue

Chaitanya Kulkarni chaitanyak at nvidia.com
Sun Nov 23 22:45:58 PST 2025


>> Fix this by clearing both BIO_QOS_THROTTLED and BIO_QOS_MERGED flags
>> when bios are redirected to the multipath head in nvme_failover_req().
>> This is consistent with the existing code that clears REQ_POLLED and
>> REQ_NOWAIT flags when the bio changes queues.
>>
>> Signed-off-by: Chaitanya Kulkarni <ckulkarnilinux at gmail.com>
>> ---
>>   drivers/nvme/host/multipath.c | 10 ++++++++++
>>   1 file changed, 10 insertions(+)
>>
>> diff --git a/drivers/nvme/host/multipath.c b/drivers/nvme/host/multipath.c
>> index 3da980dc60d9..2535dba8ce1e 100644
>> --- a/drivers/nvme/host/multipath.c
>> +++ b/drivers/nvme/host/multipath.c
>> @@ -168,6 +168,16 @@ void nvme_failover_req(struct request *req)
>>   		 * the flag to avoid spurious EAGAIN I/O failures.
>>   		 */
>>   		bio->bi_opf &= ~REQ_NOWAIT;
>> +		/*
>> +		 * BIO_QOS_THROTTLED and BIO_QOS_MERGED were set when the bio
>> +		 * went through the path's request queue rq_qos infrastructure.
>> +		 * The bio is now being redirected to the multipath head's
>> +		 * queue which may not have rq_qos enabled, so these flags are
>> +		 * no longer valid and must be cleared to prevent
>> +		 * rq_qos_done_bio() from dereferencing a NULL q->rq_qos.
>> +		 */
>> +		bio_clear_flag(bio, BIO_QOS_THROTTLED);
>> +		bio_clear_flag(bio, BIO_QOS_MERGED);
> This really should go into blk_steal_bios instead.  As should be the
> existing nowait/polled fixups..
>
>
even better, should I send a prep patch to move existing nowait/polled
and second patch for QOS THROTTLED and MERGED that fixes the bug ?

or just single patch is fine ?

-ck




More information about the Linux-nvme mailing list