diff --git a/sys/bus/cam/cam_xpt.c b/sys/bus/cam/cam_xpt.c index b71a5c5342..50266866aa 100644 --- a/sys/bus/cam/cam_xpt.c +++ b/sys/bus/cam/cam_xpt.c @@ -6425,7 +6425,7 @@ probedone(struct cam_periph *periph, union ccb *done_ccb) */ if (softc->action == PROBE_TUR_FOR_NEGOTIATION && done_ccb->ccb_h.target_lun == 0 - && (path->device->inq_data.flags & SID_Sync) != 0 + /*&& (path->device->inq_data.flags & SID_Sync) != 0*/ && (path->device->flags & CAM_DEV_IN_DV) == 0) { CAM_DEBUG(periph->path, CAM_DEBUG_INFO, ("Begin Domain Validation\n")); diff --git a/sys/dev/virtual/virtio/scsi/virtio_scsi.c b/sys/dev/virtual/virtio/scsi/virtio_scsi.c index 02dca8ac4b..f2ec0133c0 100644 --- a/sys/dev/virtual/virtio/scsi/virtio_scsi.c +++ b/sys/dev/virtual/virtio/scsi/virtio_scsi.c @@ -1340,7 +1340,12 @@ vtscsi_scsi_cmd_cam_status(struct virtio_scsi_cmd_resp *cmd_resp) status = CAM_REQ_ABORTED; break; case VIRTIO_SCSI_S_BAD_TARGET: - status = CAM_SEL_TIMEOUT; + /* + * A CAM_SEL_TIMEOUT here will cause the entire device to + * be lost, which is not desirable when scanning LUNs. + * Use CAM_DEV_NOT_THERE instead. + */ + status = CAM_DEV_NOT_THERE; break; case VIRTIO_SCSI_S_RESET: status = CAM_SCSI_BUS_RESET; diff --git a/sys/dev/virtual/virtio/virtio/virtio.c b/sys/dev/virtual/virtio/virtio/virtio.c index 0428adc948..85bb17c8a7 100644 --- a/sys/dev/virtual/virtio/virtio/virtio.c +++ b/sys/dev/virtual/virtio/virtio/virtio.c @@ -304,5 +304,5 @@ static moduledata_t virtio_mod = { 0 }; -DECLARE_MODULE(virtio, virtio_mod, SI_SUB_DRIVERS, SI_ORDER_FIRST); +DECLARE_MODULE(virtio, virtio_mod, SI_SUB_DRIVERS, SI_ORDER_ANY); MODULE_VERSION(virtio, 1);