Hi Michael,

Thanks for the review.  I will post a v3 with the following.

On Sun, Aug 02, 2026 at 04:59:08PM -0400, Michael S. Tsirkin wrote:
> what happens with requests already outstanding in the queues?
> e.g. does this leak memory?

virtio_driver.shutdown runs on system shutdown via virtio_dev_shutdown.
It calls blk_mq_freeze_queue() first: every in-flight request holds a
q_usage_counter reference until virtblk_done frees it, so freeze
returns only after those completions have reclaimed the request PDU
and any chained sg.  Only then does it virtio_break_device() and
blk_mark_disk_dead().  Break must come after freeze; after break,
vring callbacks no longer run.

> So this is blk specifically, I am somewhat lost as to why
> is blk treated differently from other drivers here.

virtio-blk owns the gendisk and request_queue itself, so block
teardown and queue lifetime sit in virtio-blk, not in virtio-pci
common code.

In v3, AER perm_failure stays common for every virtio device:
virtio_break_device() and DISCONNECT only.  Patch 2 keeps the
blk-side pieces in virtio-blk: system-shutdown .shutdown does freeze,
break, and mark_disk_dead, plus the queue_rq guard after frozen
del_vqs.  Neither is wired from AER.

Thanks,
Xixin


Reply via email to