On Tue, Nov 12, 2024 at 08:58:21PM +0800, Ming Lei wrote:
> Commit 4ce6e2db00de ("virtio-blk: Ensure no requests in virtqueues before
> deleting vqs.") replaces queue quiesce with queue freeze in virtio-blk's
> PM callbacks. And the motivation is to drain inflight IOs before suspending.
>
> block layer's queue freeze looks very handy, but it is also easy to cause
> deadlock, such as, any attempt to call into bio_queue_enter() may run into
> deadlock if the queue is frozen in current context. There are all kinds
> of ->suspend() called in suspend context, so keeping queue frozen in the
> whole suspend context isn't one good idea. And Marek reported lockdep
> warning[1] caused by virtio-blk's freeze queue in virtblk_freeze().
>
> [1]
> https://lore.kernel.org/linux-block/[email protected]/
>
> Given the motivation is to drain in-flight IOs, it can be done by calling
> freeze & unfreeze, meantime restore to previous behavior by keeping queue
> quiesced during suspend.
>
> Cc: Yi Sun <[email protected]>
> Cc: Michael S. Tsirkin <[email protected]>
> Cc: Jason Wang <[email protected]>
> Cc: Stefan Hajnoczi <[email protected]>
> Cc: [email protected]
> Reported-by: Marek Szyprowski <[email protected]>
> Signed-off-by: Ming Lei <[email protected]>
> ---
> drivers/block/virtio_blk.c | 7 +++++--
> 1 file changed, 5 insertions(+), 2 deletions(-)Acked-by: Stefan Hajnoczi <[email protected]>
signature.asc
Description: PGP signature
