diff mbox

blk-mq: return when BLK_MQ_S_STOPPED in blk_mq_run_work_fn

Message ID 1528103035-8009-1-git-send-email-jianchao.w.wang@oracle.com (mailing list archive)
State New, archived
Headers show

Commit Message

jianchao.wang June 4, 2018, 9:03 a.m. UTC
if hctx is stopped, don't run the queue in blk_mq_run_work_fn.

Fixes: 15fe8a9 (blk-mq: remove blk_mq_delay_queue())
Cc: Ming Lei <ming.lei@redhat.com>
Signed-off-by: Jianchao Wang <jianchao.w.wang@oracle.com>
---
 block/blk-mq.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Ming Lei June 4, 2018, 10:43 a.m. UTC | #1
On Mon, Jun 04, 2018 at 05:03:55PM +0800, Jianchao Wang wrote:
> if hctx is stopped, don't run the queue in blk_mq_run_work_fn.
> 
> Fixes: 15fe8a9 (blk-mq: remove blk_mq_delay_queue())
> Cc: Ming Lei <ming.lei@redhat.com>
> Signed-off-by: Jianchao Wang <jianchao.w.wang@oracle.com>
> ---
>  block/blk-mq.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/block/blk-mq.c b/block/blk-mq.c
> index 9ce9cac..d0ee928 100644
> --- a/block/blk-mq.c
> +++ b/block/blk-mq.c
> @@ -1578,7 +1578,7 @@ static void blk_mq_run_work_fn(struct work_struct *work)
>  	 * If we are stopped, don't run the queue.
>  	 */
>  	if (test_bit(BLK_MQ_S_STOPPED, &hctx->state))
> -		clear_bit(BLK_MQ_S_STOPPED, &hctx->state);
> +		return;
>  
>  	__blk_mq_run_hw_queue(hctx);
>  }
> -- 
> 2.7.4
> 

Reviewed-by: Ming Lei <ming.lei@redhat.com>

Thanks,
Ming
Bart Van Assche June 4, 2018, 11:36 a.m. UTC | #2
On Mon, 2018-06-04 at 17:03 +0800, Jianchao Wang wrote:
> if hctx is stopped, don't run the queue in blk_mq_run_work_fn.


Reviewed-by: Bart Van Assche <bart.vanassche@wdc.com>
Jens Axboe June 4, 2018, 4:21 p.m. UTC | #3
On 6/4/18 3:03 AM, Jianchao Wang wrote:
> if hctx is stopped, don't run the queue in blk_mq_run_work_fn.

I was puzzled, so had to look up those changes. That's definitely
a regression caused by 15fe8a9, as you highlighted. Looks good to
me, I'll apply it.

BTW, this should have been explained in the commit message. I'll
change it a bit.
diff mbox

Patch

diff --git a/block/blk-mq.c b/block/blk-mq.c
index 9ce9cac..d0ee928 100644
--- a/block/blk-mq.c
+++ b/block/blk-mq.c
@@ -1578,7 +1578,7 @@  static void blk_mq_run_work_fn(struct work_struct *work)
 	 * If we are stopped, don't run the queue.
 	 */
 	if (test_bit(BLK_MQ_S_STOPPED, &hctx->state))
-		clear_bit(BLK_MQ_S_STOPPED, &hctx->state);
+		return;
 
 	__blk_mq_run_hw_queue(hctx);
 }