On 12/7/20 3:30 AM, Aravind Ramesh wrote: > From: Aravind Ramesh <Aravind.Ramesh@xxxxxxx> > > When flow control is specified between 2 or more threads executing a workload > with zonemode=zbd and flow_sleep is not specified by the user (default to zero), > then a job A can lock a zone Z with the flow ratio exceeded, resulting in the > job to not issue the IO until other jobs IOs balance the flow ratio. > Since job A will wait with the Zone Z locked, other jobs will deadlock waiting > for this zone lock if their workload resulted in this zone Z being chosen > as an IO target. > > Executing io_u_quiesce() when the flow ratio is exceeded solves this potential > deadlock as job A will wait for the flow ratio to balance without holding the > zone A lock. To preserve the behavior for regular block devices and to avoid > extra overhead, io_u_quiesce() only needs to be executed when the workload > specifies zonedmode=zbd. Applied, thanks. -- Jens Axboe