Commit b840abef authored by Hannes Reinecke's avatar Hannes Reinecke Committed by Martin K. Petersen
Browse files

scsi: xen-scsifront: Compability status handling

The Xen guest might run against arbitrary backends, so the driver might
receive a status with driver_byte set. Map these errors to DID_ERROR to be
consistent with recent changes.

Link: https://lore.kernel.org/r/20210427083046.31620-14-hare@suse.de


Signed-off-by: default avatarHannes Reinecke <hare@suse.de>
Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
parent 58bedf35
Loading
Loading
Loading
Loading
+7 −1
Original line number Diff line number Diff line
@@ -251,6 +251,7 @@ static void scsifront_cdb_cmd_done(struct vscsifrnt_info *info,
	struct scsi_cmnd *sc;
	uint32_t id;
	uint8_t sense_len;
	int result;

	id = ring_rsp->rqid;
	shadow = info->shadow[id];
@@ -261,7 +262,12 @@ static void scsifront_cdb_cmd_done(struct vscsifrnt_info *info,
	scsifront_gnttab_done(info, shadow);
	scsifront_put_rqid(info, id);

	sc->result = ring_rsp->rslt;
	result = ring_rsp->rslt;
	if (result >> 24)
		set_host_byte(sc, DID_ERROR);
	else
		set_host_byte(sc, host_byte(result));
	set_status_byte(sc, result & 0xff);
	scsi_set_resid(sc, ring_rsp->residual_len);

	sense_len = min_t(uint8_t, VSCSIIF_SENSE_BUFFERSIZE,