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/ca16370e-d646-4eee-b9cc-87277c89c43c@xxxxxxxxxxx/ > > 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 <yi.sun@xxxxxxxxxx> > Cc: Michael S. Tsirkin <mst@xxxxxxxxxx> > Cc: Jason Wang <jasowang@xxxxxxxxxx> > Cc: Stefan Hajnoczi <stefanha@xxxxxxxxxx> > Cc: virtualization@xxxxxxxxxxxxxxx > Reported-by: Marek Szyprowski <m.szyprowski@xxxxxxxxxxx> > Signed-off-by: Ming Lei <ming.lei@xxxxxxxxxx> > --- > drivers/block/virtio_blk.c | 7 +++++-- > 1 file changed, 5 insertions(+), 2 deletions(-) Acked-by: Stefan Hajnoczi <stefanha@xxxxxxxxxx>
Attachment:
signature.asc
Description: PGP signature