? 2021/4/16 ??1:27, Mike Christie ??:> The vhost work flush function was flushing the entire work queue, so
> there is no need for the double vhost_work_dev_flush calls in
> vhost_scsi_flush.
>
> And we do not need to call vhost_poll_flush for each poller because
> that call also ends up flushing the same work queue thread the
> vhost_work_dev_flush call flushed.
>
> Signed-off-by: Mike Christie <michael.christie at oracle.com>
> Reviewed-by: Stefan Hajnoczi <stefanha at redhat.com>
> ---
Acked-by: Jason Wang <jasowang at redhat.com>
> drivers/vhost/scsi.c | 8 --------
> 1 file changed, 8 deletions(-)
>
> diff --git a/drivers/vhost/scsi.c b/drivers/vhost/scsi.c
> index 0fd596da1834..b3e6fe9b1767 100644
> --- a/drivers/vhost/scsi.c
> +++ b/drivers/vhost/scsi.c
> @@ -1430,11 +1430,6 @@ static void vhost_scsi_handle_kick(struct vhost_work
*work)
> vhost_scsi_handle_vq(vs, vq);
> }
>
> -static void vhost_scsi_flush_vq(struct vhost_scsi *vs, int index)
> -{
> - vhost_poll_flush(&vs->vqs[index].vq.poll);
> -}
> -
> /* Callers must hold dev mutex */
> static void vhost_scsi_flush(struct vhost_scsi *vs)
> {
> @@ -1453,9 +1448,6 @@ static void vhost_scsi_flush(struct vhost_scsi *vs)
> kref_put(&old_inflight[i]->kref, vhost_scsi_done_inflight);
>
> /* Flush both the vhost poll and vhost work */
> - for (i = 0; i < VHOST_SCSI_MAX_VQ; i++)
> - vhost_scsi_flush_vq(vs, i);
> - vhost_work_dev_flush(&vs->dev);
> vhost_work_dev_flush(&vs->dev);
>
> /* Wait for all reqs issued before the flush to be finished */