static bool virtio_scsi_data_plane_handle_cmd(VirtIODevice *vdev,
VirtQueue *vq)
{
- bool progress;
+ bool progress = false;
VirtIOSCSI *s = VIRTIO_SCSI(vdev);
virtio_scsi_acquire(s);
- assert(s->ctx && s->dataplane_started);
- progress = virtio_scsi_handle_cmd_vq(s, vq);
+ if (!s->dataplane_fenced) {
+ assert(s->ctx && s->dataplane_started);
+ progress = virtio_scsi_handle_cmd_vq(s, vq);
+ }
virtio_scsi_release(s);
return progress;
}
static bool virtio_scsi_data_plane_handle_ctrl(VirtIODevice *vdev,
VirtQueue *vq)
{
- bool progress;
+ bool progress = false;
VirtIOSCSI *s = VIRTIO_SCSI(vdev);
virtio_scsi_acquire(s);
- assert(s->ctx && s->dataplane_started);
- progress = virtio_scsi_handle_ctrl_vq(s, vq);
+ if (!s->dataplane_fenced) {
+ assert(s->ctx && s->dataplane_started);
+ progress = virtio_scsi_handle_ctrl_vq(s, vq);
+ }
virtio_scsi_release(s);
return progress;
}
static bool virtio_scsi_data_plane_handle_event(VirtIODevice *vdev,
VirtQueue *vq)
{
- bool progress;
+ bool progress = false;
VirtIOSCSI *s = VIRTIO_SCSI(vdev);
virtio_scsi_acquire(s);
- assert(s->ctx && s->dataplane_started);
- progress = virtio_scsi_handle_event_vq(s, vq);
+ if (!s->dataplane_fenced) {
+ assert(s->ctx && s->dataplane_started);
+ progress = virtio_scsi_handle_event_vq(s, vq);
+ }
virtio_scsi_release(s);
return progress;
}