mirror of https://gitee.com/openkylin/linux.git
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: Hannes Reinecke <hare@suse.de> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
This commit is contained in:
parent
58bedf351f
commit
b840abeffc
|
@ -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,
|
||||
|
|
Loading…
Reference in New Issue