All of lore.kernel.org
 help / color / mirror / Atom feed
From: Greg KH <gregkh@linuxfoundation.org>
To: Muchun Song <songmuchun@bytedance.com>
Cc: stable@vger.kernel.org, muchun.song@linux.dev,
	Ming Lei <ming.lei@redhat.com>, Jens Axboe <axboe@kernel.dk>
Subject: Re: [PATCH 5.15.y] block: fix missing dispatching request when queue is started or unquiesced
Date: Tue, 22 Apr 2025 14:20:18 +0200	[thread overview]
Message-ID: <2025042244-knoll-defensive-0f43@gregkh> (raw)
In-Reply-To: <20250317071821.22449-1-songmuchun@bytedance.com>

On Mon, Mar 17, 2025 at 03:18:21PM +0800, Muchun Song wrote:
> Supposing the following scenario with a virtio_blk driver.
> 
> CPU0                    CPU1                    CPU2
> 
> blk_mq_try_issue_directly()
>   __blk_mq_issue_directly()
>     q->mq_ops->queue_rq()
>       virtio_queue_rq()
>         blk_mq_stop_hw_queue()
>                                                 virtblk_done()
>                         blk_mq_try_issue_directly()
>                           if (blk_mq_hctx_stopped())
>   blk_mq_request_bypass_insert()                  blk_mq_run_hw_queue()
>   blk_mq_run_hw_queue()     blk_mq_run_hw_queue()
>                             blk_mq_insert_request()
>                             return
> 
> After CPU0 has marked the queue as stopped, CPU1 will see the queue is
> stopped. But before CPU1 puts the request on the dispatch list, CPU2
> receives the interrupt of completion of request, so it will run the
> hardware queue and marks the queue as non-stopped. Meanwhile, CPU1 also
> runs the same hardware queue. After both CPU1 and CPU2 complete
> blk_mq_run_hw_queue(), CPU1 just puts the request to the same hardware
> queue and returns. It misses dispatching a request. Fix it by running
> the hardware queue explicitly. And blk_mq_request_issue_directly()
> should handle a similar situation. Fix it as well.
> 
> Fixes: d964f04a8fde ("blk-mq: fix direct issue")
> Cc: stable@vger.kernel.org
> Cc: Muchun Song <muchun.song@linux.dev>
> Signed-off-by: Muchun Song <songmuchun@bytedance.com>
> Reviewed-by: Ming Lei <ming.lei@redhat.com>
> Link: https://lore.kernel.org/r/20241014092934.53630-2-songmuchun@bytedance.com
> Signed-off-by: Jens Axboe <axboe@kernel.dk>
> (cherry picked from commit 2003ee8a9aa14d766b06088156978d53c2e9be3d)

This was NOT a clean cherry-pick, always document what you had to do
differently from the original change please.

Please fix this up and resend a new version.

thanks,

greg k-h

      parent reply	other threads:[~2025-04-22 12:20 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-12-03 10:10 FAILED: patch "[PATCH] block: fix missing dispatching request when queue is started" failed to apply to 5.15-stable tree gregkh
2025-03-17  3:30 ` [PATCH 5.15.y] block: fix missing dispatching request when queue is started or unquiesced Muchun Song
2025-03-17  6:56   ` Greg KH
2025-03-17 16:39   ` Sasha Levin
2025-03-17  7:18 ` Muchun Song
2025-03-17 16:40   ` Sasha Levin
2025-04-22 12:20   ` Greg KH [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=2025042244-knoll-defensive-0f43@gregkh \
    --to=gregkh@linuxfoundation.org \
    --cc=axboe@kernel.dk \
    --cc=ming.lei@redhat.com \
    --cc=muchun.song@linux.dev \
    --cc=songmuchun@bytedance.com \
    --cc=stable@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.