vhost-scsi: drop flush after vhost_dev_cleanup
authorMike Christie <michael.christie@oracle.com>
Tue, 17 May 2022 18:08:48 +0000 (13:08 -0500)
committerMichael S. Tsirkin <mst@redhat.com>
Tue, 31 May 2022 16:45:10 +0000 (12:45 -0400)
The flush after vhost_dev_cleanup is not needed because:

1. It doesn't do anything. vhost_dev_cleanup will stop the worker thread
so the flush call will just return since the worker has not device.

2. It's not needed for the re-queue case. vhost_scsi_evt_handle_kick grabs
the mutex and if the backend is NULL will return without queueing a work.
vhost_scsi_clear_endpoint will set the backend to NULL under the vq->mutex
then drops the mutex and does a flush. So we know when
vhost_scsi_clear_endpoint has dropped the mutex after clearing the backend
no evt related work will be able to requeue. The flush would then make sure
any queued evts are run and return.

Signed-off-by: Mike Christie <michael.christie@oracle.com>
Acked-by: Jason Wang <jasowang@redhat.com>
Message-Id: <20220517180850.198915-7-michael.christie@oracle.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
drivers/vhost/scsi.c

index 532e204..94535c8 100644 (file)
@@ -1827,8 +1827,6 @@ static int vhost_scsi_release(struct inode *inode, struct file *f)
        vhost_scsi_clear_endpoint(vs, &t);
        vhost_dev_stop(&vs->dev);
        vhost_dev_cleanup(&vs->dev);
-       /* Jobs can re-queue themselves in evt kick handler. Do extra flush. */
-       vhost_scsi_flush(vs);
        kfree(vs->dev.vqs);
        kvfree(vs);
        return 0;