• Mike Christie's avatar
    vhost-scsi: Check for a cleared backend before queueing an event · ced9eb37
    Mike Christie authored
    
    
    We currenly hold the vhost_scsi_mutex while clearing the endpoint and
    while performing vhost_scsi_do_plug, so tpg->vhost_scsi can't be freed
    from uder us, and to make sure anything queued is handled by the
    full call in vhost_scsi_clear_endpoint.
    
    This patch removes the need for the vhost_scsi_mutex for the latter
    case. In the next patches, we won't hold the vhost_scsi_mutex while
    flushing so this patch adds a check for the clearing of the virtqueue
    from vhost_scsi_clear_endpoint. We then know that once
    vhost_scsi_clear_endpoint has cleared the backend that no new events
    will be queued, and the flush after the vhost_vq_set_backend(vq, NULL)
    call will see everything that's been queued to that point. So the flush
    will then handle all events without the need for the vhost_scsi_mutex.
    Signed-off-by: default avatarMike Christie <michael.christie@oracle.com>
    Message-Id: <20230321020624.13323-6-michael.christie@oracle.com>
    Signed-off-by: default avatarMichael S. Tsirkin <mst@redhat.com>
    ced9eb37
scsi.c 64.8 KB