Am 24.01.24 um 18:38 schrieb Hanna Czenczek: > As of commit 38738f7dbbda90fbc161757b7f4be35b52205552 ("virtio-scsi: > don't waste CPU polling the event virtqueue"), we only attach an io_read > notifier for the virtio-scsi event virtqueue instead, and no polling > notifiers. During operation, the event virtqueue is typically > non-empty, but none of the buffers are intended to be used immediately. > Instead, they only get used when certain events occur. Therefore, it > makes no sense to continuously poll it when non-empty, because it is > supposed to be and stay non-empty. > > We do this by using virtio_queue_aio_attach_host_notifier_no_poll() > instead of virtio_queue_aio_attach_host_notifier() for the event > virtqueue. > > Commit 766aa2de0f29b657148e04599320d771c36fd126 ("virtio-scsi: implement > BlockDevOps->drained_begin()") however has virtio_scsi_drained_end() use > virtio_queue_aio_attach_host_notifier() for all virtqueues, including > the event virtqueue. This can lead to it being polled again, undoing > the benefit of commit 38738f7dbbda90fbc161757b7f4be35b52205552. > > Fix it by using virtio_queue_aio_attach_host_notifier_no_poll() for the > event virtqueue. > > Reported-by: Fiona Ebner <f.eb...@proxmox.com> > Fixes: 766aa2de0f29b657148e04599320d771c36fd126 > ("virtio-scsi: implement BlockDevOps->drained_begin()") > Signed-off-by: Hanna Czenczek <hre...@redhat.com>
Tested-by: Fiona Ebner <f.eb...@proxmox.com> Reviewed-by: Fiona Ebner <f.eb...@proxmox.com>