On 10/24/22 6:55 PM, Ming Lei wrote:
> @@ -1593,10 +1598,18 @@ static void blk_mq_timeout_work(struct work_struct 
> *work)
>       if (!percpu_ref_tryget(&q->q_usage_counter))
>               return;
>  
> -     blk_mq_queue_tag_busy_iter(q, blk_mq_check_expired, &next);
> +     /*
> +      * Before walking tags, we must ensure any submit started before
> +      * the current time has finished. Since the submit uses srcu or rcu,
> +      * wait for a synchronization point to ensure all running submits
> +      * have finished
> +      */
> +     blk_mq_wait_quiesce_done(q);

I'm a little worried about this bit - so we'll basically do a sync RCU
every time the timeout timer runs... Depending on machine load, that
can take a long time.

-- 
Jens Axboe
_______________________________________________
Virtualization mailing list
[email protected]
https://lists.linuxfoundation.org/mailman/listinfo/virtualization

Reply via email to