On 9/10/25 1:34 PM, Yu Kuai wrote: > From: Yu Kuai <yukuai3@xxxxxxxxxx> > > request_queue->nr_requests can be changed by: > > a) switch elevator by updating nr_hw_queues > b) switch elevator by elevator sysfs attribute > c) configue queue sysfs attribute nr_requests > > Current lock order is: > > 1) update_nr_hwq_lock, case a,b > 2) freeze_queue > 3) elevator_lock, case a,b,c > > And update nr_requests is seriablized by elevator_lock() already, > however, in the case c, we'll have to allocate new sched_tags if > nr_requests grow, and do this with elevator_lock held and queue > freezed has the risk of deadlock. > > Hence use update_nr_hwq_lock instead, make it possible to allocate > memory if tags grow, meanwhile also prevent nr_requests to be changed > concurrently. > > Signed-off-by: Yu Kuai <yukuai3@xxxxxxxxxx> Looks good to me: Reviewed-by: Nilay Shroff <nilay@xxxxxxxxxxxxx>