OSDN Git Service

vhost-scsi: reduce flushes during endpoint clearing
authorMike Christie <michael.christie@oracle.com>
Tue, 25 May 2021 17:47:31 +0000 (12:47 -0500)
committerMichael S. Tsirkin <mst@redhat.com>
Sat, 3 Jul 2021 08:50:54 +0000 (04:50 -0400)
vhost_scsi_flush will flush everything, so we can clear the backends then
flush, then destroy. We don't need to flush before each vq destruction
because after the flush we will have made sure there can be no new cmds
started and there are no running cmds.

Signed-off-by: Mike Christie <michael.christie@oracle.com>
Link: https://lore.kernel.org/r/20210525174733.6212-4-michael.christie@oracle.com
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
drivers/vhost/scsi.c

index b3e6fe9..46f897e 100644 (file)
@@ -1732,11 +1732,12 @@ vhost_scsi_clear_endpoint(struct vhost_scsi *vs,
                        mutex_lock(&vq->mutex);
                        vhost_vq_set_backend(vq, NULL);
                        mutex_unlock(&vq->mutex);
-                       /*
-                        * Make sure cmds are not running before tearing them
-                        * down.
-                        */
-                       vhost_scsi_flush(vs);
+               }
+               /* Make sure cmds are not running before tearing them down. */
+               vhost_scsi_flush(vs);
+
+               for (i = 0; i < VHOST_SCSI_MAX_VQ; i++) {
+                       vq = &vs->vqs[i].vq;
                        vhost_scsi_destroy_vq_cmds(vq);
                }
        }