File tree Expand file tree Collapse file tree 1 file changed +10
-1
lines changed Expand file tree Collapse file tree 1 file changed +10
-1
lines changed Original file line number Diff line number Diff line change @@ -534,7 +534,9 @@ static int virtscsi_queuecommand(struct virtio_scsi *vscsi,
534
534
{
535
535
struct Scsi_Host * shost = virtio_scsi_host (vscsi -> vdev );
536
536
struct virtio_scsi_cmd * cmd = scsi_cmd_priv (sc );
537
+ unsigned long flags ;
537
538
int req_size ;
539
+ int ret ;
538
540
539
541
BUG_ON (scsi_sg_count (sc ) > shost -> sg_tablesize );
540
542
@@ -562,8 +564,15 @@ static int virtscsi_queuecommand(struct virtio_scsi *vscsi,
562
564
req_size = sizeof (cmd -> req .cmd );
563
565
}
564
566
565
- if (virtscsi_kick_cmd (req_vq , cmd , req_size , sizeof (cmd -> resp .cmd )) != 0 )
567
+ ret = virtscsi_kick_cmd (req_vq , cmd , req_size , sizeof (cmd -> resp .cmd ));
568
+ if (ret == - EIO ) {
569
+ cmd -> resp .cmd .response = VIRTIO_SCSI_S_BAD_TARGET ;
570
+ spin_lock_irqsave (& req_vq -> vq_lock , flags );
571
+ virtscsi_complete_cmd (vscsi , cmd );
572
+ spin_unlock_irqrestore (& req_vq -> vq_lock , flags );
573
+ } else if (ret != 0 ) {
566
574
return SCSI_MLQUEUE_HOST_BUSY ;
575
+ }
567
576
return 0 ;
568
577
}
569
578
You can’t perform that action at this time.
0 commit comments