projects
/
linux.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
58bedf3
)
scsi: xen-scsifront: Compability status handling
author
Hannes Reinecke
<hare@suse.de>
Tue, 27 Apr 2021 08:30:19 +0000
(10:30 +0200)
committer
Martin K. Petersen
<martin.petersen@oracle.com>
Tue, 1 Jun 2021 02:48:22 +0000
(22:48 -0400)
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>
drivers/scsi/xen-scsifront.c
patch
|
blob
|
history
diff --git
a/drivers/scsi/xen-scsifront.c
b/drivers/scsi/xen-scsifront.c
index 259fc248d06cffa7278592d79cff2b6207987bda..ec9d399fbbd86b7cbca85d817ad1694426b84efa 100644
(file)
--- a/
drivers/scsi/xen-scsifront.c
+++ b/
drivers/scsi/xen-scsifront.c
@@
-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,