Re: [PATCH 2/3] block, scsi: Rework runtime power management
From: Ming Lei <hidden>
Date: 2018-07-19 23:26:51
From: Ming Lei <hidden>
Date: 2018-07-19 23:26:51
On Thu, Jul 19, 2018 at 03:54:53PM +0000, Bart Van Assche wrote:
On Thu, 2018-07-19 at 06:45 +0800, Ming Lei wrote:quoted
So once blk_freeze_queue_start() returns, percpu_ref_is_zero() won't return true only until the rcu confirmation is done. That means this approach may not put device down.Hello Ming, I agree with your conclusion that it is not guaranteed that q->q_usage_counter is in atomic mode when percpu_ref_is_zero() is called. However, I think that's fine: if blk_pre_runtime_suspend() returns -EBUSY then the runtime core will try again at a later time to perform runtime suspend.
This behaviour should be persistent in next retry since percpu_ref_is_zero() should always return false after blk_freeze_queue_start() is run on one un-frozen queue. Thanks, Ming